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

Daniel D. Daugherty daniel.daugherty at oracle.com
Mon Apr 8 14:09:50 UTC 2019


On 4/7/19 9:49 PM, David Holmes wrote:
> Bug: https://bugs.openjdk.java.net/browse/JDK-8221584
> webrev: http://cr.openjdk.java.net/~dholmes/8221584/webrev/

src/hotspot/share/prims/jvmtiRawMonitor.cpp
     No comments.

Thumbs up!

Dan

>
> 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