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 [email protected]
To unsubscribe from this group, send email to
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to