Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8083266 | emb-9 | Roland Westrelin | P2 | Resolved | Fixed | team |
JDK-8067530 | 8u45 | Roland Westrelin | P2 | Resolved | Fixed | b01 |
JDK-8062149 | 8u40 | Roland Westrelin | P2 | Closed | Fixed | b18 |
JDK-8070918 | emb-8u47 | Roland Westrelin | P2 | Resolved | Fixed | team |
JDK-8072228 | 7u85 | Vladimir Kempik | P2 | Resolved | Fixed | b01 |
JDK-8062150 | 7u80 | Vladimir Kempik | P2 | Closed | Fixed | b04 |
Run java -XX:CompileOnly=CharArrayCrash CharArrayCrash
The program crashes in mixed or -Xcomp mode. Works fine with -Xint.
Also works well on 6u37. Crashes on 7u67 and 8u11.
The issue can be reproduced on amd64 only.
public class CharArrayCrash {
static char[] pattern0 = {0};
static char[] pattern1 = {1};
static void test(char[] array) {
if (pattern1 == null) return;
int i = 0;
int pos = 0;
char c = array[pos];
while (i >= 0 && (c == pattern0[i] || c == pattern1[i])) {
i--;
pos--;
if (pos != -1) {
c = array[pos];
}
}
}
public static void main(String[] args) {
for (int i = 0; i < 1000000; i++) {
test(new char[1]);
}
}
}
hs_err.log attached.
The ACCESS_VIOLATION happens at
movzx r11d,WORD PTR [rdx+r8*2+0x10]
that stands for `caload` bytecode.
`rdx` here is a valid char[] oop, but the offset is illegal: `r8` = 0xffffffff
- backported by
-
JDK-8067530 C2: Incorrectly compiled char[] array access crashes JVM
-
- Resolved
-
-
JDK-8070918 C2: Incorrectly compiled char[] array access crashes JVM
-
- Resolved
-
-
JDK-8072228 C2: Incorrectly compiled char[] array access crashes JVM
-
- Resolved
-
-
JDK-8083266 C2: Incorrectly compiled char[] array access crashes JVM
-
- Resolved
-
-
JDK-8062149 C2: Incorrectly compiled char[] array access crashes JVM
-
- Closed
-
-
JDK-8062150 C2: Incorrectly compiled char[] array access crashes JVM
-
- Closed
-
- relates to
-
JDK-8065965 3% performance regression on SPECjvm2008-Crypto-G1 on x64 following 8054478
-
- Closed
-
-
JDK-8066045 opto/node.hpp:355, assert(i < _max) failed: oob: i=1, _max=1
-
- Closed
-
-
JDK-8066775 opto/node.hpp:355, assert(i < _max) failed: oob: i=1, _max=1
-
- Closed
-
-
JDK-8073184 Compile of java.lang.Integer::getChars fails with LoopLimitCheck = false after 8054478
-
- Closed
-