Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8205242 | 11.0.1 | Aleksey Shipilev | P1 | Resolved | Fixed | team |
We are seeing a number of test failures when running Nashorn test262 tests with JDK 11. The failures only happen when running a large chunk of the test suite, not when running just the failing tests alone.
The failures are caused by the Nashorn encodeURI function returning the wrong result. Specifically, the following condition at line 274 in src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/URIUtils.java sometimes evaluates to true when it should evaluate to false:
if ((b[i] & 0xff) < 0x10) {
b being of type byte[] and b[i] being a negative byte value.
If I change above condition to the one below the failures disappear.
if ((b[i] & 0xff) < 0x10 && b[i] >= 0) {
Steps to reproduce:
cd make/nashorn
ant externals
ant test262parallel -Dtest262-test-sys-prop.test.js.roots=test/nashorn/script/external/test262/test/suite/ch15/15.1/15.1.3/
The last step runs a large enough subset to reproduce the problem. It should terminate without failures, but currently produces 11 failures:
[java] FAILED TESTS
[java] Test(compile, run): test/nashorn/script/external/test262/test/suite/ch15/15.1/15.1.3/15.1.3.3/S15.1.3.3_A2.3_T1.js
[java] test/nashorn/script/external/test262/test/harness/sta.js:286:4 Error: #3629-D7FF
[java] Test(compile, run): test/nashorn/script/external/test262/test/suite/ch15/15.1/15.1.3/15.1.3.3/S15.1.3.3_A2.4_T1.js
[java] test/nashorn/script/external/test262/test/harness/sta.js:286:4 Error: #D800-DBFF
[java] Test(compile, run): test/nashorn/script/external/test262/test/suite/ch15/15.1/15.1.3/15.1.3.3/S15.1.3.3_A2.4_T2.js
[java] test/nashorn/script/external/test262/test/harness/sta.js:286:4 Error: #DC00-DFFF
[java] Test(compile, run): test/nashorn/script/external/test262/test/suite/ch15/15.1/15.1.3/15.1.3.3/S15.1.3.3_A2.5_T1.js
[java] test/nashorn/script/external/test262/test/harness/sta.js:286:4 Error: #E000-FFFF
[java] Test(compile, run): test/nashorn/script/external/test262/test/suite/ch15/15.1/15.1.3/15.1.3.3/S15.1.3.3_A4_T2.js
[java] test/nashorn/script/external/test262/test/harness/sta.js:286:4 Error: #1: http://ru.wikipedia.org/wiki/Юникод
[java] Test(compile, run): test/nashorn/script/external/test262/test/suite/ch15/15.1/15.1.3/15.1.3.4/S15.1.3.4_A2.2_T1.js
[java] test/nashorn/script/external/test262/test/harness/sta.js:286:4 Error: #0080-07FF
[java] Test(compile, run): test/nashorn/script/external/test262/test/suite/ch15/15.1/15.1.3/15.1.3.4/S15.1.3.4_A2.3_T1.js
[java] test/nashorn/script/external/test262/test/harness/sta.js:286:4 Error: #0800-D7FF
[java] Test(compile, run): test/nashorn/script/external/test262/test/suite/ch15/15.1/15.1.3/15.1.3.4/S15.1.3.4_A2.4_T1.js
[java] test/nashorn/script/external/test262/test/harness/sta.js:286:4 Error: #D800-DBFF
[java] Test(compile, run): test/nashorn/script/external/test262/test/suite/ch15/15.1/15.1.3/15.1.3.4/S15.1.3.4_A2.4_T2.js
[java] test/nashorn/script/external/test262/test/harness/sta.js:286:4 Error: #DC00-DFFF
[java] Test(compile, run): test/nashorn/script/external/test262/test/suite/ch15/15.1/15.1.3/15.1.3.4/S15.1.3.4_A2.5_T1.js
[java] test/nashorn/script/external/test262/test/harness/sta.js:286:4 Error: #E000-FFFF
[java] Test(compile, run): test/nashorn/script/external/test262/test/suite/ch15/15.1/15.1.3/15.1.3.4/S15.1.3.4_A4_T2.js
[java] test/nashorn/script/external/test262/test/harness/sta.js:286:4 Error: #1: http://ru.wikipedia.org/wiki/Юникод
[java] Tests run: 160/160 tests, passed: 149 (93.13%), failed: 11. Time elapsed: 1min 35s.
The failures are caused by the Nashorn encodeURI function returning the wrong result. Specifically, the following condition at line 274 in src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/URIUtils.java sometimes evaluates to true when it should evaluate to false:
if ((b[i] & 0xff) < 0x10) {
b being of type byte[] and b[i] being a negative byte value.
If I change above condition to the one below the failures disappear.
if ((b[i] & 0xff) < 0x10 && b[i] >= 0) {
Steps to reproduce:
cd make/nashorn
ant externals
ant test262parallel -Dtest262-test-sys-prop.test.js.roots=test/nashorn/script/external/test262/test/suite/ch15/15.1/15.1.3/
The last step runs a large enough subset to reproduce the problem. It should terminate without failures, but currently produces 11 failures:
[java] FAILED TESTS
[java] Test(compile, run): test/nashorn/script/external/test262/test/suite/ch15/15.1/15.1.3/15.1.3.3/S15.1.3.3_A2.3_T1.js
[java] test/nashorn/script/external/test262/test/harness/sta.js:286:4 Error: #3629-D7FF
[java] Test(compile, run): test/nashorn/script/external/test262/test/suite/ch15/15.1/15.1.3/15.1.3.3/S15.1.3.3_A2.4_T1.js
[java] test/nashorn/script/external/test262/test/harness/sta.js:286:4 Error: #D800-DBFF
[java] Test(compile, run): test/nashorn/script/external/test262/test/suite/ch15/15.1/15.1.3/15.1.3.3/S15.1.3.3_A2.4_T2.js
[java] test/nashorn/script/external/test262/test/harness/sta.js:286:4 Error: #DC00-DFFF
[java] Test(compile, run): test/nashorn/script/external/test262/test/suite/ch15/15.1/15.1.3/15.1.3.3/S15.1.3.3_A2.5_T1.js
[java] test/nashorn/script/external/test262/test/harness/sta.js:286:4 Error: #E000-FFFF
[java] Test(compile, run): test/nashorn/script/external/test262/test/suite/ch15/15.1/15.1.3/15.1.3.3/S15.1.3.3_A4_T2.js
[java] test/nashorn/script/external/test262/test/harness/sta.js:286:4 Error: #1: http://ru.wikipedia.org/wiki/Юникод
[java] Test(compile, run): test/nashorn/script/external/test262/test/suite/ch15/15.1/15.1.3/15.1.3.4/S15.1.3.4_A2.2_T1.js
[java] test/nashorn/script/external/test262/test/harness/sta.js:286:4 Error: #0080-07FF
[java] Test(compile, run): test/nashorn/script/external/test262/test/suite/ch15/15.1/15.1.3/15.1.3.4/S15.1.3.4_A2.3_T1.js
[java] test/nashorn/script/external/test262/test/harness/sta.js:286:4 Error: #0800-D7FF
[java] Test(compile, run): test/nashorn/script/external/test262/test/suite/ch15/15.1/15.1.3/15.1.3.4/S15.1.3.4_A2.4_T1.js
[java] test/nashorn/script/external/test262/test/harness/sta.js:286:4 Error: #D800-DBFF
[java] Test(compile, run): test/nashorn/script/external/test262/test/suite/ch15/15.1/15.1.3/15.1.3.4/S15.1.3.4_A2.4_T2.js
[java] test/nashorn/script/external/test262/test/harness/sta.js:286:4 Error: #DC00-DFFF
[java] Test(compile, run): test/nashorn/script/external/test262/test/suite/ch15/15.1/15.1.3/15.1.3.4/S15.1.3.4_A2.5_T1.js
[java] test/nashorn/script/external/test262/test/harness/sta.js:286:4 Error: #E000-FFFF
[java] Test(compile, run): test/nashorn/script/external/test262/test/suite/ch15/15.1/15.1.3/15.1.3.4/S15.1.3.4_A4_T2.js
[java] test/nashorn/script/external/test262/test/harness/sta.js:286:4 Error: #1: http://ru.wikipedia.org/wiki/Юникод
[java] Tests run: 160/160 tests, passed: 149 (93.13%), failed: 11. Time elapsed: 1min 35s.
- backported by
-
JDK-8205242 Bitwise AND on byte value sometimes produces wrong result
- Resolved
- relates to
-
JDK-8203628 Optimize (masked) byte memory comparisons on x86
- Resolved