Am 07.12.2023 13:10:22 schrieb Marcel <marcel.taeumel@hpi.uni-potsdam.de>:
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,MarcelAm 06.12.2023 21:12:16 schrieb Eliot Miranda <eliot.miranda@gmail.com>: