On Mon, 27 Sep 2021 09:39:59 GMT, Per Liden <pli...@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

Reply via email to