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

List:       openjdk-hotspot-runtime-dev
Subject:    Re: RFR (M) 8212160: JVMTI agent crashes with "assert(_value != 0LL) failed: resolving NULL _value"
From:       David Holmes <david.holmes () oracle ! com>
Date:       2019-11-27 0:03:56
Message-ID: 32889ba8-b9e1-6a38-deaf-a16cb6d2a9c6 () oracle ! com
[Download RAW message or body]

(adding runtime as well)

Hi Coleen,

On 27/11/2019 12:22 am, coleen.phillimore@oracle.com wrote:
> Summary: Add local deferred event list to thread to post events outside 
> CodeCache_lock.
> 
> This patch builds on the patch for JDK-8173361.  With this patch, I made 
> the JvmtiDeferredEventQueue an instance class (not AllStatic) and have 
> one per thread.  The CodeBlob event that used to drop the CodeCache_lock 
> and raced with the sweeper thread, adds the events it wants to post to 
> its thread local list, and processes it outside the lock.  The list is 
> walked in GC and by the sweeper to keep the nmethods from being unloaded 
> and zombied, respectively.

Sorry I don't understand why we would want/need a deferred event queue 
for every JavaThread? Isn't this only relevant for non-JavaThreads that 
need to have the ServiceThread process the deferred event?

David

> Also, the jmethod_id field in nmethod was only used as a boolean so 
> don't create a jmethod_id until needed for post_compiled_method_unload.
> 
> Ran hs tier1-8 on linux-x64-debug and the stress test that crashed in 
> the original bug report.
> 
> open webrev at http://cr.openjdk.java.net/~coleenp/2019/8212160.01/webrev
> bug link https://bugs.openjdk.java.net/browse/JDK-8212160
> 
> Thanks,
> Coleen
[prev in list] [next in list] [prev in thread] [next in thread] 

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