[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-serviceability-dev
Subject:    Re: RFR (XXXS): 8221584: SIGSEGV in os::PlatformEvent::unpark() in JvmtiRawMonitor::raw_exit while p
From:       David Holmes <david.holmes () oracle ! com>
Date:       2019-04-08 21:35:48
Message-ID: 9c044731-e1bf-6a0c-d6c0-2800af383629 () oracle ! com
[Download RAW message or body]

Thanks Dan!

David

On 9/04/2019 12:09 am, Daniel D. Daugherty wrote:
> 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
> 
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic