Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Quarkus 2.10.0] Unable to build native image with XML JAXB extension #3838

Closed
jamesnetherton opened this issue Jun 6, 2022 · 1 comment
Closed
Assignees
Labels
bug Something isn't working
Milestone

Comments

@jamesnetherton
Copy link
Contributor

Whenever camel-quarkus-xml-jaxb is on the classpath it is not possible to successfully produce a native application.

Error: java.util.concurrent.ExecutionException: java.lang.NullPointerException: receiver is null
com.oracle.graal.pointsto.util.AnalysisError: java.util.concurrent.ExecutionException: java.lang.NullPointerException: receiver is null
        at com.oracle.graal.pointsto.util.AnalysisError.shouldNotReachHere(AnalysisError.java:172)
        at com.oracle.graal.pointsto.util.AnalysisFuture.ensureDone(AnalysisFuture.java:66)
        at com.oracle.graal.pointsto.heap.ImageHeapScanner.lambda$postTask$9(ImageHeapScanner.java:611)
        at com.oracle.graal.pointsto.util.CompletionExecutor.executeCommand(CompletionExecutor.java:193)
        at com.oracle.graal.pointsto.util.CompletionExecutor.lambda$executeService$0(CompletionExecutor.java:177)
        at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1426)
        at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
        at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
        at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
        at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
        at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
Caused by: java.util.concurrent.ExecutionException: java.lang.NullPointerException: receiver is null
        at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
        at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
        at com.oracle.graal.pointsto.util.AnalysisFuture.ensureDone(AnalysisFuture.java:64)
        ... 9 more
Caused by: java.lang.NullPointerException: receiver is null
        at jdk.internal.vm.ci/jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider.readFieldValue(HotSpotConstantReflectionProvider.java:175)
        at com.oracle.svm.core.meta.ReadableJavaField.readFieldValue(ReadableJavaField.java:40)
        at com.oracle.svm.hosted.substitute.ComputedValueField.readValue(ComputedValueField.java:312)
        at com.oracle.svm.hosted.ameta.AnalysisConstantReflectionProvider.readHostedFieldValue(AnalysisConstantReflectionProvider.java:128)
        at com.oracle.svm.hosted.heap.SVMImageHeapScanner.readHostedFieldValue(SVMImageHeapScanner.java:121)
        at com.oracle.graal.pointsto.heap.ImageHeapScanner.createImageHeapObject(ImageHeapScanner.java:265)
        at com.oracle.graal.pointsto.heap.ImageHeapScanner.lambda$getOrCreateConstantReachableTask$2(ImageHeapScanner.java:195)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at com.oracle.graal.pointsto.util.AnalysisFuture.ensureDone(AnalysisFuture.java:63)
        at com.oracle.graal.pointsto.heap.ImageHeapScanner.getOrCreateConstantReachableTask(ImageHeapScanner.java:207)
        at com.oracle.svm.hosted.heap.SVMImageHeapScanner.getOrCreateConstantReachableTask(SVMImageHeapScanner.java:94)
        at com.oracle.graal.pointsto.heap.ImageHeapScanner.markConstantReachable(ImageHeapScanner.java:171)
        at com.oracle.graal.pointsto.heap.ImageHeapScanner.onFieldValueReachable(ImageHeapScanner.java:333)
        at com.oracle.graal.pointsto.heap.ImageHeapScanner.lambda$createImageHeapObject$3(ImageHeapScanner.java:272)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at com.oracle.graal.pointsto.util.AnalysisFuture.ensureDone(AnalysisFuture.java:63)

I think it's related to quarkusio/quarkus@3ff5a16 and specifically this code:

@Alias
@RecomputeFieldValue(kind = RecomputeFieldValue.Kind.FromAlias)
private Map<Class<? extends Annotation>, Map<Package, Annotation>> packageCache = new HashMap<>();

Similar to quarkusio/quarkus#3300 (comment), I think creation of the JAXBContext in our xml-jaxb extension messes up the RecomputeFieldValue. It seems to work fine if it's changed to:

@RecomputeFieldValue(kind = RecomputeFieldValue.Kind.NewInstance, declClass = HashMap.class)
@jamesnetherton
Copy link
Contributor Author

Looks like the fix I sent to Quarkus has got things working again. So I'll close this.

@zhfeng zhfeng added this to the 2.10.0 milestone Jun 21, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants