During optional evacuation it is possible that G1 modifies oops embedded in nmethods in parallel. One source are oop* gathered by a previous evacuation phase in the optional roots, the other the region's strong code roots list. Since these oops may be unaligned on x64, this can result in them being corrupted. The fix is to not gather embedded oops in the optional roots list as the strong code roots list contains them already. Co-authored-by: Erik Osterlund <erik.osterlund@oracle.com> Co-authored-by: Stefan Johansson <stefan.johansson@oracle.com> Co-authored-by: Stefan Karlsson <stefan.karlsson@oracle.com> Reviewed-by: sjohanss, stefank
8235305: Corrupted oops embedded in nmethods due to parallel modification during optional evacuation
Welcome to the JDK! =================== For information about building the JDK, including how to retrieve all of the source code, please see either of these files: * doc/building.html (html version) * doc/building.md (markdown version) See http://openjdk.java.net/ for more information about the OpenJDK Community and the JDK.
Description
jdk-24 fork (from: https://github.com/openjdk/jdk) with modifications to be used in Wildcard-Usage analysis tools
Languages
Java
74.1%
C++
13.9%
C
7.9%
Assembly
2.7%
Objective-C
0.4%
Other
0.8%