-
Bug
-
Resolution: Fixed
-
P2
-
8u92, 9
-
b131
-
generic
-
linux
-
Not verified
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8183630 | 8u161 | Andrew Haley | P2 | Resolved | Fixed | b01 |
JDK-8165670 | 8u152 | Andrew Haley | P2 | Closed | Fixed | b01 |
JDK-8192196 | emb-8u161 | Andrew Haley | P2 | Resolved | Fixed | b01 |
For jdk8u test case: hotspot/test/runtime/6925573/SortMethodsTest.java, I witnessed random infrequent null pointer exceptions in javac with aarch64 jdk built from the latest jdk9-hs-comp branch.
Note: This issue is only reproducable under -XX:+UseParallelGC, it does not happens with the default G1GC for jdk9. Also reproducable with the latest aarch64-jdk8u branch. I have also found that turning off instruction scheduling (-XX:-OptoScheduling) or turning off narrow class pointers (-XX:-UseCompressedClassPointers) makes it go away. Also it's easier to reproduce the bug when the memory subsystem is under high pressure. For example, running specjbb2005 with 32 warehouses in parallel. Somehow I suspect this issue is related to the aarch64 weak memory model.
To reproduce the bug, one need to search the jtreg log for each run of the test, something like this:
jtreg -va -nr hotspot/test/runtime/6925573/SortMethodsTest.java &> log
msg=`egrep NullPointerException log`
if [ "$msg" != "" ]; then
cat log;
break;
fi
JTreg error message:
10 x more methods requires 0 x more time
10 x more methods requires 2 x more time
STDERR:
An exception has occurred in the compiler (9-internal). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program and the following diagnostic in your report. Thank you.
java.lang.NullPointerException
at com.sun.tools.javac.comp.Lower.visitReturn(jdk.compiler@9-internal/Lower.java:3635)
at com.sun.tools.javac.tree.JCTree$JCReturn.accept(jdk.compiler@9-internal/JCTree.java:1526)
at com.sun.tools.javac.tree.TreeTranslator.translate(jdk.compiler@9-internal/TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(jdk.compiler@9-internal/Lower.java:2392)
at com.sun.tools.javac.tree.TreeTranslator.translate(jdk.compiler@9-internal/TreeTranslator.java:70)
at com.sun.tools.javac.tree.TreeTranslator.visitBlock(jdk.compiler@9-internal/TreeTranslator.java:167)
at com.sun.tools.javac.comp.Lower.visitBlock(jdk.compiler@9-internal/Lower.java:3608)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(jdk.compiler@9-internal/JCTree.java:1000)
at com.sun.tools.javac.tree.TreeTranslator.translate(jdk.compiler@9-internal/TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(jdk.compiler@9-internal/Lower.java:2392)
at com.sun.tools.javac.tree.TreeTranslator.visitMethodDef(jdk.compiler@9-internal/TreeTranslator.java:150)
at com.sun.tools.javac.comp.Lower.visitMethodDefInternal(jdk.compiler@9-internal/Lower.java:2853)
at com.sun.tools.javac.comp.Lower.visitMethodDef(jdk.compiler@9-internal/Lower.java:2765)
at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(jdk.compiler@9-internal/JCTree.java:852)
at com.sun.tools.javac.tree.TreeTranslator.translate(jdk.compiler@9-internal/TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(jdk.compiler@9-internal/Lower.java:2392)
at com.sun.tools.javac.comp.Lower.visitClassDef(jdk.compiler@9-internal/Lower.java:2538)
at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(jdk.compiler@9-internal/JCTree.java:760)
at com.sun.tools.javac.tree.TreeTranslator.translate(jdk.compiler@9-internal/TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(jdk.compiler@9-internal/Lower.java:2392)
at com.sun.tools.javac.comp.Lower.translate(jdk.compiler@9-internal/Lower.java:2411)
at com.sun.tools.javac.comp.Lower.translateTopLevelClass(jdk.compiler@9-internal/Lower.java:3977)
at com.sun.tools.javac.main.JavaCompiler.desugar(jdk.compiler@9-internal/JavaCompiler.java:1543)
at com.sun.tools.javac.main.JavaCompiler.desugar(jdk.compiler@9-internal/JavaCompiler.java:1401)
at com.sun.tools.javac.main.JavaCompiler.compile(jdk.compiler@9-internal/JavaCompiler.java:940)
at com.sun.tools.javac.api.JavacTaskImpl$1.call(jdk.compiler@9-internal/JavacTaskImpl.java:104)
at com.sun.tools.javac.api.JavacTaskImpl$1.call(jdk.compiler@9-internal/JavacTaskImpl.java:100)
at com.sun.tools.javac.api.JavacTaskImpl.handleExceptions(jdk.compiler@9-internal/JavacTaskImpl.java:135)
at com.sun.tools.javac.api.JavacTaskImpl.doCall(jdk.compiler@9-internal/JavacTaskImpl.java:100)
at com.sun.tools.javac.api.JavacTaskImpl.call(jdk.compiler@9-internal/JavacTaskImpl.java:94)
at SortMethodsTest.main(SortMethodsTest.java:90)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base@9-internal/Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base@9-internal/NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base@9-internal/DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(java.base@9-internal/Method.java:531)
at com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:92)
at java.lang.Thread.run(java.base@9-internal/Thread.java:843)
Note: This issue is only reproducable under -XX:+UseParallelGC, it does not happens with the default G1GC for jdk9. Also reproducable with the latest aarch64-jdk8u branch. I have also found that turning off instruction scheduling (-XX:-OptoScheduling) or turning off narrow class pointers (-XX:-UseCompressedClassPointers) makes it go away. Also it's easier to reproduce the bug when the memory subsystem is under high pressure. For example, running specjbb2005 with 32 warehouses in parallel. Somehow I suspect this issue is related to the aarch64 weak memory model.
To reproduce the bug, one need to search the jtreg log for each run of the test, something like this:
jtreg -va -nr hotspot/test/runtime/6925573/SortMethodsTest.java &> log
msg=`egrep NullPointerException log`
if [ "$msg" != "" ]; then
cat log;
break;
fi
JTreg error message:
10 x more methods requires 0 x more time
10 x more methods requires 2 x more time
STDERR:
An exception has occurred in the compiler (9-internal). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program and the following diagnostic in your report. Thank you.
java.lang.NullPointerException
at com.sun.tools.javac.comp.Lower.visitReturn(jdk.compiler@9-internal/Lower.java:3635)
at com.sun.tools.javac.tree.JCTree$JCReturn.accept(jdk.compiler@9-internal/JCTree.java:1526)
at com.sun.tools.javac.tree.TreeTranslator.translate(jdk.compiler@9-internal/TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(jdk.compiler@9-internal/Lower.java:2392)
at com.sun.tools.javac.tree.TreeTranslator.translate(jdk.compiler@9-internal/TreeTranslator.java:70)
at com.sun.tools.javac.tree.TreeTranslator.visitBlock(jdk.compiler@9-internal/TreeTranslator.java:167)
at com.sun.tools.javac.comp.Lower.visitBlock(jdk.compiler@9-internal/Lower.java:3608)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(jdk.compiler@9-internal/JCTree.java:1000)
at com.sun.tools.javac.tree.TreeTranslator.translate(jdk.compiler@9-internal/TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(jdk.compiler@9-internal/Lower.java:2392)
at com.sun.tools.javac.tree.TreeTranslator.visitMethodDef(jdk.compiler@9-internal/TreeTranslator.java:150)
at com.sun.tools.javac.comp.Lower.visitMethodDefInternal(jdk.compiler@9-internal/Lower.java:2853)
at com.sun.tools.javac.comp.Lower.visitMethodDef(jdk.compiler@9-internal/Lower.java:2765)
at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(jdk.compiler@9-internal/JCTree.java:852)
at com.sun.tools.javac.tree.TreeTranslator.translate(jdk.compiler@9-internal/TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(jdk.compiler@9-internal/Lower.java:2392)
at com.sun.tools.javac.comp.Lower.visitClassDef(jdk.compiler@9-internal/Lower.java:2538)
at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(jdk.compiler@9-internal/JCTree.java:760)
at com.sun.tools.javac.tree.TreeTranslator.translate(jdk.compiler@9-internal/TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(jdk.compiler@9-internal/Lower.java:2392)
at com.sun.tools.javac.comp.Lower.translate(jdk.compiler@9-internal/Lower.java:2411)
at com.sun.tools.javac.comp.Lower.translateTopLevelClass(jdk.compiler@9-internal/Lower.java:3977)
at com.sun.tools.javac.main.JavaCompiler.desugar(jdk.compiler@9-internal/JavaCompiler.java:1543)
at com.sun.tools.javac.main.JavaCompiler.desugar(jdk.compiler@9-internal/JavaCompiler.java:1401)
at com.sun.tools.javac.main.JavaCompiler.compile(jdk.compiler@9-internal/JavaCompiler.java:940)
at com.sun.tools.javac.api.JavacTaskImpl$1.call(jdk.compiler@9-internal/JavacTaskImpl.java:104)
at com.sun.tools.javac.api.JavacTaskImpl$1.call(jdk.compiler@9-internal/JavacTaskImpl.java:100)
at com.sun.tools.javac.api.JavacTaskImpl.handleExceptions(jdk.compiler@9-internal/JavacTaskImpl.java:135)
at com.sun.tools.javac.api.JavacTaskImpl.doCall(jdk.compiler@9-internal/JavacTaskImpl.java:100)
at com.sun.tools.javac.api.JavacTaskImpl.call(jdk.compiler@9-internal/JavacTaskImpl.java:94)
at SortMethodsTest.main(SortMethodsTest.java:90)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base@9-internal/Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base@9-internal/NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base@9-internal/DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(java.base@9-internal/Method.java:531)
at com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:92)
at java.lang.Thread.run(java.base@9-internal/Thread.java:843)
- backported by
-
JDK-8183630 Random infrequent null pointer exceptions in javac
-
- Resolved
-
-
JDK-8192196 Random infrequent null pointer exceptions in javac
-
- Resolved
-
-
JDK-8165670 Random infrequent null pointer exceptions in javac
-
- Closed
-
- relates to
-
JDK-8162496 missing precedence edge for anti_dependence
-
- Resolved
-
-
JDK-8179701 AArch64: Reinstate FP as an allocatable register
-
- Resolved
-