In easy.reader.free:3.2.4:113.
* FAILURE:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.List com.squareup.haha.perflib.ClassObj.getInstancesList()' on a null object reference
at com.squareup.leakcanary.HeapAnalyzer.findLeakingReference(HeapAnalyzer.java:129)
at com.squareup.leakcanary.HeapAnalyzer.checkForLeak(HeapAnalyzer.java:84)
at com.squareup.leakcanary.internal.HeapAnalyzerService.onHandleIntent(HeapAnalyzerService.java:58)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.os.HandlerThread.run(HandlerThread.java:61)
* Reference Key: 1bfbe623-9fee-4c50-8c58-82e3301e65cb
* Device: smartisan SMARTISAN SM801 icesky_msm8992
* Android Version: 5.1.1 API: 22 LeakCanary: 1.4-beta2 3799172
* Durations: watch=6181ms, gc=922ms, heap dump=6686ms, analysis=2740ms
* Excluded Refs:
| Field: android.view.inputmethod.InputMethodManager.mNextServedView
| Field: android.view.inputmethod.InputMethodManager.mServedView
| Field: android.view.inputmethod.InputMethodManager.mServedInputConnection
| Field: android.view.inputmethod.InputMethodManager.mCurRootView
| Field: android.animation.LayoutTransition$1.val$parent
| Field: android.view.textservice.SpellCheckerSession$1.this$0
| Field: android.support.v7.internal.widget.ActivityChooserModel.mActivityChoserModelPolicy
| Field: android.widget.ActivityChooserModel.mActivityChoserModelPolicy
| Field: android.accounts.AccountManager$AmsTask$Response.this$1
| Field: android.media.MediaScannerConnection.mContext
| Field: android.os.UserManager.mContext
| Field: android.media.AudioManager$1.this$0
| Field: android.widget.Editor$Blink.this$0
| Field: android.view.Choreographer$FrameDisplayEventReceiver.mMessageQueue (always)
| Static field: android.text.TextLine.sCached
| Thread:FinalizerWatchdogDaemon (always)
| Thread:main (always)
| Thread:LeakCanary-Heap-Dump (always)
| Class:java.lang.ref.WeakReference (always)
| Class:java.lang.ref.SoftReference (always)
| Class:java.lang.ref.PhantomReference (always)
| Class:java.lang.ref.Finalizer (always)
| Class:java.lang.ref.FinalizerReference (always)
| Root Class:android.os.Binder (always)
Me too, I encountered this same error.
The version is 1.4-beta2.
Me too.
* FAILURE:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.List com.squareup.haha.perflib.ClassObj.getInstancesList()' on a null object reference
at com.squareup.leakcanary.HeapAnalyzer.findLeakingReference(HeapAnalyzer.java:129)
at com.squareup.leakcanary.HeapAnalyzer.checkForLeak(HeapAnalyzer.java:84)
at com.squareup.leakcanary.internal.HeapAnalyzerService.onHandleIntent(HeapAnalyzerService.java:58)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.os.HandlerThread.run(HandlerThread.java:61)
* Reference Key: 3ca33445-7203-4ef4-8aad-0969ab1c05e3
* Device: samsung samsung SM-T800 chagallwifixx
* Android Version: 5.0.2 API: 21 LeakCanary: 1.4-beta2 3799172
* Durations: watch=5065ms, gc=242ms, heap dump=6202ms, analysis=16207ms
* Excluded Refs:
| Field: android.app.ActivityThread$ActivityClientRecord.nextIdle
| Field: android.view.inputmethod.InputMethodManager.mNextServedView
| Field: android.view.inputmethod.InputMethodManager.mServedView
| Field: android.view.inputmethod.InputMethodManager.mServedInputConnection
| Field: android.view.inputmethod.InputMethodManager.mCurRootView
| Field: android.animation.LayoutTransition$1.val$parent
| Field: android.view.textservice.SpellCheckerSession$1.this$0
| Field: android.support.v7.internal.widget.ActivityChooserModel.mActivityChoserModelPolicy
| Field: android.widget.ActivityChooserModel.mActivityChoserModelPolicy
| Field: android.accounts.AccountManager$AmsTask$Response.this$1
| Field: android.media.MediaScannerConnection.mContext
| Field: android.os.UserManager.mContext
| Field: android.appwidget.AppWidgetHost$Callbacks.this$0
| Field: android.sec.clipboard.ClipboardUIManager.mContext
| Field: android.media.AudioManager$1.this$0
| Field: android.widget.Editor$Blink.this$0
| Field: android.view.Choreographer$FrameDisplayEventReceiver.mMessageQueue (always)
| Static field: android.media.session.MediaSessionLegacyHelper.sInstance
| Static field: android.text.TextLine.sCached
| Static field: android.widget.TextView.mLastHoveredView
| Thread:FinalizerWatchdogDaemon (always)
| Thread:main (always)
| Thread:LeakCanary-Heap-Dump (always)
| Class:java.lang.ref.WeakReference (always)
| Class:java.lang.ref.SoftReference (always)
| Class:java.lang.ref.PhantomReference (always)
| Class:java.lang.ref.Finalizer (always)
| Class:java.lang.ref.FinalizerReference (always)
| Root Class:android.os.Binder (always)
+1
+1 from 1.4-beta2
Similar to https://github.com/square/leakcanary/issues/546.
@jtbuaa @wjyadlx @amatkivskiy @tomrozb @wilsonssss could you upload your heap dumps somewhere and provide a link?
@jrodbx any standard method to get the heap dumps you mentioned?
@jtbuaa adb pull /sdcard/Download/leakcanary-{your package}/{timestamp}.hprof
@jtbuaa any update here?
sorry, not reproduce from then on. and not get the proper hprof file.
I meet the same error with 1.6-SNAPSHOT.
@jtbuaa What is the the proper hprof file as you said and how to get that?
The log details are as flow:
```
In com.letv.android.client:6.12:128.
hprof_file.zip
@ jtbuaa
Is this file?
Seeing the same problem on emulator device (SDK level 25), but it works on physical devices.
* FAILURE in 1.5.1 1be44b3:java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.List com.squareup.haha.perflib.ClassObj.getInstancesList()' on a null object reference
at com.squareup.leakcanary.HeapAnalyzer.findLeakingReference(HeapAnalyzer.java:160)
at com.squareup.leakcanary.HeapAnalyzer.checkForLeak(HeapAnalyzer.java:116)
at com.squareup.leakcanary.internal.HeapAnalyzerService.onHandleIntent(HeapAnalyzerService.java:58)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:68)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.os.HandlerThread.run(HandlerThread.java:61)
* Reference Key: a8940c9c-49c2-469a-83b1-e0935c9bc7d0
* Device: unknown Android Android SDK built for x86_64 sdk_google_phone_x86_64
* Android Version: 7.1.1 API: 25 LeakCanary: 1.5.1 1be44b3
* Durations: watch=5104ms, gc=847ms, heap dump=5953ms, analysis=385ms
* Excluded Refs:
| Field: android.view.textservice.SpellCheckerSession$1.this$0
| Field: android.view.Choreographer$FrameDisplayEventReceiver.mMessageQueue (always)
| Thread:FinalizerWatchdogDaemon (always)
| Thread:main (always)
| Thread:LeakCanary-Heap-Dump (always)
| Class:java.lang.ref.WeakReference (always)
| Class:java.lang.ref.SoftReference (always)
| Class:java.lang.ref.PhantomReference (always)
| Class:java.lang.ref.Finalizer (always)
| Class:java.lang.ref.FinalizerReference (always)
See this issue on real device Android 5.0. Info is below:
In com.qihu.malljd:3.9.1:34.
* FAILURE: java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.List com.squareup.haha.perflib.ClassObj.getInstancesList()' on a null object reference
at com.squareup.leakcanary.HeapAnalyzer.findLeakingReference(HeapAnalyzer.java:129)
at com.squareup.leakcanary.HeapAnalyzer.checkForLeak(HeapAnalyzer.java:84)
at com.squareup.leakcanary.internal.HeapAnalyzerService.onHandleIntent(HeapAnalyzerService.java:58)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.os.HandlerThread.run(HandlerThread.java:61)
* Reference Key: 48a2cd1f-7077-4766-86a9-568e521d8502
* Device: samsung samsung SM-G9008V kltezm
* Android Version: 5.0 API: 21 LeakCanary: 1.4-beta2 3799172
* Durations: watch=5065ms, gc=177ms, heap dump=35537ms, analysis=8013ms
* Excluded Refs:
| Field: android.app.ActivityThread$ActivityClientRecord.nextIdle
| Field: android.view.inputmethod.InputMethodManager.mNextServedView
| Field: android.view.inputmethod.InputMethodManager.mServedView
| Field: android.view.inputmethod.InputMethodManager.mServedInputConnection
| Field: android.view.inputmethod.InputMethodManager.mCurRootView
| Field: android.animation.LayoutTransition$1.val$parent
| Field: android.view.textservice.SpellCheckerSession$1.this$0
| Field: android.support.v7.internal.widget.ActivityChooserModel.mActivityChoserModelPolicy
| Field: android.widget.ActivityChooserModel.mActivityChoserModelPolicy
| Field: android.accounts.AccountManager$AmsTask$Response.this$1
| Field: android.media.MediaScannerConnection.mContext
| Field: android.os.UserManager.mContext
| Field: android.appwidget.AppWidgetHost$Callbacks.this$0
| Field: android.sec.clipboard.ClipboardUIManager.mContext
| Field: android.media.AudioManager$1.this$0
| Field: android.widget.Editor$Blink.this$0
| Field: android.view.Choreographer$FrameDisplayEventReceiver.mMessageQueue (always)
| Static field: android.media.session.MediaSessionLegacyHelper.sInstance
| Static field: android.text.TextLine.sCached
| Static field: android.widget.TextView.mLastHoveredView
| Thread:FinalizerWatchdogDaemon (always)
| Thread:main (always)
| Thread:LeakCanary-Heap-Dump (always)
| Class:java.lang.ref.WeakReference (always)
| Class:java.lang.ref.SoftReference (always)
| Class:java.lang.ref.PhantomReference (always)
| Class:java.lang.ref.Finalizer (always)
| Class:java.lang.ref.FinalizerReference (always)
| Root Class:android.os.Binder (always)
@xinthink @zhangxy1219 can you provide a heap dump?
@jrodbx The hprof file is too big to upload here. I put the file in Google drive. Here is the link
https://drive.google.com/file/d/0B_Jh_UA-a2XmNi1LM2c4R1pabWs/view?usp=sharing
@zhangxy1219 Thanks. Unfortunately, the hprof file you provided is incomplete and therefore cannot be parsed by MAT, VisualVM or hprof-conv. Do you have another sample?
There's some info before that:
System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.hashCode()' on a null object reference
System.err: at com.squareup.haha.perflib.ClassObj.hashCode(ClassObj.java:231)
System.err: at java.util.Collections.secondaryHash(Collections.java:3405)
System.err: at java.util.HashMap.put(HashMap.java:385)
System.err: at java.util.HashSet.add(HashSet.java:95)
System.err: at com.squareup.haha.perflib.ClassObj.addSubclass(ClassObj.java:64)
System.err: at com.squareup.haha.perflib.Snapshot.resolveClasses(Snapshot.java:270)
System.err: at com.squareup.haha.perflib.HprofParser.parse(HprofParser.java:198)
System.err: at com.squareup.leakcanary.HeapAnalyzer.checkForLeak(HeapAnalyzer.java:113)
System.err: at com.squareup.leakcanary.internal.HeapAnalyzerService.onHandleIntent(HeapAnalyzerService.java:58)
System.err: at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
System.err: at android.os.Looper.loop(Looper.java:135)
System.err: at android.os.HandlerThread.run(HandlerThread.java:61)
I meet same issue:
FAILURE in 1.5.1 1be44b3:java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.List com.squareup.haha.perflib.ClassObj.getInstancesList()' on a null object reference
at com.squareup.leakcanary.HeapAnalyzer.findLeakingReference(HeapAnalyzer.java:160)
at com.squareup.leakcanary.HeapAnalyzer.checkForLeak(HeapAnalyzer.java:116)
at com.squareup.leakcanary.internal.HeapAnalyzerService.onHandleIntent(HeapAnalyzerService.java:58)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:67)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.os.HandlerThread.run(HandlerThread.java:61)
I face the same issue in 1.5.4:
FAILURE in 1.5.4 74837f0:java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.List com.squareup.haha.perflib.ClassObj.getInstancesList()' on a null object reference
at com.squareup.leakcanary.HeapAnalyzer.findLeakingReference(HeapAnalyzer.java:161)
at com.squareup.leakcanary.HeapAnalyzer.checkForLeak(HeapAnalyzer.java:117)
at com.squareup.leakcanary.internal.HeapAnalyzerService.onHandleIntent(HeapAnalyzerService.java:58)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:68)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.os.HandlerThread.run(HandlerThread.java:61)
Same issue
LeakCanary version 1.5.4:
In br.ufpe.cin.if710.podcast:1.0:1.
FAILURE in 1.5.4 74837f0:java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.squareup.haha.perflib.ClassObj.getClassName()' on a null object reference
at com.squareup.leakcanary.HeapAnalyzer.findLeakTrace(HeapAnalyzer.java:186)
at com.squareup.leakcanary.HeapAnalyzer.checkForLeak(HeapAnalyzer.java:124)
at com.squareup.leakcanary.internal.HeapAnalyzerService.onHandleIntent(HeapAnalyzerService.java:58)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:67)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.os.HandlerThread.run(HandlerThread.java:61)
Reference Key: b04d18b7-8332-485c-9216-68c1d201aeab
Device: samsung samsung SM-A520F a5y17ltexx
Android Version: 7.0 API: 24 LeakCanary: 1.5.4 74837f0
Durations: watch=5237ms, gc=191ms, heap dump=1803ms, analysis=12999ms
Excluded Refs:
| Field: android.view.inputmethod.InputMethodManager.mNextServedView
| Field: android.view.inputmethod.InputMethodManager.mServedView
| Field: android.view.inputmethod.InputMethodManager.mServedInputConnection
| Field: android.view.textservice.SpellCheckerSession$1.this$0
| Field: com.samsung.android.content.clipboard.SemClipboardManager.mContext
| Field: com.samsung.android.emergencymode.SemEmergencyManager.mContext
| Field: android.view.Choreographer$FrameDisplayEventReceiver.mMessageQueue (always)
| Thread:FinalizerWatchdogDaemon (always)
| Thread:main (always)
| Thread:LeakCanary-Heap-Dump (always)
| Class:java.lang.ref.WeakReference (always)
| Class:java.lang.ref.SoftReference (always)
| Class:java.lang.ref.PhantomReference (always)
| Class:java.lang.ref.Finalizer (always)
| Class:java.lang.ref.FinalizerReference (always)
+1
In com.example.leakcanary:1.0:1.
java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.List com.squareup.haha.perflib.ClassObj.getInstancesList()' on a null object reference
at com.squareup.leakcanary.HeapAnalyzer.findLeakingReference(HeapAnalyzer.java:161)
at com.squareup.leakcanary.HeapAnalyzer.checkForLeak(HeapAnalyzer.java:117)
at com.squareup.leakcanary.internal.HeapAnalyzerService.onHandleIntent(HeapAnalyzerService.java:58)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:67)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:156)
at android.os.HandlerThread.run(HandlerThread.java:61)
+1
* FAILURE in 1.5.4 74837f0:java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.List com.squareup.haha.perflib.ClassObj.getInstancesList()' on a null object reference
at com.squareup.leakcanary.HeapAnalyzer.findLeakingReference(HeapAnalyzer.java:161)
at com.squareup.leakcanary.HeapAnalyzer.checkForLeak(HeapAnalyzer.java:117)
at com.squareup.leakcanary.internal.HeapAnalyzerService.onHandleIntent(HeapAnalyzerService.java:58)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:67)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:163)
at android.os.HandlerThread.run(HandlerThread.java:61)
java.lang.NoClassDefFoundError:Failed resolution of:Lcom/squareup/haha/perflib/io/MemoryMappedFileBuffer;at com.squareup.leakcanary.HeapAnalyzer.checkForLeak(HeapAnalyzer.java:112)
Device: Xiaomi Xiaomi MI 5s capricorn
Android Version: 7.0 API: 24 LeakCanary: 1.5.4 74837f0
Device - Moto G5 plus
Android version: 7.0


I have attached hprof file here for your reference, I have tried opening it in AS and it shows some logs over there.
33b7e34a-b40c-46f6-b3ca-21af3c31d89a_pending.hprof.zip
Thanks @ankitgoyal1009 ! I tried running the provided heap dump and got this:
Could not find weak reference with key 33b7e34a-b40c-46f6-b3ca-21af3c31d89a in [7a3acb00-e71b-4510-a820-2dcb0fbaa508, b2a87bab-aab0-4855-9e1c-d6e034c15575, 10964e02-4bb6-4842-b761-636f422a630c, 4460a058-50d2-4a9b-be82-0f935af24407]
That's definitely surprising.
Side note: In 1.6 the stacktrace will change to better highlight what's going on: #1056
Closing this. We'll get new reports with a distinct stacktrace when this happens again, and can start our investigation with fresh eyes.