Skip to content

Native compilation fails on unreachable symbols #46890

@mocenas

Description

@mocenas

Describe the bug

Compiling quarkus app into native image occasionally fails on Error: The heap snapshot verifier discovered a type not marked as reachable. see example
This happens in testSuite and it happens randomly - on different application sometimes on amd64 architecture sometimes on aarch64.
I cannot provide any specific way how to reproduce it, as this seems to happen randomly. But we're experiencing this in our daily tests every day since March 14 2025.

Examples of failures:

04:19:32,806 INFO  mvn: Error: The heap snapshot verifier discovered a type not marked as reachable: AnalysisType<HotSpotDiagnosticMXBean$ThreadDumpFormat[] -> HotSpotType<[Lcom/sun/management/HotSpotDiagnosticMXBean$ThreadDumpFormat;, resolved>, allocated: false, inHeap: false, reachable: false>
04:19:32,806 INFO  mvn: com.oracle.graal.pointsto.util.AnalysisError: The heap snapshot verifier discovered a type not marked as reachable: AnalysisType<HotSpotDiagnosticMXBean$ThreadDumpFormat[] -> HotSpotType<[Lcom/sun/management/HotSpotDiagnosticMXBean$ThreadDumpFormat;, resolved>, allocated: false, inHeap: false, reachable: false>
04:19:32,806 INFO  mvn: 	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.AnalysisError.guarantee(AnalysisError.java:184)
04:19:32,806 INFO  mvn: 	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.heap.HeapSnapshotVerifier$ScanningObserver.ensureTypeScanned(HeapSnapshotVerifier.java:332)
04:19:32,806 INFO  mvn: 	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.heap.HeapSnapshotVerifier$ScanningObserver.forScannedConstant(HeapSnapshotVerifier.java:318)
04:19:32,806 INFO  mvn: 	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.ObjectScanner.scanConstant(ObjectScanner.java:252)
04:19:32,806 INFO  mvn: 	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.ObjectScanner.scanField(ObjectScanner.java:181)
04:19:32,806 INFO  mvn: 	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.ObjectScanner.doScan(ObjectScanner.java:386)
04:19:32,806 INFO  mvn: 	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.ObjectScanner.lambda$scanConstant$6(ObjectScanner.java:257)
04:19:32,806 INFO  mvn: 	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.CompletionExecutor.executeCommand(CompletionExecutor.java:187)
04:19:32,807 INFO  mvn: 	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.CompletionExecutor.lambda$executeService$0(CompletionExecutor.java:171)
04:19:32,807 INFO  mvn: 	at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1423)
04:19:32,807 INFO  mvn: 	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
04:19:32,807 INFO  mvn: 	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
04:19:32,807 INFO  mvn: 	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
04:19:32,807 INFO  mvn: 	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
04:19:32,808 INFO  mvn: 	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
mvn: com.oracle.graal.pointsto.util.AnalysisError: The heap snapshot verifier discovered a type not marked as reachable: AnalysisType<MemoryType[] -> HotSpotType<[Ljava/lang/management/MemoryType;, resolved>, allocated: false, inHeap: false, reachable: false>
mvn: com.oracle.graal.pointsto.util.AnalysisError: The heap snapshot verifier discovered a type not marked as reachable: AnalysisType<HotSpotDiagnosticMXBean$ThreadDumpFormat[] -> HotSpotType<[Lcom/sun/management/HotSpotDiagnosticMXBean$ThreadDumpFormat;, resolved>, allocated: false, inHeap: false, reachable: false>
mvn: com.oracle.graal.pointsto.util.AnalysisError: The heap snapshot verifier discovered a type not marked as reachable: AnalysisType<MemoryType[] -> HotSpotType<[Ljava/lang/management/MemoryType;, resolved>, allocated: false, inHeap: false, reachable: false>

Expected behavior

No response

Actual behavior

No response

How to Reproduce?

No response

Output of uname -a or ver

No response

Output of java -version

No response

Mandrel or GraalVM version (if different from Java)

No response

Quarkus version or git rev

999-SNAPSHOT

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

No response

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions