[urgent] RFR (XS): 8166207: Wrong use of Copy::conjoint_oops_atomic in global mark stack
Thomas Schatzl
thomas.schatzl at oracle.com
Mon Sep 19 15:07:31 UTC 2016
Hi all,
can I have reviews for this change that does not
use Copy::conjoint_oops_atomic() to copy oops outside of the java heap
introduced in JDK-8159422?
This is because on some platforms the method is implemented and only
ever used (apart from this one) to copy oops (oop references) *on the
heap*.
Their size may vary depending on UseCompressedOops. This crashes (or
asserts) on 64 bit arm platforms because their implementation of this
method directly uses this. Which means that in effect the code only
copies half of the intended data.
Other implementations use
The suggested fix is to revert to the use of
Copy::conjoint_memory_atomic to copy data as suggested in an early
version of the JDK-8159422, and in a follow-up look what the intended
meaning of this method actually is and eventually fix the methods.
This will remove a lot of noise on the arm64 nightlies.
Thanks go to Dean Long for finding the root problem first.
CR:
https://bugs.openjdk.java.net/browse/JDK-8166207
Webrev:
http://cr.openjdk.java.net/~tschatzl/8166207/webrev/
Testing:
passes jprt, waiting for rbt to pick up crashing tests with it
Thanks,
Thomas
More information about the hotspot-gc-dev
mailing list