RFR: 8245877: assert(_value != __null) failed: resolving NULL _value in JvmtiExport::post_compiled_method_load [v3]

Coleen Phillimore coleenp at openjdk.java.net
Tue Jun 29 18:02:06 UTC 2021


On Tue, 29 Jun 2021 16:38:28 GMT, Leonid Mesnik <lmesnik at openjdk.org> wrote:

>> The crash happens because nmethod might become a zombie before it is enqueued in JvmtiDeferredEventQueue or after it is dequeued from it. The crash is reproduced by serviceability/jvmti/CompiledMethodLoad/Zombie.java. However, it takes ~3K  runs to hit it. I verified the fix by running this test >100K on each platform. Also, I verified that protecting in 'void JvmtiDeferredEventQueue::post(JvmtiEnv* env)' is not enough.
>
> Leonid Mesnik has updated the pull request incrementally with one additional commit since the last revision:
> 
>   post updated.

Looks good!

src/hotspot/share/prims/jvmtiImpl.cpp line 968:

> 966:   while (_queue_head != NULL) {
> 967:     _queue_head->event().post_compiled_method_load_event(env);
> 968:     dequeue();

Good find!  So we _can_ zombie the nmethod after we take it off the list.  Makes a lot of sense.  Thank you for your perseverance in tracking this down!

-------------

Marked as reviewed by coleenp (Reviewer).

PR: https://git.openjdk.java.net/jdk/pull/4602


More information about the serviceability-dev mailing list