markfguerra / GLWallpaperService

Please submit issues and pull requests to the main repository
https://github.com/GLWallpaperService/GLWallpaperService
Apache License 2.0
218 stars 114 forks source link

Animation stops rendering - CPU may be pegged #7

Closed markfguerra closed 13 years ago

markfguerra commented 13 years ago

There are times where the animation of the wallpaper will stop sometimes when the screen is turned on and off. This occurs sporadically and is not consistent to reproduce. You must turn the screen on-off-on-off repeatedly until the issue occurs. Sometimes it occurs on its own.

This has been seen on an HTC Vision (G2) and probably affects other phones as well.

This debug message occurs repeatedly after the image stops animating: 01-15 12:25:37.467: WARN/SharedBufferStack(6984): waitForCondition(LockCondition) timed out (identity=252, status=0). CPU may be pegged. trying again.

After the user selects another wallpaper and some time passes, the wallpaper gets an ANR.

Sig 3 gets sent to the process.

01-15 12:28:44.770: INFO/Process(1299): Sending signal. PID: 6984 SIG: 3
01-15 12:28:44.770: INFO/dalvikvm(6984): threadid=3: reacting to signal 3
01-15 12:28:44.770: INFO/dalvikvm(6984): Wrote stack traces to '/data/anr/traces.txt'

Then it gets Sig 9. In this case net.markguerra.android.glwallpapertest is the particular wallpaper running when the problem occured.

