-
Bug
-
Resolution: Fixed
-
P3
-
11, 12, 13
-
b11
-
ppc
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8220236 | 12.0.2 | Martin Doerr | P3 | Resolved | Fixed | b01 |
JDK-8220437 | 11.0.4 | Martin Doerr | P3 | Resolved | Fixed | b01 |
Compiled method with checkcast instruction that will be patched may fail, if objects moved in heap during patching runtime call.
Example test:
class Test {
static class LoadLast {
final long value = System.nanoTime();
}
static Object load() {
return new LoadLast();
}
static Object work() {
LoadLast o = (LoadLast) load();
return o;
}
public static void main(String[] args) throws Exception {
System.out.println(((LoadLast) work()).value);
}
}
Flags to reproduce
-Xcomp -Xbatch
-XX:CompileCommand=quiet -XX:CompileOnly=Test::work
-XX:+PrintGC -XX:+TracePatching
-XX:+FullGCALot -XX:FullGCALotStart=2110
-XX:TieredStopAtLevel=1
Test
FullGCALotStart tuned to reduce number FullGCs but to make sure it will be done during checkcast patching, which accompanied with the message from TracePatching
Example test:
class Test {
static class LoadLast {
final long value = System.nanoTime();
}
static Object load() {
return new LoadLast();
}
static Object work() {
LoadLast o = (LoadLast) load();
return o;
}
public static void main(String[] args) throws Exception {
System.out.println(((LoadLast) work()).value);
}
}
Flags to reproduce
-Xcomp -Xbatch
-XX:CompileCommand=quiet -XX:CompileOnly=Test::work
-XX:+PrintGC -XX:+TracePatching
-XX:+FullGCALot -XX:FullGCALotStart=2110
-XX:TieredStopAtLevel=1
Test
FullGCALotStart tuned to reduce number FullGCs but to make sure it will be done during checkcast patching, which accompanied with the message from TracePatching
- backported by
-
JDK-8220236 PPC: Crash after C1 checkcast patched and GC
- Resolved
-
JDK-8220437 PPC: Crash after C1 checkcast patched and GC
- Resolved