Details
-
Bug
-
Resolution: Fixed
-
P2
-
12, 17, 21, 22, 23
-
b12
-
Verified
Backports
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8334176 | 21.0.5-oracle | Tobias Hartmann | P2 | Closed | Fixed | b01 |
JDK-8334370 | 21.0.5 | Martin Doerr | P2 | Resolved | Fixed | b01 |
Description
java -XX:-TieredCompilation -XX:-BackgroundCompilation TestArrayAccessAboveRCAfterSplitIf
fails with:
# SIGSEGV (0xb) at pc=0x00007fd5d9056204, pid=2781800, tid=2781801
#
# JRE version: OpenJDK Runtime Environment (23.0) (slowdebug build 23-internal-adhoc.roland.jdk-jdk2)
# Java VM: OpenJDK 64-Bit Server VM (slowdebug 23-internal-adhoc.roland.jdk-jdk2, mixed mode, compressed oops, compressed class ptrs, serial gc, linux-amd64)
# Problematic frame:
# J 13 c2 TestArrayAccessAboveRCAfterSplitIf.test([I[IIIZ)I (68 bytes) @ 0x00007fd5d9056204 [0x00007fd5d90561e0+0x0000000000000024]
In that case, split if inserts a Region between a range check and a dependent array load. The array load becomes dependent on some unrelated condition after the Region is later optimized out. That unrelated condition is subsumed by a dominating identical condition and the array load floats above the range check.
I expect some other transformation can cause similar failures.
Attachments
Issue Links
- backported by
-
JDK-8334370 C2: array load may float above range check
-
- Resolved
-
-
JDK-8334176 C2: array load may float above range check
-
- Closed
-
- relates to
-
JDK-8319793 C2 compilation fails with "Bad graph detected in build_loop_late" after JDK-8279888
-
- Resolved
-
-
JDK-8336729 C2: Div/Mod nodes without zero check could be split through iv phi of outer loop of long counted loop nest resulting in SIGFPE
-
- Resolved
-
-
JDK-8324976 C2: allow array loads known to be within bounds to float
-
- Open
-
- links to
-
Commit openjdk/jdk21u-dev/a1e43d90
-
Commit openjdk/jdk/4406915e
-
Review openjdk/jdk21u-dev/727
-
Review openjdk/jdk/17635