Open
Description
Internal build
jdk_lang_1
java/lang/String/ToLowerCase.java
The failure didn't repeat in the automatic 3x grinder.
[2023-03-29T02:29:30.273Z] STDERR:
[2023-03-29T02:29:30.273Z] java.lang.ArrayIndexOutOfBoundsException
[2023-03-29T02:29:30.273Z] at java.lang.CharacterDataLatin1.getProperties(CharacterDataLatin1.java:72)
[2023-03-29T02:29:30.273Z] at java.lang.CharacterDataLatin1.toLowerCase(CharacterDataLatin1.java:134)
[2023-03-29T02:29:30.273Z] at java.lang.Character.toLowerCase(Character.java:6373)
[2023-03-29T02:29:30.273Z] at java.lang.String.toLowerCase(String.java:2785)
[2023-03-29T02:29:30.273Z] at java.lang.String.toLowerCaseCore(String.java:2921)
[2023-03-29T02:29:30.273Z] at java.lang.String.toLowerCase(String.java:2896)
[2023-03-29T02:29:30.273Z] at ToLowerCase.test(ToLowerCase.java:112)
[2023-03-29T02:29:30.273Z] at ToLowerCase.main(ToLowerCase.java:44)
@joransiu fyi. Not sure if this is zLinux specific or something recently changed in this area.
CharacterDataLatin1
int getProperties(int ch) {
char offset = (char)ch;
int props = A[offset]; <- line 72
return props;
}
static final int A[] = new int[256];
To get there it went through CharacterData.of() and presumably ch >>> 8 == 0
was true.
static final CharacterData of(int ch) {
if (ch >>> 8 == 0) { // fast-path
return CharacterDataLatin1.instance;
} else {
switch(ch >>> 16) { //plane 00-16
case(0):
return CharacterData00.instance;
case(1):
return CharacterData01.instance;
case(2):
return CharacterData02.instance;
case(14):
return CharacterData0E.instance;
case(15): // Private Use
case(16): // Private Use
return CharacterDataPrivateUse.instance;
default:
return CharacterDataUndefined.instance;
}
}
}