ANR on isRootAvailable() reported by Google Play
GoogleCodeExporter opened this issue · comments
Google Code Exporter commented
What steps will reproduce the problem?
I cannot reproduce it, but the Google Play dev console reports this ANR
DALVIK THREADS:
(mutexes: tll=0 tsl=0 tscl=0 ghl=0)
"main" prio=5 tid=1 TIMED_WAIT
| group="main" sCount=1 dsCount=0 obj=0x40c57460 self=0x1108868
| sysTid=22803 nice=0 sched=0/0 cgrp=default handle=1074107656
| schedstat=( 191488521 62758911 315 ) utm=12 stm=7 core=0
at java.lang.Object.wait(Native Method)
- waiting on <0x41ad6ac8> (a java.lang.VMThread) held by tid=17 (Thread-4752)
at java.lang.Thread.join(Thread.java:822)
at java.lang.Thread.join(Thread.java:778)
at com.stericson.RootTools.execution.Shell.<init>(Shell.java:68)
at com.stericson.RootTools.execution.Shell.startRootShell(Shell.java:309)
at com.stericson.RootTools.execution.Shell.startRootShell(Shell.java:291)
at
com.stericson.RootTools.internal.RootToolsInternalMethods.returnPath(RootToolsIn
ternalMethods.java:82)
at
com.stericson.RootTools.internal.RootToolsInternalMethods.getPath(RootToolsInter
nalMethods.java:1045)
at com.stericson.RootTools.RootTools.getPath(RootTools.java:419)
at
com.stericson.RootTools.internal.RootToolsInternalMethods.findBinary(RootToolsIn
ternalMethods.java:604)
at com.stericson.RootTools.RootTools.findBinary(RootTools.java:269)
at com.stericson.RootTools.RootTools.isRootAvailable(RootTools.java:668)
at
com.benhirashima.unlockwithwifi.common.DeviceAdminIntro.showMessage(DeviceAdminI
ntro.java:97)
at
com.benhirashima.unlockwithwifi.common.DeviceAdminIntro.onResume(DeviceAdminIntr
o.java:64)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1158)
at android.app.Activity.performResume(Activity.java:4607)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2448)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2486)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2000)
at android.app.ActivityThread.access$600(ActivityThread.java:128)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4517)
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:993)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
at dalvik.system.NativeStart.main(Native Method)
What is the expected output? What do you see instead?
NA
What version of the product are you using? On what operating system?
Using version 2.6. OS version not given by Google Play.
Please provide any additional information below.
Original issue reported on code.google.com by benhiras...@gmail.com
on 14 Jun 2013 at 4:45
Google Code Exporter commented
how often is this happening? Also, what is the app that this is in?
Original comment by Stericso...@gmail.com
on 17 Jun 2013 at 3:23
Google Code Exporter commented
it doesn't happen often. the dev console reported it 4 times over about a
month. that accounts for a few thousand users.
the app is called Unlock With Wifi
i didn't post the entire report last time. sorry about that. here's the whole
thing.
DALVIK THREADS:
(mutexes: tll=0 tsl=0 tscl=0 ghl=0)
"main" prio=5 tid=1 TIMED_WAIT
| group="main" sCount=1 dsCount=0 obj=0x40c57460 self=0x1108868
| sysTid=25600 nice=0 sched=0/0 cgrp=default handle=1074107656
| schedstat=( 147041159 58972211 328 ) utm=6 stm=8 core=0
at java.lang.Object.wait(Native Method)
- waiting on <0x41a19e10> (a java.lang.VMThread) held by tid=16 (Thread-1193)
at java.lang.Thread.join(Thread.java:822)
at java.lang.Thread.join(Thread.java:778)
at com.stericson.RootTools.execution.Shell.<init>(Shell.java:68)
at com.stericson.RootTools.execution.Shell.startRootShell(Shell.java:309)
at com.stericson.RootTools.execution.Shell.startRootShell(Shell.java:291)
at
com.stericson.RootTools.internal.RootToolsInternalMethods.returnPath(RootToolsIn
ternalMethods.java:82)
at
com.stericson.RootTools.internal.RootToolsInternalMethods.getPath(RootToolsInter
nalMethods.java:1045)
at com.stericson.RootTools.RootTools.getPath(RootTools.java:419)
at
com.stericson.RootTools.internal.RootToolsInternalMethods.findBinary(RootToolsIn
ternalMethods.java:604)
at com.stericson.RootTools.RootTools.findBinary(RootTools.java:269)
at com.stericson.RootTools.RootTools.isRootAvailable(RootTools.java:668)
at
com.benhirashima.unlockwithwifi.common.DeviceAdminIntro.showMessage(DeviceAdminI
ntro.java:97)
at
com.benhirashima.unlockwithwifi.common.DeviceAdminIntro.onResume(DeviceAdminIntr
o.java:64)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1158)
at android.app.Activity.performResume(Activity.java:4607)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2448)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2486)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2000)
at android.app.ActivityThread.access$600(ActivityThread.java:128)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4517)
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:993)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
at dalvik.system.NativeStart.main(Native Method)
"Thread-1194" prio=5 tid=17 TIMED_WAIT
| group="main" sCount=1 dsCount=0 obj=0x41a139d0 self=0x12f2cc0
| sysTid=25699 nice=0 sched=0/0 cgrp=default handle=19176136
| schedstat=( 14770126 1345249 10 ) utm=0 stm=1 core=0
at java.lang.Object.wait(Native Method)
- waiting on <0x41a13ba0> (a java.lang.VMThread) held by tid=17 (Thread-1194)
at java.lang.Thread.parkFor(Thread.java:1231)
at sun.misc.Unsafe.park(Unsafe.java:323)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos
(AbstractQueuedSynchronizer.java:2061)
at java.util.concurrent.ArrayBlockingQueue.poll(ArrayBlockingQueue.java:360)
at com.apsalar.sdk.ApsalarRetryThread.run(ApThread.java:538)
"Thread-1193" prio=5 tid=16 NATIVE
| group="main" sCount=1 dsCount=0 obj=0x41a19d00 self=0x1380350
| sysTid=25680 nice=0 sched=0/0 cgrp=default handle=20522584
| schedstat=( 329042 0 2 ) utm=0 stm=0 core=3
at libcore.io.Posix.readBytes(Native Method)
at libcore.io.Posix.read(Posix.java:118)
at libcore.io.BlockGuardOs.read(BlockGuardOs.java:149)
at libcore.io.IoBridge.read(IoBridge.java:422)
at java.io.FileInputStream.read(FileInputStream.java:179)
at java.io.InputStreamReader.read(InputStreamReader.java:244)
at java.io.BufferedReader.fillBuf(BufferedReader.java:130)
at java.io.BufferedReader.readLine(BufferedReader.java:354)
at com.stericson.RootTools.execution.Shell$Worker.run(Shell.java:397)
"Binder Thread #3" prio=5 tid=15 NATIVE
| group="main" sCount=1 dsCount=0 obj=0x41adef50 self=0x11f42b0
| sysTid=25655 nice=0 sched=0/0 cgrp=default handle=18958080
| schedstat=( 558875 2560499 4 ) utm=0 stm=0 core=3
at dalvik.system.NativeStart.run(Native Method)
"java.lang.ProcessManager" daemon prio=5 tid=14 WAIT
| group="main" sCount=1 dsCount=0 obj=0x41aded98 self=0x12ccf10
| sysTid=25653 nice=0 sched=0/0 cgrp=default handle=20291104
| schedstat=( 1250957 7524000 13 ) utm=0 stm=0 core=0
at java.lang.Object.wait(Native Method)
- waiting on <0x41adec00> (a java.util.HashMap)
at java.lang.Object.wait(Object.java:364)
at java.lang.ProcessManager.waitForMoreChildren(ProcessManager.java:140)
at java.lang.ProcessManager.watchChildren(ProcessManager.java:105)
at java.lang.ProcessManager.access$000(ProcessManager.java:40)
at java.lang.ProcessManager$1.run(ProcessManager.java:58)
"AsyncTask #1" prio=5 tid=13 WAIT
| group="main" sCount=1 dsCount=0 obj=0x41ac9f20 self=0x1392180
| sysTid=25652 nice=10 sched=0/0 cgrp=bg_non_interactive handle=20005472
| schedstat=( 574249 7340168 11 ) utm=0 stm=0 core=1
at java.lang.Object.wait(Native Method)
- waiting on <0x41aca0b8> (a java.lang.VMThread) held by tid=13 (AsyncTask #1)
at java.lang.Thread.parkFor(Thread.java:1231)
at sun.misc.Unsafe.park(Unsafe.java:323)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Abst
ractQueuedSynchronizer.java:2022)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
"IntentService[TrialAuthService]" prio=5 tid=12 NATIVE
| group="main" sCount=1 dsCount=0 obj=0x41ac84a0 self=0x1372b48
| sysTid=25651 nice=0 sched=0/0 cgrp=default handle=20050624
| schedstat=( 1072375 1223126 8 ) utm=0 stm=0 core=3
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:118)
at android.os.Looper.loop(Looper.java:118)
at android.os.HandlerThread.run(HandlerThread.java:60)
"RefQueueWorker@org.apache.http.impl.conn.tsccm.ConnPoolByRoute@41a5afa8"
daemon prio=5 tid=11 WAIT
| group="main" sCount=1 dsCount=0 obj=0x41a5f790 self=0x138cda8
| sysTid=25616 nice=0 sched=0/0 cgrp=default handle=19681064
| schedstat=( 84667 0 2 ) utm=0 stm=0 core=1
at java.lang.Object.wait(Native Method)
- waiting on <0x41a5e068> (a java.lang.ref.ReferenceQueue)
at java.lang.Object.wait(Object.java:401)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:102)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:73)
at org.apache.http.impl.conn.tsccm.RefQueueWorker.run(RefQueueWorker.java:102)
at java.lang.Thread.run(Thread.java:856)
"ApsalarThread" daemon prio=5 tid=10 TIMED_WAIT
| group="main" sCount=1 dsCount=0 obj=0x419ed7b8 self=0x12c4ad8
| sysTid=25615 nice=0 sched=0/0 cgrp=default handle=19845664
| schedstat=( 18815751 5140002 40 ) utm=1 stm=0 core=0
at java.lang.Object.wait(Native Method)
- waiting on <0x419edae0> (a java.lang.VMThread) held by tid=10 (ApsalarThread)
at java.lang.Thread.parkFor(Thread.java:1231)
at sun.misc.Unsafe.park(Unsafe.java:323)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos
(AbstractQueuedSynchronizer.java:2061)
at java.util.concurrent.ArrayBlockingQueue.poll(ArrayBlockingQueue.java:360)
at com.apsalar.sdk.ApsalarThread.buffering(ApThread.java:427)
at com.apsalar.sdk.ApsalarThread.run(ApThread.java:176)
"Binder Thread #2" prio=5 tid=9 NATIVE
| group="main" sCount=1 dsCount=0 obj=0x419f3648 self=0x1381e20
| sysTid=25611 nice=0 sched=0/0 cgrp=default handle=19893464
| schedstat=( 3958999 2148750 16 ) utm=0 stm=0 core=3
at dalvik.system.NativeStart.run(Native Method)
"Binder Thread #1" prio=5 tid=8 NATIVE
| group="main" sCount=1 dsCount=0 obj=0x419f3148 self=0x1357e28
| sysTid=25610 nice=0 sched=0/0 cgrp=default handle=19120024
| schedstat=( 3414707 4120709 18 ) utm=0 stm=0 core=3
at dalvik.system.NativeStart.run(Native Method)
"FinalizerWatchdogDaemon" daemon prio=5 tid=7 WAIT
| group="main" sCount=1 dsCount=0 obj=0x419efd70 self=0x12eb350
| sysTid=25609 nice=0 sched=0/0 cgrp=default handle=19893400
| schedstat=( 261584 6656083 6 ) utm=0 stm=0 core=3
at java.lang.Object.wait(Native Method)
- waiting on <0x40c5ec98> (a java.lang.Daemons$FinalizerWatchdogDaemon)
at java.lang.Object.wait(Object.java:364)
at java.lang.Daemons$FinalizerWatchdogDaemon.run(Daemons.java:213)
at java.lang.Thread.run(Thread.java:856)
"FinalizerDaemon" daemon prio=5 tid=6 WAIT
| group="main" sCount=1 dsCount=0 obj=0x419efc18 self=0x136ecb0
| sysTid=25608 nice=0 sched=0/0 cgrp=default handle=19866480
| schedstat=( 1460958 205667 8 ) utm=0 stm=0 core=0
at java.lang.Object.wait(Native Method)
- waiting on <0x40c4d5d0> (a java.lang.ref.ReferenceQueue)
at java.lang.Object.wait(Object.java:401)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:102)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:73)
at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:168)
at java.lang.Thread.run(Thread.java:856)
"ReferenceQueueDaemon" daemon prio=5 tid=5 WAIT
| group="main" sCount=1 dsCount=0 obj=0x419efab0 self=0x13950c0
| sysTid=25607 nice=0 sched=0/0 cgrp=default handle=19670184
| schedstat=( 473917 289459 8 ) utm=0 stm=0 core=0
at java.lang.Object.wait(Native Method)
- waiting on <0x40c4d4f8>
at java.lang.Object.wait(Object.java:364)
at java.lang.Daemons$ReferenceQueueDaemon.run(Daemons.java:128)
at java.lang.Thread.run(Thread.java:856)
"Compiler" daemon prio=5 tid=4 VMWAIT
| group="system" sCount=1 dsCount=0 obj=0x419ef9c0 self=0x13596f8
| sysTid=25605 nice=0 sched=0/0 cgrp=default handle...
Original comment by benhiras...@gmail.com
on 17 Jun 2013 at 4:50
Google Code Exporter commented
This issue happened to me as well.
My solution was to put the first request for isRootAvailable into a thread.
This is anyway better, because if the user is prompted for root access the app
will block.
Original comment by tob...@schulz-hess.de
on 4 Jul 2013 at 8:43
Google Code Exporter commented
isRootAvailable is a blocking command, as stated above it should be used within
a thread.
Most static "conveniance" methods within RootTools are blocking and should be
used within a thread.
Original comment by Stericso...@gmail.com
on 4 Jul 2013 at 2:59
- Changed state: WontFix