Relates :
|
|
Relates :
|
|
Relates :
|
|
Relates :
|
Here's the "evaluation" from 6578335 during whose investigation this problem was first diagnosed: What we were doing is that if we overflowed the marking stack when trying to push a newly marked (now grey) object encountered during precleaning, we would just dirty the card the object (now marked) lay on, with the expectation that a later precleaning pass or the final remark phase (which would pick up all remaining dirty cards) would deal with the object. But of course in the case of an object _array_, preclean/remark would just scrub the dirty pages not the entire array, so the part of the object array that protruded off the dirtied page on to a possibly clean page would not be scanned and if that part contained references to white objects, those would be lost. The fix of course is in the case of overflown object arrays, to dirty all the pages that the newly marked overflown object array lies on when encoding its greyness for the purposes of rescan (by a later preclean pass or the subsequent final remark).
|