Skip to content

Compilation to native fails, when quarkus-smallrye-openapi is included #30919

@fedinskiy

Description

@fedinskiy

Describe the bug

I have an application, which uses quarkus-smallrye-openapi dependency. The application works flawlessly in JVM mode, but fails during Performing analysis phase in Native mode. Experimenting shows, that the app fails simply when that dependency is included in pom.

Expected behavior

App should work in both JVM and Native modes

Actual behavior

[2/7] Performing analysis...  []                                                                        (43.2s @ 1.13GB)
  11,264 (91.32%) of 12,334 classes reachable
  14,775 (57.48%) of 25,705 fields reachable
  47,410 (80.62%) of 58,807 methods reachable
     541 classes,     0 fields, and     0 methods registered for reflection

Error: java.util.concurrent.ExecutionException: com.oracle.svm.core.util.VMError$HostedError: java.lang.reflect.InvocationTargetException
com.oracle.graal.pointsto.util.AnalysisError: java.util.concurrent.ExecutionException: com.oracle.svm.core.util.VMError$HostedError: java.lang.reflect.InvocationTargetException
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.AnalysisError.shouldNotReachHere(AnalysisError.java:173)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.AnalysisFuture.ensureDone(AnalysisFuture.java:66)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.heap.ImageHeapScanner.lambda$postTask$12(ImageHeapScanner.java:663)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.CompletionExecutor.executeCommand(CompletionExecutor.java:193)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.CompletionExecutor.lambda$executeService$0(CompletionExecutor.java:177)
	at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1395)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)
Caused by: java.util.concurrent.ExecutionException: com.oracle.svm.core.util.VMError$HostedError: java.lang.reflect.InvocationTargetException
	at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
	at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.AnalysisFuture.ensureDone(AnalysisFuture.java:64)
	... 9 more
Caused by: com.oracle.svm.core.util.VMError$HostedError: java.lang.reflect.InvocationTargetException
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.util.VMError.shouldNotReachHere(VMError.java:72)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.annotation.AnnotationSubstitutionField.readValue(AnnotationSubstitutionField.java:131)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.ameta.AnalysisConstantReflectionProvider.readHostedFieldValue(AnalysisConstantReflectionProvider.java:123)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.heap.SVMImageHeapScanner.readHostedFieldValue(SVMImageHeapScanner.java:122)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.heap.ImageHeapScanner.createImageHeapObject(ImageHeapScanner.java:277)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.heap.ImageHeapScanner.lambda$getOrCreateConstantReachableTask$2(ImageHeapScanner.java:203)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.AnalysisFuture.ensureDone(AnalysisFuture.java:63)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.heap.ImageHeapScanner.getOrCreateConstantReachableTask(ImageHeapScanner.java:215)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.heap.SVMImageHeapScanner.getOrCreateConstantReachableTask(SVMImageHeapScanner.java:95)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.heap.ImageHeapScanner.markConstantReachable(ImageHeapScanner.java:179)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.heap.ImageHeapScanner.onFieldValueReachable(ImageHeapScanner.java:357)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.heap.ImageHeapScanner.lambda$createImageHeapObject$3(ImageHeapScanner.java:284)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.AnalysisFuture.ensureDone(AnalysisFuture.java:63)
	... 9 more
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.annotation.AnnotationSubstitutionField.readValue(AnnotationSubstitutionField.java:114)
	... 22 more
Caused by: java.lang.annotation.AnnotationTypeMismatchException: Incorrectly typed data found for annotation element public abstract org.eclipse.microprofile.openapi.annotations.enums.SchemaType org.eclipse.microprofile.openapi.annotations.media.Schema.type() (Found data of type java.lang.String[ARRAY])
	at java.base/sun.reflect.annotation.AnnotationTypeMismatchExceptionProxy.generateException(AnnotationTypeMismatchExceptionProxy.java:59)
	at java.base/sun.reflect.annotation.AnnotationInvocationHandler.invoke(AnnotationInvocationHandler.java:89)
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.SubstrateAnnotationInvocationHandler.invoke(SubstrateAnnotationInvocationHandler.java:52)
	at jdk.proxy4/jdk.proxy4.$Proxy141.type(Unknown Source)
	... 27 more

How to Reproduce?

  1. git clone git@github.com:fedinskiy/quarkus-test-suite.git -b reproducer/openapi-failure
  2. cd quarkus-test-suite/spring/spring-data
  3. mvn clean verify -Dnative -Dquarkus.platform.version=2.16.1.Final -Pfail
  4. mvn clean verify -Dnative -Dquarkus.platform.version=2.16.1.Final — this compiles, but expectedly fails during test phase due to lack of q/openapi endpoint

Output of uname -a or ver

6.0.18-300.fc37.x86_64

Output of java -version

17.0.6, vendor: GraalVM Community

GraalVM version (if different from Java)

No response

Quarkus version or git rev

2.16.1.Final

Build tool (ie. output of mvnw --version or gradlew --version)

Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63)

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions