RFR(s): 8210303: VM_HandshakeAllThreads fails assert with "failed: blocked and not walkable"

David Holmes david.holmes at oracle.com
Wed Oct 3 11:41:44 UTC 2018

Hi Robbin,

This seems quite reasonable.


On 3/10/2018 9:10 PM, Robbin Ehn wrote:
> Hi all, please review.
> VM thread checks if it can processes a handshake for a JavaThread. That
> check will only return a stable value if the VM thread holds the handshake
> semaphore (or at safepoint). To avoid an unnecessary grabbing of the 
> semaphore
> just to release it, the VM thread do an early check to see if there is 
> any point
> to do the stable check. But the method 
> SafepointSynchronize::safepoint_safe() is
> not suppose to handle unstable checks. This can causes a false positive 
> from an
> assert in safepoint_safe().
> This change-set adds a local function for doing the unstable check 
> without asserts. I do not want to expose a generic method for doing 
> unstable safepoint safe test.
> Since asserts are not in release builds, there is no indication of a bug 
> in JDK
> 11. But since 11 is a LTS, this should also be considered for back-porting.
> Note, in JDK 11 only ZGC uses handshakes, previously releases have no 
> users of handshakes.
> Webrev:
> http://cr.openjdk.java.net/~rehn/8210303/webrev/index.html
> Bug:
> https://bugs.openjdk.java.net/browse/JDK-8210303
> I could not reproduce it, sanity with t1-3 + handshake tests.
> Thanks, Robbin

More information about the hotspot-runtime-dev mailing list