micronaut-projects / micronaut-core

Micronaut Application Framework
http://micronaut.io
Apache License 2.0
6k stars 1.04k forks source link

Micronaut v4.3.1 causing stackoverflow exception on java compilation #10884

Open shrinivas22 opened 4 weeks ago

shrinivas22 commented 4 weeks ago

Expected Behavior

After adding the annotationProcessor("io.micronaut.data:micronaut-data-document-processor") I should be able to use annotations to simplify my mongo access like: https://guides.micronaut.io/latest/micronaut-data-mongodb-synchronous-gradle-java.html .

Actual Behaviour

When compiling I am getting StackOverflow error. That is, :compileJava' throws java.lang.StackOverflowError.

However if I remove either annotationProcessor("io.micronaut.data:micronaut-data-document-processor") or annotationProcessor("io.micronaut:micronaut-inject-java") The compilation does not fail anymore but have other implications.

Steps To Reproduce

I am working on a project that I can't share. So I am having trouble providing Steps to reproduce. I have attached the stacktrace output though. StackOverflowError-stackTrace.txt

Environment Information

Operating System: Windows 11 Enterprise 22631.3593 Micronaut Version: 4.3.1 gradle verison: 8.3 JDK Version:

openjdk version "17.0.7" 2023-04-18
OpenJDK Runtime Environment (build 17.0.7+7-Ubuntu-0ubuntu118.04)
OpenJDK 64-Bit Server VM (build 17.0.7+7-Ubuntu-0ubuntu118.04, mixed mode, sharing)

Build.gradle file: build.gradle-stackOverflow-err.txt

Example Application

No response

Version

4.3.1

altro3 commented 4 weeks ago

did you try just add memory to jvm stack? Like this: -Xss1M . Because error in internal jvm method

shrinivas22 commented 3 weeks ago

@altro3 Thanks for the reply. Increasing the jvm stack did not work and it was sort of expected because this issue seems to be a bit similar to, https://github.com/micronaut-projects/micronaut-core/issues/1778

altro3 commented 3 weeks ago

hm, I don't think that it the same. Look to logs:

Caused by: java.lang.StackOverflowError
        at io.micronaut.annotation.processing.JavaAnnotationMetadataBuilder.readAnnotationRawValues(JavaAnnotationMetadataBuilder.java:242)

Here is infinite recursion in micronaut, but in your logs I see this:

Cause: java.lang.StackOverflowError
    at jdk.compiler/com.sun.tools.javac.code.Symbol$ClassSymbol.complete(Symbol.java:1410)
    at jdk.compiler/com.sun.tools.javac.code.Symbol$ClassSymbol.flags(Symbol.java:1331)
    at jdk.compiler/com.sun.tools.javac.code.Symbol.isInterface(Symbol.java:407)
    at jdk.compiler/com.sun.tools.javac.code.Symbol$MethodSymbol.isOverridableIn(Symbol.java:2125)
    at jdk.compiler/com.sun.tools.javac.code.Symbol$MethodSymbol.overrides(Symbol.java:2092)
    at jdk.compiler/com.sun.tools.javac.code.Symbol$MethodSymbol.overrides(Symbol.java:2068)
    at jdk.compiler/com.sun.tools.javac.model.JavacElements.overrides(JavacElements.java:680)
    at jdk.compiler/com.sun.tools.javac.model.JavacElements.addMembers(JavacElements.java:559)
    at jdk.compiler/com.sun.tools.javac.model.JavacElements.getAllMembers(JavacElements.java:549)
    at jdk.compiler/com.sun.tools.javac.model.JavacElements.getAllMembers(JavacElements.java:88)
    at io.micronaut.annotation.processing.JavaAnnotationMetadataBuilder.readAnnotationDefaultValues(JavaAnnotationMetadataBuilder.java:431)

But maybe you're right.

@dstepanov WDYT?