Looks like a "classic" two-thread deadlock.

Thread "main" holding one monitor, and waiting for thread 
"client_id_fetcher" while trying to lock another:

"main" prio=5 tid=1 MONITOR
| group="main" sCount=1 dsCount=0 obj=0x40e70a78 self=0x57017010
| sysTid=24172 nice=0 sched=0/0 cgrp=apps handle=1074714076
| state=S schedstat=( 427580000 1139226000 1925 ) utm=17 stm=25 core=0
at com.google.android.gms.analytics.ae.void U(java.lang.String)((null):~-1)
                                      
 com.google.android.gms.analytics.Logger getLogger()
- waiting to lock <0x413413a0> held by tid=11 (client_id_fetcher)

And thread "client_id_fetcher" waiting for thread "main":

"client_id_fetcher" prio=5 tid=11 MONITOR
| group="main" sCount=1 dsCount=0 obj=0x4133ed30 self=0x58adfbc8
| sysTid=24186 nice=0 sched=0/0 cgrp=apps handle=1487037720
| state=S schedstat=( 284614000 1254896000 1744 ) utm=1 stm=27 core=0
at 
com.google.android.gms.analytics.GoogleAnalytics.com.google.android.gms.analytics.GoogleAnalytics
 
getInstance(android.content.Context)((null):~-1)
                                                    
com.google.android.gms.analytics.GoogleAnalytics eY()
                                                    void 
a(com.google.android.gms.analytics.aa)
                                                    int ai(java.lang.String)
                                                    void setDryRun(boolean)
                                                    void 
enableAutoActivityReports(android.app.Application)
                                                    void 
reportActivityStart(android.app.Activity)
                                                    
com.google.android.gms.analytics.Tracker newTracker(int)
                                                    
com.google.android.gms.analytics.Tracker 
a(com.google.android.gms.analytics.Tracker)
                                                    void 
a(com.google.android.gms.analytics.GoogleAnalytics$a)
                                                    void u(java.util.Map)
- waiting to lock <0x4133ba20> held by tid=1 (main)

Like this:

void something_in_main() {

   synchronized (lockObject1) {
        synchronized (lockObject2) {
            ........
        }
    }
}

and

void something_in_client_id_fetcher() {

   synchronized (lockObject2) {
        synchronized (lockObject1) {
            ........
        }
    }
}


( I don't work for Google or know anything about GA, but a deadlock is a 
deadlock )

-- K

