RFR: 8186035: Klass::decode_klass_not_null() asserted on bad oop

Stefan Karlsson stefan.karlsson at oracle.com
Fri Aug 11 09:33:21 UTC 2017


Hi all,

Please review this patch to temporarily remove a failing assert in G1.

http://cr.openjdk.java.net/~stefank/8186035/webrev.01/
https://bugs.openjdk.java.net/browse/JDK-8186035

The problem is that during initial marking, multiple threads might race 
to copy an object and they will all try to mark the new copy if it ends 
up in the old gen. In the marking code, there's an assert that the 
object should be valid. However, only the thread that won the race to 
copying the object is allowed to read the contents of the 'to' copy, and 
all other threads might see garbage and could fail on this assert.

The removal of the assert is an interim solution, to get rid of failure 
in our testing. I'm working on another fix for this, where only the 
winning thread is marking newly copied object. See:
https://bugs.openjdk.java.net/browse/JDK-8186133

Thanks,
StefanK



More information about the hotspot-gc-dev mailing list