When running a debug VM with G1DeferredRSUpdate disabled, G1 crashes the first time when the remembered set is being updated during evacuation. The problem is that G1ParScanClosure is initialized with an uninitialized queue_num() value of G1ParScanThreadState in the G1ParScanThreadState constructor. This is because initialization of the values in the initializer list is perfomed according to the declaration order in the class, not the order given in the initializer list. The fix is to move the declaration of the G1ParScanClosure after the declaration of the _queue_num member in the G1ParScanThreadState class.
|