Relates :
|
|
Relates :
|
|
Relates :
|
|
Relates :
|
The following test case demonstrates the problem. 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
|