RFR(S) 8176363: Incorrect lock order for G1 PtrQueue related locks (original) (raw)

coleen.phillimore at oracle.com coleen.phillimore at oracle.com
Wed Mar 8 18:50:07 UTC 2017


This looks good.

I filed https://bugs.openjdk.java.net/browse/JDK-8176393 Can you add some info to it?

thanks, Coleen

On 3/8/17 9:16 AM, Mikael Gerdin wrote:

Hi all,

Please review this change to the lock rank of the locks taken in the G1 pre and post write barriers. The rank of these locks have long been a problem since even though they are leaf locks semantically they have been ranked as "nonleaf" locks in the lock rank system and this has caused several issues over the years where a thread holding a VM mutex and attempting to write an oop would in some rare cases hit a deadlock warning due to it acquiring one of the CBL monitors. Now this problem has come up yet again with the weak JNI handles bugfix where a lock rank assertion was hit yet again due to the fact that some code was holding a leaf lock while resolving a weak JNI handle. I suggest that the ranks of the involved locks are changed to "leaf - 1", allowing them to be acquired by threads holding "leaf" locks. This should not cause any further problems since reducing the ranks only allows the locks to be taken in more places. Both pairs of locks (the SATB and DirtyCardQ ones) have an associated FLlock which protects a free list of buffers which is acquired while holding the respective CBL monitors but the FLlocks have the "special" lock rank and so they will still order correctly with the new "leaf - 1" ranks. There is some horrible stuff going on in lockingenqueuecompletedbuffer but I've chosen to not change that at this point in time even though it relates to the relative ranks of each pair of locks. Testing: JPRT, HS tiers 2 and 3 were tested with a patch to acquire the locks even more often than what is normal to make sure that the code was tested properly. Some testing on HS tiers 4, 5 and 6 (Linux x64) JDK tiers 1, 2 and 3 Bug: https://bugs.openjdk.java.net/browse/JDK-8176363 Webrev: http://cr.openjdk.java.net/~mgerdin/8176363/webrev.0/ Thanks /Mikael



More information about the hotspot-dev mailing list