01-15 12:28:45.010: INFO/Process(1299): Sending signal. PID: 6984 SIG: 9
01-15 12:28:45.010: ERROR/ActivityManager(1299): ANR in net.markguerra.android.glwallpapertest
01-15 12:28:45.010: ERROR/ActivityManager(1299): Reason: Executing service net.markguerra.android.glwallpapertest/.MyWallpaperService
01-15 12:28:45.010: ERROR/ActivityManager(1299): Load: 2.18 / 2.68 / 2.76
01-15 12:28:45.010: ERROR/ActivityManager(1299): CPU usage from 464237ms to 33ms ago:
01-15 12:28:45.010: ERROR/ActivityManager(1299):   system_server: 10% = 7% user + 2% kernel / faults: 16275 minor 3 major
01-15 12:28:45.010: ERROR/ActivityManager(1299):   dle.bamboo_free: 6% = 6% user + 0% kernel / faults: 20521 minor
01-15 12:28:45.010: ERROR/ActivityManager(1299):   ndroid.launcher: 2% = 1% user + 0% kernel / faults: 25498 minor
01-15 12:28:45.010: ERROR/ActivityManager(1299):   suspend: 1% = 0% user + 1% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):   aper.livepicker: 0% = 0% user + 0% kernel / faults: 14687 minor
01-15 12:28:45.010: ERROR/ActivityManager(1299):   akmd: 0% = 0% user + 0% kernel / faults: 1384 minor
01-15 12:28:45.010: ERROR/ActivityManager(1299):   mmcqd: 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):   d.process.acore: 0% = 0% user + 0% kernel / faults: 783 minor
01-15 12:28:45.010: ERROR/ActivityManager(1299):   m.android.phone: 0% = 0% user + 0% kernel / faults: 415 minor 2 major
01-15 12:28:45.010: ERROR/ActivityManager(1299):   rild: 0% = 0% user + 0% kernel / faults: 6 minor
01-15 12:28:45.010: ERROR/ActivityManager(1299):   oid.inputmethod: 0% = 0% user + 0% kernel / faults: 316 minor
01-15 12:28:45.010: ERROR/ActivityManager(1299):   onFriendService: 0% = 0% user + 0% kernel / faults: 455 minor
01-15 12:28:45.010: ERROR/ActivityManager(1299):   e.process.gapps: 0% = 0% user + 0% kernel / faults: 356 minor
01-15 12:28:45.010: ERROR/ActivityManager(1299):   events/0: 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):   : 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):   logcat2: 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):   kjournald: 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):   viders.calendar: 0% = 0% user + 0% kernel / faults: 325 minor
01-15 12:28:45.010: ERROR/ActivityManager(1299):   zygote: 0% = 0% user + 0% kernel / faults: 231 minor
01-15 12:28:45.010: ERROR/ActivityManager(1299):   s.gesturesearch: 0% = 0% user + 0% kernel / faults: 375 minor
01-15 12:28:45.010: ERROR/ActivityManager(1299):   panel_on/0: 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):   curcial_wq: 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):   smd_tty: 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):   kjournald: 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):   adbd: 0% = 0% user + 0% kernel / faults: 10 minor
01-15 12:28:45.010: ERROR/ActivityManager(1299):   microp_work_q: 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):   .cooliris.media: 0% = 0% user + 0% kernel / faults: 18 minor
01-15 12:28:45.010: ERROR/ActivityManager(1299):   kswapd0: 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):   usb_mass_storag: 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):   flush-179:0: 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):   rpcrouter: 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):   atmel_wq: 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):   ls_wq/0: 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):   servicemanager: 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):   mediaserver: 0% = 0% user + 0% kernel / faults: 97 minor
01-15 12:28:45.010: ERROR/ActivityManager(1299):   .android.kineto: 0% = 0% user + 0% kernel / faults: 413 minor 1 major
01-15 12:28:45.010: ERROR/ActivityManager(1299):   om.timsu.astrid: 0% = 0% user + 0% kernel / faults: 34 minor
01-15 12:28:45.010: ERROR/ActivityManager(1299):   init: 0% = 0% user + 0% kernel / faults: 2 minor
01-15 12:28:45.010: ERROR/ActivityManager(1299):   nie.geniewidget: 0% = 0% user + 0% kernel / faults: 166 minor
01-15 12:28:45.010: ERROR/ActivityManager(1299):   android.browser: 0% = 0% user + 0% kernel / faults: 81 minor 1 major
01-15 12:28:45.010: ERROR/ActivityManager(1299):   com.layar: 0% = 0% user + 0% kernel / faults: 12 minor
01-15 12:28:45.010: ERROR/ActivityManager(1299):   s:FriendService: 0% = 0% user + 0% kernel / faults: 33 minor
01-15 12:28:45.010: ERROR/ActivityManager(1299):  +glwallpapertest: 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):  +twitter.android: 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):  +facebook.katana: 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):  +flush-179:32: 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):  +sh: 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):  +logcat: 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):  +box.flurry.free: 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):  -flush-179:32: 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):  -sh: 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):  -logcat: 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):  -android.vending: 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):  -glwallpapertest: 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):  -com.svox.pico: 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299):  -equicksearchbox: 0% = 0% user + 0% kernel
01-15 12:28:45.010: ERROR/ActivityManager(1299): TOTAL: 35% = 24% user + 8% kernel + 2% iowait

Here is the relevant part of traces.txt

----- pid 6984 at 2011-01-15 12:28:44 -----
Cmd line: net.markguerra.android.glwallpapertest

DALVIK THREADS:
"main" prio=5 tid=1 WAIT
  | group="main" sCount=1 dsCount=0 s=N obj=0x4001d8c0 self=0xccc8
  | sysTid=6984 nice=0 sched=0/0 cgrp=default handle=-1345017816
  | schedstat=( 245239256 884918214 1241 )
  at java.lang.Object.wait(Native Method)
  - waiting on <0x44d22df8> (a net.rbgrn.android.glwallpaperservice.GLThread$GLThreadManager)
  at java.lang.Object.wait(Object.java:288)
  at net.rbgrn.android.glwallpaperservice.GLThread.surfaceDestroyed(GLWallpaperService.java:734)
  at net.rbgrn.android.glwallpaperservice.GLWallpaperService$GLEngine.onSurfaceDestroyed(GLWallpaperService.java:102)
  at android.service.wallpaper.WallpaperService$Engine.reportSurfaceDestroyed(WallpaperService.java:712)
  at android.service.wallpaper.WallpaperService$Engine.detach(WallpaperService.java:729)
  at android.service.wallpaper.WallpaperService$IWallpaperEngineWrapper.executeMessage(WallpaperService.java:822)
  at com.android.internal.os.HandlerCaller$MyHandler.handleMessage(HandlerCaller.java:61)
  at android.os.Handler.dispatchMessage(Handler.java:99)
  at android.os.Looper.loop(Looper.java:123)
  at android.app.ActivityThread.main(ActivityThread.java:4627)
  at java.lang.reflect.Method.invokeNative(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:521)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
  at dalvik.system.NativeStart.main(Native Method)