On Monday, December 22, 2014 7:07:11 AM UTC+3, yccheok wrote:
>
> I get huge number of ANR 
>
> ANR keyDispatchingTimedOut
>
> after using latest Google Play Services Library.
>
> The problematic code is
>
> com.google.android.gms.analytics.GoogleAnalytics 
> getInstance(android.content.Context)
>
> This can be seen in the proguard retrace log
>
> ----- pid 24172 at 2014-12-22 10:17:52 -----
> Cmd line: org.yccheok.jstock.gui
>
> DALVIK THREADS:
> (mutexes: tll=0 tsl=0 tscl=0 ghl=0)
>
> "main" prio=5 tid=1 MONITOR
> | group="main" sCount=1 dsCount=0 obj=0x40e70a78 self=0x57017010
> | sysTid=24172 nice=0 sched=0/0 cgrp=apps handle=1074714076
> | state=S schedstat=( 427580000 1139226000 1925 ) utm=17 stm=25 core=0
> at com.google.android.gms.analytics.ae.void U(java.lang.String)((null):~-1)
>                                       
>  com.google.android.gms.analytics.Logger getLogger()
> - waiting to lock <0x413413a0> held by tid=11 (client_id_fetcher)
> at com.google.android.gms.analytics.ae.void V(java.lang.String)((null):-1)
> at 
> com.google.android.gms.analytics.GoogleAnalytics.com.google.android.gms.analytics.GoogleAnalytics
>  
> getInstance(android.content.Context)((null):-1)
>                                                     
> com.google.android.gms.analytics.GoogleAnalytics eY()
>                                                     void 
> a(com.google.android.gms.analytics.aa)
>                                                     int 
> ai(java.lang.String)
>                                                     void setDryRun(boolean)
>                                                     void 
> enableAutoActivityReports(android.app.Application)
>                                                     void 
> reportActivityStart(android.app.Activity)
>                                                     
> com.google.android.gms.analytics.Tracker newTracker(int)
>                                                     
> com.google.android.gms.analytics.Tracker 
> a(com.google.android.gms.analytics.Tracker)
>                                                     void 
> a(com.google.android.gms.analytics.GoogleAnalytics$a)
>                                                     void u(java.util.Map)
> at com.google.android.gms.analytics.GoogleAnalytics.void eZ()((null):-1)
> at com.google.android.gms.analytics.GoogleAnalytics.<init>((null):-1)
> at com.google.android.gms.analytics.GoogleAnalytics.<init>((null):-1)
> at 
> com.google.android.gms.analytics.GoogleAnalytics.com.google.android.gms.analytics.GoogleAnalytics
>  
> getInstance(android.content.Context)((null):-1)
>                                                     
> com.google.android.gms.analytics.GoogleAnalytics eY()
>                                                     void 
> a(com.google.android.gms.analytics.aa)
>                                                     int 
> ai(java.lang.String)
>                                                     void setDryRun(boolean)
>                                                     void 
> enableAutoActivityReports(android.app.Application)
>                                                     void 
> reportActivityStart(android.app.Activity)
>                                                     
> com.google.android.gms.analytics.Tracker newTracker(int)
>                                                     
> com.google.android.gms.analytics.Tracker 
> a(com.google.android.gms.analytics.Tracker)
>                                                     void 
> a(com.google.android.gms.analytics.GoogleAnalytics$a)
>                                                     void u(java.util.Map)
> at org.yccheok.jstock.gui.Utils.com.google.android.gms.analytics.Tracker 
> getTracker()(SourceFile:532)
> at org.yccheok.jstock.gui.JStockFragmentActivity.void 
> onCreate(android.os.Bundle)(SourceFile:92)
> at android.app.Activity.performCreate(Activity.java:5165)
> at 
> android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1103)
> at 
> android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2419)
> at 
> android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2520)
> at android.app.ActivityThread.access$600(ActivityThread.java:162)
> at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1366)
> at android.os.Handler.dispatchMessage(Handler.java:99)
> at android.os.Looper.loop(Looper.java:158)
> at android.app.ActivityThread.main(ActivityThread.java:5751)
> at java.lang.reflect.Method.invokeNative(Native Method)
> at java.lang.reflect.Method.invoke(Method.java:511)
> at 
> com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1083)
> at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:850)
> at dalvik.system.NativeStart.main(Native Method)
>
> "client_id_fetcher" prio=5 tid=11 MONITOR
> | group="main" sCount=1 dsCount=0 obj=0x4133ed30 self=0x58adfbc8
> | sysTid=24186 nice=0 sched=0/0 cgrp=apps handle=1487037720
> | state=S schedstat=( 284614000 1254896000 1744 ) utm=1 stm=27 core=0
> at 
> com.google.android.gms.analytics.GoogleAnalytics.com.google.android.gms.analytics.GoogleAnalytics
>  
> getInstance(android.content.Context)((null):~-1)
>                                                     
> com.google.android.gms.analytics.GoogleAnalytics eY()
>                                                     void 
> a(com.google.android.gms.analytics.aa)
>                                                     int 
> ai(java.lang.String)
>                                                     void setDryRun(boolean)
>                                                     void 
> enableAutoActivityReports(android.app.Application)
>                                                     void 
> reportActivityStart(android.app.Activity)
>                                                     
> com.google.android.gms.analytics.Tracker newTracker(int)
>                                                     
> com.google.android.gms.analytics.Tracker 
> a(com.google.android.gms.analytics.Tracker)
>                                                     void 
> a(com.google.android.gms.analytics.GoogleAnalytics$a)
>                                                     void u(java.util.Map)
> - waiting to lock <0x4133ba20> held by tid=1 (main)
> at com.google.android.gms.analytics.ae.void U(java.lang.String)((null):-1)
>                                       
>  com.google.android.gms.analytics.Logger getLogger()
> at com.google.android.gms.analytics.ae.void V(java.lang.String)((null):-1)
> at com.google.android.gms.analytics.k.java.lang.String eq()((null):-1)
> at com.google.android.gms.analytics.k$1.void run()((null):-1)
>
> [ snip ]
>
> ----- end 24172 -----
>
> Can Google kindly look into this issues?
>
> Thanks.
>

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to android-developers+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to