Android 5.0.1 crash: java.lang.VerifyError: com.google.android.gms.common.internal.v$a

1,166 views
Skip to first unread message

b0b

unread,
Oct 30, 2016, 11:51:19 AM10/30/16
to Firebase Google Group
Android app compiled with Firebase client libs v9.6.0.

I got a few automated crash reports with this stack trace:

java.lang.VerifyError: com.google.android.gms.common.internal.v$a
at com.google.android.gms.common.internal.v.a(Unknown Source)
at com.google.android.gms.common.internal.l.d(Unknown Source)
at com.google.android.gms.common.internal.l.b(Unknown Source)
at com.google.android.gms.common.internal.l.zza(Unknown Source)
at com.google.android.gms.b.ns$c.j(Unknown Source)
at com.google.android.gms.b.ns$c.a(Unknown Source)
at com.google.android.gms.b.ns.a(Unknown Source)
at com.google.android.gms.b.ns.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:145)
at android.os.HandlerThread.run(HandlerThread.java:61)


It happened for 7 unique users (multiple times for each users) over a period of 13 days, for an app that has a large install base.
Most users have Samsung devices (SM-G935F, GT-I9505) on Android 5.0.1.
There is also an ocurrence on the Lenovo TAB S8-50F also on Android 5.0.1.

This crash happen soon after app startup, some time after FirebaseApp.getApps() has been called (and
returning a non empty list).


b0b

unread,
Oct 30, 2016, 12:02:57 PM10/30/16
to Firebase Google Group
Also seen on Sony D2114 running Android 4.4.2 and some Samsung devices running 6.0.1.

Ian Barber

unread,
Oct 31, 2016, 3:37:42 PM10/31/16
to Firebase Google Group
Thanks! We're taking a look at this now.

As a note: please upgrade your SDK. 9.8.0 is the current verison, and 9.6.0 was superceded by 9.6.1 to fix an issue with extra permissions being manifest merged for developer using the Maps libraries. 

Ian Barber

unread,
Oct 31, 2016, 6:20:22 PM10/31/16
to Firebase Google Group
Hi Bob, 

Could you possible post a stack trace along with the specific device & version it occurred on? That will help deobfuscating the stack our side. 

Thanks!

Ian

b0b

unread,
Nov 1, 2016, 11:42:30 AM11/1/16
to Firebase Google Group
For each crash my app logs the last 100 logcat lines generated by the app (think of it as debug traces).

Each line contain the tread name and id in which is was generated.

For this crash, something very weird is going on: I can see many lines that should execute in the Main Thread (thread name = "main", thread id = 1)
happening in a thread named "GoogleApiHandler" with a random thread id.
And it happens for lines that for which it is impossible that they are executed in a thread other than the main thread.

So something is definitely broken on these crashing devices and I do not think it is worth to waste more time on it.
That would not be the first time that a totally uncomprehensible and "impossible" crash happen.

Do you happen to know what this thread named "GoogleApiHandler" is ?

Ian Barber

unread,
Nov 1, 2016, 12:49:43 PM11/1/16
to fireba...@googlegroups.com
GoogleApiHandler is a thread used for managing the callbacks from the before delivering them through to the Task callbacks you register. Its basically part of the plumbing that handles the resolution of functions that involve the Google Play services APK. 

--
You received this message because you are subscribed to a topic in the Google Groups "Firebase Google Group" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/firebase-talk/7_j125_UfpU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to firebase-talk+unsubscribe@googlegroups.com.
To post to this group, send email to fireba...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/firebase-talk/2591f9bf-43c6-4f86-8b47-9e19a854e24f%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

b0b

unread,
Nov 1, 2016, 2:44:25 PM11/1/16
to Firebase Google Group
Thanks for the info.

After further inspection of my logging code, I identified a bug that would log the wrong thread name for a logged line.
It has nothing to do with the issue discussed in the first post of course.

So to get back to it, here's a few stack traces with app compiled with Firebase 9.6.0 (next app update will use 9.8.0).
Stack traces are nearly identical.

///////////

Samsung GT-I9505 / Android 5.0.1
Samsung SM-G935f / Android 5.0.2


java.lang.VerifyError: com.google.android.gms.common.internal.v$a
at com.google.android.gms.common.internal.v.a(Unknown Source)
at com.google.android.gms.common.internal.l.d(Unknown Source)
at com.google.android.gms.common.internal.l.b(Unknown Source)
at com.google.android.gms.common.internal.l.zza(Unknown Source)
at com.google.android.gms.b.ns$c.j(Unknown Source)
at com.google.android.gms.b.ns$c.a(Unknown Source)
at com.google.android.gms.b.ns.a(Unknown Source)
at com.google.android.gms.b.ns.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:145)
at android.os.HandlerThread.run(HandlerThread.java:61)


///

Samsung SM-G935F, Android 6.0.1


java.lang.VerifyError: com.google.android.gms.common.internal.v$a
at com.google.android.gms.common.internal.v.a(Unknown Source)
at com.google.android.gms.common.internal.l.d(Unknown Source)
at com.google.android.gms.common.internal.l.b(Unknown Source)
at com.google.android.gms.common.internal.l.zza(Unknown Source)
at com.google.android.gms.b.ns$c.j(Unknown Source)
at com.google.android.gms.b.ns$c.a(Unknown Source)
at com.google.android.gms.b.ns.a(Unknown Source)
at com.google.android.gms.b.ns.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:158)
at android.os.HandlerThread.run(HandlerThread.java:61)

////////////////

Lenovo TAB S8-50F, Android 5.0.1

java.lang.VerifyError: com.google.android.gms.common.internal.v$a
at com.google.android.gms.common.internal.v.a(Unknown Source)
at com.google.android.gms.common.internal.l.d(Unknown Source)
at com.google.android.gms.common.internal.l.b(Unknown Source)
at com.google.android.gms.common.internal.l.zza(Unknown Source)
at com.google.android.gms.b.ns$c.j(Unknown Source)
at com.google.android.gms.b.ns$c.a(Unknown Source)
at com.google.android.gms.b.ns.a(Unknown Source)
at com.google.android.gms.b.ns.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:135)
at android.os.HandlerThread.run(HandlerThread.java:61)

///////////////

Sony D2114, Android 4.4.2

java.lang.VerifyError: com/google/android/gms/common/internal/v$a
at com.google.android.gms.common.internal.v.a(Unknown Source)
at com.google.android.gms.common.internal.l.d(Unknown Source)
at com.google.android.gms.common.internal.l.b(Unknown Source)
at com.google.android.gms.common.internal.l.zza(Unknown Source)
at com.google.android.gms.b.ns$c.j(Unknown Source)
at com.google.android.gms.b.ns$c.a(Unknown Source)
at com.google.android.gms.b.ns.a(Unknown Source)
at com.google.android.gms.b.ns.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:136)
at android.os.HandlerThread.run(HandlerThread.java:61)

Ian Barber

unread,
Nov 3, 2016, 7:00:46 PM11/3/16
to Firebase Google Group
Having a look - I'm wondering if these have been re-proguarded, as they don't match any mappings I can find. The play services SDK proguard rules should have been pulled in with the aars, but I wonder if you could try retracing. 

Either way I'm hoping 9.8 will resolve any issue, but right now I'm not totally sure what is occurring. 

b0b

unread,
Nov 4, 2016, 1:41:31 PM11/4/16
to Firebase Google Group
I deployed a beta version of my app using Firebase 9.8 and I still see it happening for some (rare) users.

In particular, for a user for which that VerifyError happens (see stack trace after this one), I also see this crash from him (on app startup), which may be related or give a clue ? :
(note that I never saw that IllegalArgumentException under Firebase 9.6 !)

Firebase 9.8.0 / Samsung Verizon SM-G935V / Android 6.0.1 / Verizon/hero2qltevzw/hero2qltevzw:6.0.1/MMB29M/G935VVRU2APG5:user/release-keys

java.lang.RuntimeException: Unable to start receiver com.google.firebase.iid.FirebaseInstanceIdInternalReceiver: java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=com.google.firebase.INSTANCE_ID_EVENT VirtualScreenParam=Params{mDisplayId=-1, null, mFlags=0x00000000)} (has extras) }
at android.app.ActivityThread.handleReceiver(ActivityThread.java:3641)
at android.app.ActivityThread.access$2000(ActivityThread.java:221)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1876)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:102)
Caused by: java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=com.google.firebase.INSTANCE_ID_EVENT VirtualScreenParam=Params{mDisplayId=-1, null, mFlags=0x00000000)} (has extras) }
at android.app.ContextImpl.validateServiceIntent(ContextImpl.java:1293)
at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1331)
at android.app.ContextImpl.startService(ContextImpl.java:1306)
at android.content.ContextWrapper.startService(ContextWrapper.java:606)
at android.content.ContextWrapper.startService(ContextWrapper.java:606)
at android.support.v4.a.n.a_(SourceFile:91)
at com.google.firebase.iid.FirebaseInstanceIdInternalReceiver.d(Unknown Source)
at com.google.firebase.iid.FirebaseInstanceIdInternalReceiver.a(Unknown Source)
at com.google.firebase.iid.FirebaseInstanceIdInternalReceiver.onReceive(Unknown Source)
at android.app.ActivityThread.handleReceiver(ActivityThread.java:3634)
... 9 more
java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=com.google.firebase.INSTANCE_ID_EVENT VirtualScreenParam=Params{mDisplayId=-1, null, mFlags=0x00000000)} (has extras) }
at android.app.ContextImpl.validateServiceIntent(ContextImpl.java:1293)
at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1331)
at android.app.ContextImpl.startService(ContextImpl.java:1306)
at android.content.ContextWrapper.startService(ContextWrapper.java:606)
at android.content.ContextWrapper.startService(ContextWrapper.java:606)
at android.support.v4.a.n.a_(SourceFile:91)
at com.google.firebase.iid.FirebaseInstanceIdInternalReceiver.d(Unknown Source)
at com.google.firebase.iid.FirebaseInstanceIdInternalReceiver.a(Unknown Source)
at com.google.firebase.iid.FirebaseInstanceIdInternalReceiver.onReceive(Unknown Source)
at android.app.ActivityThread.handleReceiver(ActivityThread.java:3634)
at android.app.ActivityThread.access$2000(ActivityThread.java:221)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1876)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)

////////////////////

The SAME user also has this crash (a Firebase 9.8 trace this time):

Stack Trace
java.lang.VerifyError: com.google.android.gms.common.internal.r$a
at com.google.android.gms.common.internal.r.a(Unknown Source)
at com.google.android.gms.common.internal.j.d(Unknown Source)
at com.google.android.gms.common.internal.j.b(Unknown Source)
at com.google.android.gms.common.internal.j.zza(Unknown Source)
at com.google.android.gms.b.og$a.o(Unknown Source)
at com.google.android.gms.b.og$a.a(Unknown Source)
at com.google.android.gms.b.og.b(Unknown Source)
at com.google.android.gms.b.og.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:158)
at android.os.HandlerThread.run(HandlerThread.java:61)


And if I try to unobfuscate it with Proguard and my mapping.txt it gives:

java.lang.VerifyError: com.google.android.gms.common.internal.r$a
at com.google.android.gms.common.internal.zzm.zza(Unknown Source)
                                              zza
                                              zza
                                              zza
at com.google.android.gms.common.internal.zze.zzavb(Unknown Source)
                                              zzd
at com.google.android.gms.common.internal.zze.zzjy(Unknown Source)
                                              zzh
                                              zzb
                                              zzl
                                              zzb
at com.google.android.gms.common.internal.zze.zza(Unknown Source)
                                              zza
                                              zza
at com.google.android.gms.internal.zzrh$zza.connect(Unknown Source)
at com.google.android.gms.internal.zzrh$zza.zza(Unknown Source)
                                            zzatm
                                            zza
                                            zzac
                                            zzb
                                            zzi
                                            zzc
                                            zza
at com.google.android.gms.internal.zzrh.zzath(Unknown Source)
                                        zzb
                                        zzb
                                        zza
                                        zzb
at com.google.android.gms.internal.zzrh.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:98)




b0b

unread,
Nov 4, 2016, 1:43:39 PM11/4/16
to Firebase Google Group
Also of note regarding the latest stack trace is that the user is running Xposed.
So who knows what breakage could exist on his system...

Ian Barber

unread,
Nov 8, 2016, 3:28:06 PM11/8/16
to Firebase Google Group
Thanks, that's all helpful. 

The stack trace looks like its related to instance ID as well. I'll raise this one with the engineers working on instance ID and see if we can get anywhere further!

Ian Barber

unread,
Nov 14, 2016, 1:06:58 PM11/14/16
to Firebase Google Group
Quick update: nothing definitive (as we can't definitively repro the case either), but the code paths involved have been written in the next version of the library, so hopefully the next SDK update will resolve this.

Thanks,

Ian
Reply all
Reply to author
Forward
0 new messages