"GLThread 10" prio=5 tid=9 NATIVE
  | group="main" sCount=1 dsCount=0 s=N obj=0x44d29de0 self=0x274e58
  | sysTid=6993 nice=0 sched=0/0 cgrp=default handle=2610272
  | schedstat=( 15766326910 23059997632 36620 )
  at com.google.android.gles_jni.EGLImpl.eglSwapBuffers(Native Method)
  at net.rbgrn.android.glwallpaperservice.EglHelper.swap(GLWallpaperService.java:442)
  at net.rbgrn.android.glwallpaperservice.GLThread.guardedRun(GLWallpaperService.java:669)
  at net.rbgrn.android.glwallpaperservice.GLThread.run(GLWallpaperService.java:528)

"Binder Thread #2" prio=5 tid=7 NATIVE
  | group="main" sCount=1 dsCount=0 s=N obj=0x44d1cbe0 self=0x13db10
  | sysTid=6990 nice=0 sched=0/0 cgrp=default handle=1255432
  | schedstat=( 89508069 137329097 482 )
  at dalvik.system.NativeStart.run(Native Method)

"Binder Thread #1" prio=5 tid=6 NATIVE
  | group="main" sCount=1 dsCount=0 s=N obj=0x44d18988 self=0x11f130
  | sysTid=6989 nice=0 sched=0/0 cgrp=default handle=1255368
  | schedstat=( 87677003 140106195 491 )
  at dalvik.system.NativeStart.run(Native Method)

"Compiler" daemon prio=5 tid=5 VMWAIT
  | group="system" sCount=1 dsCount=0 s=N obj=0x44d15348 self=0x127e50
  | sysTid=6988 nice=0 sched=0/0 cgrp=default handle=1207256
  | schedstat=( 217956547 340026868 1114 )
  at dalvik.system.NativeStart.run(Native Method)

"JDWP" daemon prio=5 tid=4 VMWAIT
  | group="system" sCount=1 dsCount=0 s=N obj=0x44d152a0 self=0x1228c8
  | sysTid=6987 nice=0 sched=0/0 cgrp=default handle=1179280
  | schedstat=( 2685547 2380370 14 )
  at dalvik.system.NativeStart.run(Native Method)

"Signal Catcher" daemon prio=5 tid=3 RUNNABLE
  | group="system" sCount=0 dsCount=0 s=N obj=0x44d151e8 self=0x11fca0
  | sysTid=6986 nice=0 sched=0/0 cgrp=default handle=1207192
  | schedstat=( 2777099 7965087 5 )
  at dalvik.system.NativeStart.run(Native Method)

"HeapWorker" daemon prio=5 tid=2 VMWAIT
  | group="system" sCount=1 dsCount=0 s=N obj=0x4376a588 self=0x11fee0
  | sysTid=6985 nice=0 sched=0/0 cgrp=default handle=1207080
  | schedstat=( 47546391 56823725 32 )
  at dalvik.system.NativeStart.run(Native Method)

----- end 6984 -----
markfguerra commented 13 years ago

Related: https://github.com/markfguerra/GLWallpaperService/issues/#issue/11

markfguerra commented 13 years ago

This issue is pretty well mitigated by commit 936d05b.