I'm seeing a failure in those checks compiling some other code, with a stack trace like the one below.
The fix is likely to make RichDiagnosticFormatter handle recursion, by keeping state for recursive calls in a stack. This is a regression with
I'm working on a minimal repro and a fix.
java.lang.IllegalStateException
at jdk.compiler/com.sun.tools.javac.util.RichDiagnosticFormatter.enter(RichDiagnosticFormatter.java:107)
at jdk.compiler/com.sun.tools.javac.util.RichDiagnosticFormatter.format(RichDiagnosticFormatter.java:139)
at jdk.compiler/com.sun.tools.javac.util.RichDiagnosticFormatter.format(RichDiagnosticFormatter.java:72)
at com.google.devtools.build.buildjar.javac.FormattedDiagnostic$Listener.report(FormattedDiagnostic.java:158)
at jdk.compiler/com.sun.tools.javac.util.Log.writeDiagnostic(Log.java:763)
at jdk.compiler/com.sun.tools.javac.util.Log$DefaultDiagnosticHandler.report(Log.java:732)
at jdk.compiler/com.sun.tools.javac.util.Log.report(Log.java:683)
at jdk.compiler/com.sun.tools.javac.util.AbstractLog.warning(AbstractLog.java:164)
at jdk.compiler/com.sun.tools.javac.jvm.ClassReader$AnnotationDeproxy.visitEnumAttributeProxy(ClassReader.java:2160)
at jdk.compiler/com.sun.tools.javac.jvm.ClassReader$EnumAttributeProxy.accept(ClassReader.java:1958)
at jdk.compiler/com.sun.tools.javac.jvm.ClassReader$AnnotationDeproxy.deproxy(ClassReader.java:2102)
at jdk.compiler/com.sun.tools.javac.jvm.ClassReader$AnnotationDeproxy.visitArrayAttributeProxy(ClassReader.java:2183)
at jdk.compiler/com.sun.tools.javac.jvm.ClassReader$ArrayAttributeProxy.accept(ClassReader.java:1984)
at jdk.compiler/com.sun.tools.javac.jvm.ClassReader$AnnotationDeproxy.deproxy(ClassReader.java:2102)
at jdk.compiler/com.sun.tools.javac.jvm.ClassReader$AnnotationDeproxy.deproxyCompound(ClassReader.java:2057)
at jdk.compiler/com.sun.tools.javac.jvm.ClassReader$AnnotationDeproxy.deproxyCompoundList(ClassReader.java:2045)
at jdk.compiler/com.sun.tools.javac.jvm.ClassReader$AnnotationCompleter.run(ClassReader.java:2262)
at jdk.compiler/com.sun.tools.javac.comp.Annotate.flush(Annotate.java:195)
at jdk.compiler/com.sun.tools.javac.code.ClassFinder.complete(ClassFinder.java:322)
at jdk.compiler/com.sun.tools.javac.code.Symbol.complete(Symbol.java:703)
at jdk.compiler/com.sun.tools.javac.code.Symbol$ClassSymbol.complete(Symbol.java:1471)
at jdk.compiler/com.sun.tools.javac.code.Symbol.apiComplete(Symbol.java:709)
at jdk.compiler/com.sun.tools.javac.code.Type$ClassType.className(Type.java:1122)
at jdk.compiler/com.sun.tools.javac.code.Type$ClassType.toString(Type.java:1086)
at java.base/java.lang.String.valueOf(String.java:4546)
at java.base/java.lang.StringBuilder.append(StringBuilder.java:173)
at jdk.compiler/com.sun.tools.javac.code.Attribute$Compound.toString(Attribute.java:242)
at java.base/java.lang.String.valueOf(String.java:4546)
at java.base/java.lang.StringBuilder.append(StringBuilder.java:173)
at jdk.compiler/com.sun.tools.javac.code.Printer.printAnnotations(Printer.java:203)
at jdk.compiler/com.sun.tools.javac.code.Printer.printAnnotations(Printer.java:194)
at jdk.compiler/com.sun.tools.javac.code.Printer.visitClassType(Printer.java:236)
at jdk.compiler/com.sun.tools.javac.util.RichDiagnosticFormatter$RichPrinter.visitClassType(RichDiagnosticFormatter.java:417)
at jdk.compiler/com.sun.tools.javac.util.RichDiagnosticFormatter$RichPrinter.visitClassType(RichDiagnosticFormatter.java:377)
at jdk.compiler/com.sun.tools.javac.code.Type$ClassType.accept(Type.java:1052)
at jdk.compiler/com.sun.tools.javac.code.Printer.visit(Printer.java:136)
at jdk.compiler/com.sun.tools.javac.code.Printer.visitTypes(Printer.java:108)
at jdk.compiler/com.sun.tools.javac.code.Printer.printMethodArgs(Printer.java:341)
at jdk.compiler/com.sun.tools.javac.util.RichDiagnosticFormatter$RichPrinter.visitMethodSymbol(RichDiagnosticFormatter.java:474)
at jdk.compiler/com.sun.tools.javac.util.RichDiagnosticFormatter$RichPrinter.visitMethodSymbol(RichDiagnosticFormatter.java:377)
at jdk.compiler/com.sun.tools.javac.code.Symbol$MethodSymbol.accept(Symbol.java:2314)
at jdk.compiler/com.sun.tools.javac.code.Printer.visit(Printer.java:147)
at jdk.compiler/com.sun.tools.javac.util.AbstractDiagnosticFormatter.formatArgument(AbstractDiagnosticFormatter.java:209)
at jdk.compiler/com.sun.tools.javac.util.AbstractDiagnosticFormatter.formatArguments(AbstractDiagnosticFormatter.java:167)
at jdk.compiler/com.sun.tools.javac.util.BasicDiagnosticFormatter.formatMessage(BasicDiagnosticFormatter.java:111)
at jdk.compiler/com.sun.tools.javac.util.BasicDiagnosticFormatter.formatMeta(BasicDiagnosticFormatter.java:186)
at jdk.compiler/com.sun.tools.javac.util.BasicDiagnosticFormatter.formatDiagnostic(BasicDiagnosticFormatter.java:100)
at jdk.compiler/com.sun.tools.javac.util.AbstractDiagnosticFormatter.format(AbstractDiagnosticFormatter.java:123)
at jdk.compiler/com.sun.tools.javac.util.RichDiagnosticFormatter.format(RichDiagnosticFormatter.java:143)
at jdk.compiler/com.sun.tools.javac.util.RichDiagnosticFormatter.format(RichDiagnosticFormatter.java:72)
- relates to
-
JDK-8355065 ConcurrentModificationException in RichDiagnosticFormatter
-
- Resolved
-
- links to
-
Review(master) openjdk/jdk/25105