RFR: 8274196: Crashes in VM_HeapDumper::work after JDK-8252842 [v2]

Lin Zang lzang at openjdk.java.net
Mon Sep 27 11:28:02 UTC 2021


On Mon, 27 Sep 2021 09:39:59 GMT, Per Liden <pliden at openjdk.org> wrote:

> > The root cause for crash in ZGC is that the JNIHandles are processed before object iteration. And ZGC would update the JNIHandles at object iteration with read barrier. So the crash is cause by accessing the invalid address which can be dummy info after zgc, and hence crash.
> 
> The fix here should not be to change the order of stuff, so that heap iteration happens first, that will just hide the real bug. The real bug is that the `JNIGlobalsDumper::do_oop()` is missing a load barrier. In other words, keep the order and just make sure to add a load barrier, like this:
> 
> ```
> void JNIGlobalsDumper::do_oop(oop* obj_p) {
>   oop o = NativeAccess<AS_NO_KEEPALIVE>::oop_load(obj_p);
>   ...
> ```

Hi Per @pliden ,
Thanks a lot!
Correct!I am just puzzling why the sequency of root type dump is a must as there is no such request in spec, and your suggestion definitely help to answer that, I took the wrong fix and neglect that there is a read barrier missed.
I will make the change.

BRs,
Lin

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

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


More information about the serviceability-dev mailing list