RFR(S) 8176363: Incorrect lock order for G1 PtrQueue related locks
Mikael Gerdin
mikael.gerdin at oracle.com
Wed Mar 8 15:09:40 UTC 2017
Hi Markus,
On 2017-03-08 15:33, Markus Gronlund wrote:
> Hi Mikael,
>
> I think this looks good, thanks for addressing.
Thanks for the review!
/Mikael
>
> Markus
>
> -----Original Message-----
> From: Mikael Gerdin
> Sent: den 8 mars 2017 15:17
> To: hotspot-dev
> Subject: RFR(S) 8176363: Incorrect lock order for G1 PtrQueue related locks
>
> 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 FL_lock which protects a free list of buffers which is acquired while holding the respective CBL monitors but the FL_locks 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 locking_enqueue_completed_buffer 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