RFR (XXXS): 8221584: SIGSEGV in os::PlatformEvent::unpark() in JvmtiRawMonitor::raw_exit while posting method exit event

David Holmes david.holmes at oracle.com
Mon Apr 8 01:49:28 UTC 2019


Bug: https://bugs.openjdk.java.net/browse/JDK-8221584
webrev: http://cr.openjdk.java.net/~dholmes/8221584/webrev/

I'm really just sponsoring this fix as the problem was diagnozed by 
Robbin Ehn and Stefan Karlsson - thanks guys! :) So they are the 
contributors and I'm already one Reviewer.

There's a missing loadstore barrier between extracting the ParkEvent 
from an ObjectWaiter node, and setting the node's TState to allow the 
the entering thread to proceed. It seems our recent update to gcc 8.2 
resulted in the compiler reordering those two actions, meaning that the 
Objectwaiter pointer could now be pointing into a stack location with 
random contents. That might manifest as a SEGV or we may treat random 
memory as a pthread_mutex_t and get an EINVAL (or potentially other 
errors) on pthread_mutex_lock.

Testing: mach5 tiers 1-3 (sanity - the added barrier can't break anything)

Thanks,
David


More information about the serviceability-dev mailing list