On Oct 7, 2005, at 12:08 PM, Andreas Raab wrote:
You can *not* get away without a GC, simply because the GC state isn't preserved across snapshots. We actually had some obscure crashes related to this problem in the past (anyone remember the crashes caused by the root bit being set on the active context after a snapshot?)
In other words, the full GC is required to save the image in a well- known "right-after-full-gc-state". One would (at least) have to save sufficient information for the garbage collector to make this work. Likely other fixes too, since a full garbage collect cleans up many, many things that we usually don't even think about (cached contexts for example).
Ok, thanks, good to know.
Now, it should still work to do what Tom was suggesting, right? Do the fullGC in the parent process, then immediately fork and snapshot (without doing a second GC in the child). Does the order of, eg, #storeContextRegisters: and #fullGC inside #snapshot: matter?
Avi