Hi all,
I just updated my Squeak trunk image. After saving, I cannot reload it: --------------------------- Squeak! --------------------------- Aborting!!!! Color depth 0 not supported --------------------------- OK --------------------------- Then it prints the stack trace and exits. I restored a backup from yesterday and reloaded my own changes. An image saved from that is still functional. After updating Squeak again, I see the same error as above, so it is reproducible. But I cannot invoke the error with a fresh image... so it must be something with my image after all. Any ideas or suggestions? Does anyone else experience issues after an update? Kind regards, Jakob |
This is from the image before the update, the VM is the same (should
be the 5.3 release VM if I remember correctly): Image ----- C:\Users\Jakob\HiDrive\Squot-trunk-64bit.2.image Squeak6.0alpha latest update: #19634 Current Change Set: Git unit of work Image format 68021 (64 bit) Virtual Machine --------------- C:\Squeak\VMs\Squeak64\Squeak64.exe Open Smalltalk Cog[Spur] VM [CoInterpreterPrimitives VMMaker.oscog-nice.2715] Win32 built on Mar 3 2020 08:36:19 GMT Compiler: 4.2.1 Compatible Clang 8.0.1 (tags/RELEASE_801/final) platform sources revision VM: 202003021730 https://github.com/OpenSmalltalk/opensmalltalk-vm.git Date: Mon Mar 2 18:30:55 2020 CommitHash: 6a0bc96 Plugins: 202003021730 https://github.com/OpenSmalltalk/opensmalltalk-vm.git CoInterpreter VMMaker.oscog-nice.2715 uuid: 78e2f556-9829-42fe-963d-e19dfc43c0e9 Mar 3 2020 StackToRegisterMappingCogit VMMaker.oscog-eem.2719 uuid: e40f3e94-3a54-411b-9613-5d19114ea131 Mar 3 2020 Am Fr., 22. Mai 2020 um 18:33 Uhr schrieb Jakob Reschke <[hidden email]>: > > Hi all, > > I just updated my Squeak trunk image. After saving, I cannot reload it: > > --------------------------- > Squeak! > --------------------------- > Aborting!!!! > Color depth 0 not supported > --------------------------- > OK > --------------------------- > > Then it prints the stack trace and exits. > > I restored a backup from yesterday and reloaded my own changes. An > image saved from that is still functional. After updating Squeak > again, I see the same error as above, so it is reproducible. > > But I cannot invoke the error with a fresh image... so it must be > something with my image after all. Any ideas or suggestions? Does > anyone else experience issues after an update? > > Kind regards, > Jakob |
The failure is introduced when I load Graphics-mt.432.
More specifically, I see these changes: DisplayScreen class>>shutDown (removed) DisplayScreen class>>startUp (removed) DisplayScreen>>restore (changed) DisplayScreen>>shrink DisplayScreen>>shutDown (removed) Graphics package postscript (changed) It fails after I load either of these: DisplayScreen class>>startUp (removed) Graphics package postscript (changed) The rest of the changes I can load without breaking the image. Am Fr., 22. Mai 2020 um 18:36 Uhr schrieb Jakob Reschke <[hidden email]>: > > This is from the image before the update, the VM is the same (should > be the 5.3 release VM if I remember correctly): > > Image > ----- > C:\Users\Jakob\HiDrive\Squot-trunk-64bit.2.image > Squeak6.0alpha > latest update: #19634 > Current Change Set: Git unit of work > Image format 68021 (64 bit) > > Virtual Machine > --------------- > C:\Squeak\VMs\Squeak64\Squeak64.exe > Open Smalltalk Cog[Spur] VM [CoInterpreterPrimitives VMMaker.oscog-nice.2715] > Win32 built on Mar 3 2020 08:36:19 GMT Compiler: 4.2.1 Compatible > Clang 8.0.1 (tags/RELEASE_801/final) > platform sources revision VM: 202003021730 > https://github.com/OpenSmalltalk/opensmalltalk-vm.git Date: Mon Mar 2 > 18:30:55 2020 CommitHash: 6a0bc96 Plugins: 202003021730 > https://github.com/OpenSmalltalk/opensmalltalk-vm.git > CoInterpreter VMMaker.oscog-nice.2715 uuid: > 78e2f556-9829-42fe-963d-e19dfc43c0e9 Mar 3 2020 > StackToRegisterMappingCogit VMMaker.oscog-eem.2719 uuid: > e40f3e94-3a54-411b-9613-5d19114ea131 Mar 3 2020 > > Am Fr., 22. Mai 2020 um 18:33 Uhr schrieb Jakob Reschke > <[hidden email]>: > > > > Hi all, > > > > I just updated my Squeak trunk image. After saving, I cannot reload it: > > > > --------------------------- > > Squeak! > > --------------------------- > > Aborting!!!! > > Color depth 0 not supported > > --------------------------- > > OK > > --------------------------- > > > > Then it prints the stack trace and exits. > > > > I restored a backup from yesterday and reloaded my own changes. An > > image saved from that is still functional. After updating Squeak > > again, I see the same error as above, so it is reproducible. > > > > But I cannot invoke the error with a fresh image... so it must be > > something with my image after all. Any ideas or suggestions? Does > > anyone else experience issues after an update? > > > > Kind regards, > > Jakob |
I haven't tried to reproduce it yet, but I think the cause of the problem
is that Project - where the new start up code is - is the 41st on the StartUpList, while DisplayScreen was the 4th. It is possible that objects between those two indexes assume that the Display had been set up correctly when their #startUp: method is sent. Also, I just went through the StartUpList and I found that it includes classes which do not override #startUp or #startUp:, so their existence on the list is questionable. There are also plenty of classes which implement #startUp instead of #startUp:, which is a problem because #startUp should be deprecated and removed. Very likely there are similar issues with the ShutDownList. Levente On Sun, 24 May 2020, Jakob Reschke wrote: > The failure is introduced when I load Graphics-mt.432. > > More specifically, I see these changes: > DisplayScreen class>>shutDown (removed) > DisplayScreen class>>startUp (removed) > DisplayScreen>>restore (changed) > DisplayScreen>>shrink > DisplayScreen>>shutDown (removed) > Graphics package postscript (changed) > > It fails after I load either of these: > DisplayScreen class>>startUp (removed) > Graphics package postscript (changed) > > The rest of the changes I can load without breaking the image. > > Am Fr., 22. Mai 2020 um 18:36 Uhr schrieb Jakob Reschke > <[hidden email]>: >> >> This is from the image before the update, the VM is the same (should >> be the 5.3 release VM if I remember correctly): >> >> Image >> ----- >> C:\Users\Jakob\HiDrive\Squot-trunk-64bit.2.image >> Squeak6.0alpha >> latest update: #19634 >> Current Change Set: Git unit of work >> Image format 68021 (64 bit) >> >> Virtual Machine >> --------------- >> C:\Squeak\VMs\Squeak64\Squeak64.exe >> Open Smalltalk Cog[Spur] VM [CoInterpreterPrimitives VMMaker.oscog-nice.2715] >> Win32 built on Mar 3 2020 08:36:19 GMT Compiler: 4.2.1 Compatible >> Clang 8.0.1 (tags/RELEASE_801/final) >> platform sources revision VM: 202003021730 >> https://github.com/OpenSmalltalk/opensmalltalk-vm.git Date: Mon Mar 2 >> 18:30:55 2020 CommitHash: 6a0bc96 Plugins: 202003021730 >> https://github.com/OpenSmalltalk/opensmalltalk-vm.git >> CoInterpreter VMMaker.oscog-nice.2715 uuid: >> 78e2f556-9829-42fe-963d-e19dfc43c0e9 Mar 3 2020 >> StackToRegisterMappingCogit VMMaker.oscog-eem.2719 uuid: >> e40f3e94-3a54-411b-9613-5d19114ea131 Mar 3 2020 >> >> Am Fr., 22. Mai 2020 um 18:33 Uhr schrieb Jakob Reschke >> <[hidden email]>: >> > >> > Hi all, >> > >> > I just updated my Squeak trunk image. After saving, I cannot reload it: >> > >> > --------------------------- >> > Squeak! >> > --------------------------- >> > Aborting!!!! >> > Color depth 0 not supported >> > --------------------------- >> > OK >> > --------------------------- >> > >> > Then it prints the stack trace and exits. >> > >> > I restored a backup from yesterday and reloaded my own changes. An >> > image saved from that is still functional. After updating Squeak >> > again, I see the same error as above, so it is reproducible. >> > >> > But I cannot invoke the error with a fresh image... so it must be >> > something with my image after all. Any ideas or suggestions? Does >> > anyone else experience issues after an update? >> > >> > Kind regards, >> > Jakob |
Hi, there. Hmm... I think that the position of Project in the StartUpList and ShutDownList is unrelated to this issue. I think I just removed a duplication via Graphics-mt.432. Looking at Display >> #restore, the bug Jakob mentioned could be related to an issue with "depth" being "0" in the Display object. Not sure how this can happen in any image unless maybe some class-recompilation hickup? But then "nil" would be more likely a reset value than "0" .... Anyway, since "AutoStart" is before "Project" in the start-up list, you can start the VM + image + startup script to then reset "depth" in "Display" to "32". :-) Display newDepth: 32 Best, Marcel
|
... maybe Form >> #hibernate (via Form class >> #shutDown) is interfering with "depth" in some situations on some platforms? In any case, it does not seem a good idea to #hibernate the DisplayForm ... because #unhibernate is an in-image mechanism, while the "bits" of the DisplayForm are known to the VM (plugins) after #beDisplay. Best, Marcel
|
Hi all,
exactly the same issue here. Using SqueakConsole.exe (Windows) gave me the following stack trace:
So it looks as if the whole startup machinery missed to set a display screen depth.
Interestingly, a second image updated which I use for the sole purpose of installing the latest updates, currently on #19705, is not affected and can be restarted.
Any idea of how to rescue our images? I saved mine dozens of times since I restarted the VM the last time after installing the latest Trunk updates. The error only occurs after restarting your VM.
At all folks, better don't shutdown your image until this has been fixed or it will never awake again! 😓
Best, Christoph Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Montag, 25. Mai 2020 10:13 Uhr An: Levente Uzonyi; squeak-dev Betreff: Re: [squeak-dev] Image not startable after save
... maybe Form >> #hibernate (via Form class >> #shutDown) is interfering with "depth" in some situations on some platforms? In any case, it does not seem a good idea to #hibernate the DisplayForm ... because #unhibernate is an in-image mechanism, while the
"bits" of the DisplayForm are known to the VM (plugins) after #beDisplay.
Best,
Marcel
Carpe Squeak!
|
Hi Christoph. > So it looks as if the whole startup machinery missed to set a display screen depth. Again, nobody sets the display depth to 0 on shutdown. It usually stays put. As you left it. So it must be some interference with another part ... is still suspect #hibernation. But this bug is hard to reproduce... >Any idea of how to rescue our images? Again, try a start-up script. See my previous answer. Best, Marcel
|
Hi Marcel,
thanks for your answer.
> Again, try a start-up script. See my previous answer. I spent the last few hours trying to do that. Can you tell me what's wrong with this?
> cat .\fix-display.cs
Using my non-defect image instead, it works:
```powershell
> &"C:\Program Files (x86)\Squeak\SqueakConsole.exe" -headless .\FreshTrunk\FreshTrunk.image '..\fix-display.cs'
> echo $?
True
```
Best,
Christoph
Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Samstag, 6. Juni 2020 16:20:02 An: squeak-dev Betreff: Re: [squeak-dev] Image not startable after save
Hi Christoph.
> So it looks as if the whole startup machinery missed to set a display
screen depth.
Again, nobody sets the display depth to 0 on shutdown. It usually stays
put. As you left it. So it must be some interference with another part ... is still suspect #hibernation. But this bug is hard to reproduce...
>Any
idea of how to rescue our images?
Again, try a start-up script. See my previous answer.
Best,
Marcel
Carpe Squeak!
|
In reply to this post by Christoph Thiede
Fabio told me that he could open my image after loading the changes I mentioned. He used a Mac OSX VM from 2019. I wanted to bisect which VMs work, but when I used the same VM that I currently use from another folder, it suddenly opened my image successfully! The .exe files are equal (only
I had renamed
the "bad" one to Squeak64.exe for ages). Now when I rename my sources file, which resides next to the VM, from SqueakV50.sources to SqueakV50.sources_, the image opens. Conversely, if I copy the unrenamed sources file from the "bad" folder to the "good" folder, the "good" VM also produces the error. Any idea how the sources file might be related to this? By the way, the sources file is an old one, 2017-10-28T20:53. (Moreover, I found that the very latest VM from bintray 202006010135 does not open any image. I get the open file prompt, but nothing happens afterwards.) Am Sa., 6. Juni 2020 um 16:09 Uhr schrieb Thiede, Christoph <[hidden email]>:
|
Downloaded the newest 5.0 sources from squeak.org, but the files are equal, no improvement. [hidden email] Which sources file are you using? Am Sa., 6. Juni 2020 um 17:07 Uhr schrieb Jakob Reschke <[hidden email]>:
|
In reply to this post by Jakob Reschke
> Now when I rename my sources file, which resides next to the VM, from SqueakV50.sources to SqueakV50.sources_, the image opens. Conversely, if I copy the unrenamed sources file from the "bad" folder to the "good" folder, the "good" VM also produces the error. Wow, this is great! I did not even need to exchange my executable, but moving the sources file, reverting Graphics-mt.432 manually, and saving the image repaired it again! Afterwards I could rename the sources file back and my image works like a
charm now. How did you hit on that?
Best,
Christoph
Von: Squeak-dev <[hidden email]> im Auftrag von Jakob Reschke <[hidden email]>
Gesendet: Samstag, 6. Juni 2020 17:07:07 An: The general-purpose Squeak developers list Betreff: Re: [squeak-dev] Image not startable after save Fabio told me that he could open my image after loading the changes I mentioned. He used a Mac OSX VM from 2019.
I wanted to bisect which VMs work, but when I used the same VM that I currently use from another folder, it suddenly opened my image successfully! The .exe files are equal (only I had renamed the "bad" one to Squeak64.exe for ages).
Now when I rename my sources file, which resides next to the VM, from SqueakV50.sources to SqueakV50.sources_, the image opens. Conversely, if I copy the unrenamed sources file from the "bad" folder to the "good" folder, the "good" VM also produces the
error.
Any idea how the sources file might be related to this? By the way, the sources file is an old one, 2017-10-28T20:53.
(Moreover, I found that the very latest VM from bintray 202006010135 does not open any image. I get the open file prompt, but nothing happens afterwards.)
Am Sa., 6. Juni 2020 um 16:09 Uhr schrieb Thiede, Christoph <[hidden email]>:
Carpe Squeak!
|
In reply to this post by Jakob Reschke
The image also starts if I make the sources file empty, but not if I put a single character in it. If the file is empty, Squeak also shows the prompt that the sources file was not found. Am Sa., 6. Juni 2020 um 17:13Â Uhr schrieb Jakob Reschke <[hidden email]>:
|
In reply to this post by Christoph Thiede
Am Sa., 6. Juni 2020 um 17:25Â Uhr schrieb Thiede, Christoph <[hidden email]>:
 That I tried the same copy of the VM from another folder at all is because I have the unpacked zips lying around and always copy the current VM that I use to a different folder, where the Windows file association looks for it. So when I switch VMs, I won't have to tell Windows again how to open these .image files... I compared the folders with a merge tool (after renaming my Squeak64.exe .ini and .manifest back). All the binary files are equal, and Monticello/Metacello cache folders, the default image and changes file, debug logs, and crash dumps aside, the only meaningful difference left was eventually the presence of the sources file. |
