RFR(s): 8210303: VM_HandshakeAllThreads fails assert with "failed: blocked and not walkable"
david.holmes at oracle.com
Wed Oct 3 11:41:44 UTC 2018
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
> 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.
> I could not reproduce it, sanity with t1-3 + handshake tests.
> Thanks, Robbin
More information about the hotspot-runtime-dev