Skip to content

kotlin.KotlinNullPointerException as Shark analyzes a hprof file #2781

@jordanterry

Description

@jordanterry

Description

Leak Canary will regularly fail to parse a leak dump and then report a "Heap analysis failure".

Steps to Reproduce

Unable to provide reliable steps immediately, will attempt to reproduce.

kotlin.KotlinNullPointerException 	
at shark.AndroidObjectInspectors$COMPOSITION_IMPL$inspect$1.invoke(AndroidObjectInspectors.kt:786) 
at shark.AndroidObjectInspectors$COMPOSITION_IMPL$inspect$1.invoke(AndroidObjectInspectors.kt:783) 	
at shark.ObjectReporter.whenInstanceOf(ObjectReporter.kt:61) 	
at shark.AndroidObjectInspectors$COMPOSITION_IMPL.inspect(AndroidObjectInspectors.kt:785) 	
at shark.HeapAnalyzer.inspectObjects(HeapAnalyzer.kt:517) 	
at shark.HeapAnalyzer.findLeaks(HeapAnalyzer.kt:282) 	
at shark.HeapAnalyzer.analyzeGraph(HeapAnalyzer.kt:253) 	
at shark.HeapAnalyzer.analyze$shark(HeapAnalyzer.kt:217) 	
at shark.HeapAnalyzer.analyze(HeapAnalyzer.kt:166) 	
at leakcanary.internal.AndroidDebugHeapAnalyzer.analyzeHeap(AndroidDebugHeapAnalyzer.kt:156) 	
at leakcanary.internal.AndroidDebugHeapAnalyzer.runAnalysisBlocking(AndroidDebugHeapAnalyzer.kt:59) 	
at leakcanary.internal.AndroidDebugHeapAnalyzer.runAnalysisBlocking$default(AndroidDebugHeapAnalyzer.kt:46) 	
at leakcanary.internal.HeapAnalyzerWorker.doWork(HeapAnalyzerWorker.kt:18) 	
at androidx.work.Worker$1.run(Worker.java:86) 	
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 	
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644) 	
at java.lang.Thread.run(Thread.java:1012)
Leak Canary 2.12 image

Image

Shark CLI failure:

❯ shark-cli --hprof ~/Downloads/leakcanaryleak.hprof analyze
====================================
HEAP ANALYSIS FAILED

You can report this failure at https://github.com/square/leakcanary/issues
Please provide the stacktrace, metadata and the heap dump file.
====================================
STACKTRACE

kotlin.KotlinNullPointerException
        at shark.AndroidObjectInspectors$COMPOSITION_IMPL$inspect$1.invoke(AndroidObjectInspectors.kt:792)
        at shark.AndroidObjectInspectors$COMPOSITION_IMPL$inspect$1.invoke(AndroidObjectInspectors.kt:789)
        at shark.ObjectReporter.whenInstanceOf(ObjectReporter.kt:61)
        at shark.AndroidObjectInspectors$COMPOSITION_IMPL.inspect(AndroidObjectInspectors.kt:791)
        at shark.HeapAnalyzer.inspectObjects(HeapAnalyzer.kt:517)
        at shark.HeapAnalyzer.findLeaks(HeapAnalyzer.kt:282)
        at shark.HeapAnalyzer.analyzeGraph(HeapAnalyzer.kt:253)
        at shark.HeapAnalyzer.analyze$shark(HeapAnalyzer.kt:217)
        at shark.HeapAnalyzer.analyze(HeapAnalyzer.kt:166)
        at shark.HeapAnalyzer.analyze(HeapAnalyzer.kt:104)
        at shark.AnalyzeCommand$Companion.analyze(AnalyzeCommand.kt:36)
        at shark.AnalyzeCommand.run(AnalyzeCommand.kt:16)
        at com.github.ajalt.clikt.parsers.Parser.parse(Parser.kt:139)
        at com.github.ajalt.clikt.parsers.Parser.parse(Parser.kt:14)
        at com.github.ajalt.clikt.core.CliktCommand.parse(CliktCommand.kt:215)
        at com.github.ajalt.clikt.core.CliktCommand.parse$default(CliktCommand.kt:212)
        at com.github.ajalt.clikt.core.CliktCommand.main(CliktCommand.kt:230)
        at com.github.ajalt.clikt.core.CliktCommand.main(CliktCommand.kt:253)
        at shark.MainKt.main(Main.kt:13)
====================================
METADATA

Build.VERSION.SDK_INT: -1
Build.MANUFACTURER: Unknown
LeakCanary version: Unknown
Analysis duration: 2424 ms
Heap dump file path: /Users/jterry/Downloads/leakcanaryleak.hprof
Heap dump timestamp: 1761603202245
====================================

Expected behavior: A hprof should be analysed and a leak discovered.

Version Information

  • LeakCanary version: 2.1.2 | Shark CLI 2.14
  • Android OS version: 15
  • Gradle version: 8.15

Additional Information

Working on it!

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions