[8u] RFR 8207160: ClassReader::adjustMethodParams can potentially return null if the args list is empty

He Dongbo(JVM) hedongbo at huawei.com
Thu Jun 10 03:24:19 UTC 2021


cc compiler-dev@

Can I get some advice from reviewers?

On 6/8/2021 3:46 PM, He Dongbo(JVM) wrote:
> Gentle ping
>
> Below is the code location of the javac crash, similar to jdk11:
> ==
> src/share/classes/com/sun/tools/javac/jvm/ClassReader.java
> 2080: final int excessSlots = 4;
> 2081: int expectedParameterSlots =
> 2082:     Code.width(sym.type.getParameterTypes()) + excessSlots;     // sym.type.getParameterTypes() == null
>
> On 6/1/2021 2:15 PM, He Dongbo(JVM) wrote:
>> ping?
>>
>> On 5/21/2021 2:36 PM, He Dongbo(JVM) wrote:
>>> Hi,
>>>
>>> Original Bug:
>>>      https://bugs.openjdk.java.net/browse/JDK-8207160
>>>      http://hg.openjdk.java.net/jdk/jdk/rev/e3411e5e473d
>>>
>>> Patch does not apply to 8u cleanly, because the class version in the test is 52, not 55.
>>> 8u webrev: http://cr.openjdk.java.net/~dongbohe/8207160/webrev.00
>>>
>>> Tested with tier1. No regression in tests.
>>>
>>> The test in the patch passes in 8u, but but our customers reproduced this problem on 8u. The error is as follows:
>>> ```java
>>> [INFO] Compiling 347 source files to /opt/build/TransE2EFrontendService/service/nmltrans_common/../../target/classes/nmltrans_common
>>> An exception has occurred in the compiler (1.8.0_242). 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.jvm.Code.width(Code.java:279)
>>>         at com.sun.tools.javac.jvm.ClassReader.initParameterNames(ClassReader.java:2082)
>>>         at com.sun.tools.javac.jvm.ClassReader.readMethod(ClassReader.java:2040)
>>>         at com.sun.tools.javac.jvm.ClassReader.readClass(ClassReader.java:2252)
>>>         at com.sun.tools.javac.jvm.ClassReader.readClassFile(ClassReader.java:2324)
>>>         at com.sun.tools.javac.jvm.ClassReader.fillIn(ClassReader.java:2511)
>>>         at com.sun.tools.javac.jvm.ClassReader.complete(ClassReader.java:2442)
>>>         at com.sun.tools.javac.jvm.ClassReader.access$000(ClassReader.java:76)
>>>         at com.sun.tools.javac.jvm.ClassReader$1.complete(ClassReader.java:240)
>>>         at com.sun.tools.javac.code.Symbol.complete(Symbol.java:574)
>>>         at com.sun.tools.javac.code.Symbol$ClassSymbol.complete(Symbol.java:1037)
>>>         at com.sun.tools.javac.code.Symbol$ClassSymbol.flags(Symbol.java:973)
>>>         at com.sun.tools.javac.comp.Resolve.isAccessible(Resolve.java:369)
>>>         at com.sun.tools.javac.comp.Resolve.isAccessible(Resolve.java:365)
>>>         at com.sun.tools.javac.comp.Resolve.findImmediateMemberType(Resolve.java:1935)
>>>         at com.sun.tools.javac.comp.Resolve.findMemberType(Resolve.java:1990)
>>>         at com.sun.tools.javac.comp.Resolve.findIdentInType(Resolve.java:2174)
>>>         at com.sun.tools.javac.comp.Attr.selectSym(Attr.java:3412)
>>>         at com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:3278)
>>>         at com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:1897)
>>>         at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:576)
>>>         at com.sun.tools.javac.comp.Attr.attribType(Attr.java:638)
>>>         at com.sun.tools.javac.comp.Attr.attribType(Attr.java:631)
>>>         at com.sun.tools.javac.comp.MemberEnter.attribImportType(MemberEnter.java:834)
>>>         at com.sun.tools.javac.comp.MemberEnter.visitImport(MemberEnter.java:558)
>>>         at com.sun.tools.javac.tree.JCTree$JCImport.accept(JCTree.java:571)
>>>         at com.sun.tools.javac.comp.MemberEnter.memberEnter(MemberEnter.java:437)
>>>         at com.sun.tools.javac.comp.MemberEnter.memberEnter(MemberEnter.java:449)
>>>         at com.sun.tools.javac.comp.MemberEnter.visitTopLevel(MemberEnter.java:528)
>>>         at com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:518)
>>>         at com.sun.tools.javac.comp.MemberEnter.memberEnter(MemberEnter.java:437)
>>>         at com.sun.tools.javac.comp.MemberEnter.complete(MemberEnter.java:1038)
>>>         at com.sun.tools.javac.code.Symbol.complete(Symbol.java:574)
>>>         at com.sun.tools.javac.code.Symbol$ClassSymbol.complete(Symbol.java:1037)
>>>         at com.sun.tools.javac.comp.Enter.complete(Enter.java:493)
>>>         at com.sun.tools.javac.comp.Enter.main(Enter.java:471)
>>>         at com.sun.tools.javac.main.JavaCompiler.enterTrees(JavaCompiler.java:982)
>>>         at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:857)
>>>         at com.sun.tools.javac.main.Main.compile(Main.java:523)
>>>         at com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:129)
>>>         at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:138)
>>>         at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess(JavaxToolsCompiler.java:126)
>>>         at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile(JavacCompiler.java:174)
>>>         at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:1075)
>>>         at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:168)
>>>         at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
>>>         at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210)
>>>         at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
>>>         at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
>>>         at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
>>>         at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
>>>         at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
>>>         at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
>>>         at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
>>>         at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
>>>         at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
>>>         at org.apache.maven.cli.MavenCli.execute(MavenCli.java:957)
>>>         at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:289)
>>>         at org.apache.maven.cli.MavenCli.main(MavenCli.java:193)
>>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>>>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>         at java.lang.reflect.Method.invoke(Method.java:498)
>>>         at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
>>>         at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
>>>         at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
>>>         at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
>>> ```
>>>

-- 
thanks,
hedongbo




More information about the compiler-dev mailing list