Aha!

If this was in a Cuis image, that image probably did not get the fix we did in DisplayScreen >> restore

restore
    
| priorBits |
    
priorBits := bits. "Must avoid to be GC'ed!"
        
self setExtent: self class actualScreenSize depth: self nativeDepth.
        
self beDisplay.
    
priorBits := nil. "Documentation only."
    
Project current ifNotNil: [:p| p displaySizeChanged].

For Cuis 5.0 and Cuis 6.0, this fix should probably be in DisplayScreen >> setExtent:depth:, where bits is cleared and thus can be GC'ed .

No, this cannot be fixed only in the VM platform code. The image allocates memory for the bits and communicates a pointer to that to the platform code via #beDisplay. Whenever those bits change, new bits must be communicated via #beDisplay *before* the GC collects the old bits. Image code must ensure that with a strong reference.

Well, this is no new behavior. The issue can also occur with the 2022-06 OSVM. But it is (still) rare. Probably related to how much old space the image uses. Definitely GC-related.

Best,
Marcel

Am 06.12.2023 21:12:16 schrieb Eliot Miranda <eliot.miranda@gmail.com>: