On Tue, 29 Jun 2021 16:38:28 GMT, Leonid Mesnik <lmes...@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