nsk/jvmti/CompiledMethodUnload/compmethunload001 fails because a recent
jvmti change added the call
JvmtiExport::post_compiled_method_unload_at_safepoint(method()->jmethod_id());
to nmethod::flush. The call to jmethod_id means that the methodOop
embedded in an nmethod is live until the nmethod is flushed, not just
until the the nmethod is made a zombie. If a gc happens while the
nmethod is a zombie, the call to jmethod_id can segv on the bad
methodOop. The bug was provoked on linux-amd64 by the
compmethunload001 nsk test, though it can happen on any platform.
jvmti change added the call
JvmtiExport::post_compiled_method_unload_at_safepoint(method()->jmethod_id());
to nmethod::flush. The call to jmethod_id means that the methodOop
embedded in an nmethod is live until the nmethod is flushed, not just
until the the nmethod is made a zombie. If a gc happens while the
nmethod is a zombie, the call to jmethod_id can segv on the bad
methodOop. The bug was provoked on linux-amd64 by the
compmethunload001 nsk test, though it can happen on any platform.
- duplicates
-
JDK-4944327 zombie methods must be gc-ed until they are flushed
-
- Closed
-