Thank you, Jakob.
Well, I have to revoke my previous success message. Restarting my image another time and it crashes again on startup ...
Von: Squeak-dev <[hidden email]> im Auftrag von Jakob Reschke <[hidden email]>
Gesendet: Samstag, 6. Juni 2020 17:33:16 An: The general-purpose Squeak developers list Betreff: Re: [squeak-dev] Image not startable after save Am Sa., 6. Juni 2020 um 17:25 Uhr schrieb Thiede, Christoph <[hidden email]>:
That I tried the same copy of the VM from another folder at all is because I have the unpacked zips lying around and always copy the current VM that I use to a different folder, where the Windows file association looks for it. So when I switch VMs,
I won't have to tell Windows again how to open these .image files...
I compared the folders with a merge tool (after renaming my Squeak64.exe .ini and .manifest back). All the binary files are equal, and Monticello/Metacello cache folders, the default image and changes file, debug logs, and crash dumps aside, the only meaningful
difference left was eventually the presence of the sources file.
Carpe Squeak!
|
On Sat, 6 Jun 2020 at 5:43 pm, Thiede, Christoph <[hidden email]> wrote:
Wild guess: there's something wrong with the display form and the Windows VM crashes before the beDisplay primitive is called with a fresh one. That could explain why it works on macOS. I could have a look at the raw display object if you provide an image. Fabio
|
In reply to this post by Christoph Thiede
Could there be some cache of a previous sources file version that is overriding the #startUp method saved in the image?
At the moment, my workaround to keep using my image is:
Best,
Christoph
Von: Squeak-dev <[hidden email]> im Auftrag von Thiede, Christoph
Gesendet: Samstag, 6. Juni 2020 17:43 Uhr An: The general-purpose Squeak developers list Betreff: Re: [squeak-dev] Image not startable after save Thank you, Jakob.
Well, I have to revoke my previous success message. Restarting my image another time and it crashes again on startup ...
Von: Squeak-dev <[hidden email]> im Auftrag von Jakob Reschke <[hidden email]>
Gesendet: Samstag, 6. Juni 2020 17:33:16 An: The general-purpose Squeak developers list Betreff: Re: [squeak-dev] Image not startable after save Am Sa., 6. Juni 2020 um 17:25 Uhr schrieb Thiede, Christoph <[hidden email]>:
That I tried the same copy of the VM from another folder at all is because I have the unpacked zips lying around and always copy the current VM that I use to a different folder, where the Windows file association looks for it. So when I switch VMs,
I won't have to tell Windows again how to open these .image files...
I compared the folders with a merge tool (after renaming my Squeak64.exe .ini and .manifest back). All the binary files are equal, and Monticello/Metacello cache folders, the default image and changes file, debug logs, and crash dumps aside, the only meaningful
difference left was eventually the presence of the sources file.
Carpe Squeak!
|
In reply to this post by fniephaus
I just got it! It was indeed a question of load order. After moving #DisplayScreen in the StartUpList back to index 5 (instead of appending it at the end), my image starts again without renaming any files. I suppose that all these renamings tricks were only relevant for deferring the execution of the startup list, which - so I suspect - reset the display screen depth temporarily at some point, I don't know.
So to summarize, to rescue your image, you have to:
I hope this helps other people to rescue their images, too :-)
startUp "DisplayScreen startUp"
Display setExtent: self actualScreenSize depth: Display nativeDepth.
Display beDisplay
Nevertheless thank you for the kind offer, Fabio!
Von: Squeak-dev <[hidden email]> im Auftrag von Fabio Niephaus <[hidden email]>
Gesendet: Samstag, 6. Juni 2020 17:54:10 An: The general-purpose Squeak developers list Betreff: Re: [squeak-dev] Image not startable after save On Sat, 6 Jun 2020 at 5:43 pm, Thiede, Christoph <[hidden email]> wrote:
Wild guess: there's something wrong with the display form and the Windows VM crashes before the beDisplay primitive is called with a fresh one. That could explain why it works on macOS. I could have a look at the raw display object if you provide
an image.
Fabio
Carpe Squeak!
|
Hi all! DisplayScreen should be removed from the startup list. It is not necessary anymore. Project will do the job just fine. Yeah, the trick I suggested with the start-up script will -- unfortunately -- not work. ProjectLauncher is processing those after the first drawing cycle in Morphic. Those cases with a broken display depth in some images out there still puzzles me. Given that the .sources-file-not-found trick works, there is something else in the StartUpList after 8 (FileDirectory) that actually breaks the Display object, which means that it works up to that point. Note that 8 > 5. ;-) Everything *can* work without having DisplayScreen in the StartUpList. Your broken images are really valuable here! Please do not overwrite them. Best, Marcel
|
Here are things you might also try when having that sources-file-not-found situation in your broken image: - Change DisplayScreen >> #restore to use "32" instead of "self nativeDepth" - Move Project up in the StartUpList - Change DisplayScreen >> #restore to not send #displaySizeChanged - Verify that "Form allSubInstances count: [:form | form depth = 0]" answers 0 - Log all calls to DisplayScreen >> #setExtent:depth: - Just save-as-new the image and try to start that again Best, Marcel
|
Free forum by Nabble | Edit this page |