From 0a375cfa2da69356e9ad7e9f908df89d498c1fd5 Mon Sep 17 00:00:00 2001 From: Roman Kennke Date: Wed, 4 Dec 2019 21:40:08 +0100 Subject: [PATCH] 8235355: Shenandoah: Resolve deadlock between OOM handler and nmethod lock Reviewed-by: zgu --- src/hotspot/share/gc/shenandoah/shenandoahCodeRoots.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/hotspot/share/gc/shenandoah/shenandoahCodeRoots.cpp b/src/hotspot/share/gc/shenandoah/shenandoahCodeRoots.cpp index c0f8efff6ed..7829bfb6d84 100644 --- a/src/hotspot/share/gc/shenandoah/shenandoahCodeRoots.cpp +++ b/src/hotspot/share/gc/shenandoah/shenandoahCodeRoots.cpp @@ -215,6 +215,7 @@ public: if (nm->is_unloading()) { ShenandoahReentrantLocker locker(nm_data->lock()); + ShenandoahEvacOOMScope evac_scope; unlink(nm); return; } @@ -222,6 +223,7 @@ public: ShenandoahReentrantLocker locker(nm_data->lock()); // Heal oops and disarm + ShenandoahEvacOOMScope evac_scope; ShenandoahNMethod::heal_nmethod(nm); ShenandoahNMethod::disarm_nmethod(nm); @@ -258,7 +260,6 @@ public: } virtual void work(uint worker_id) { - ShenandoahEvacOOMScope evac_scope; ICRefillVerifierMark mark(_verifier); _iterator.nmethods_do(&_cl); }