Your advice helps me a lot. Thanks
On 11 February 2014 01:15, Nobu Games <[email protected]> wrote: > I guess the solution is trying to debug the heck out of it, that's also > what the OP was basically asking for. The causes in her/his case will most > likely be too different to be useful for you, since I think it's related to > multithreading deadlocks due to bad locking / synchronization. I had > similar problems in my last game, because I screwed up at some places. > Proper thread synchronization can be subtly difficult to implement. > > What you could do is running your app using a debugger. As soon as the app > gets unresponsive, look into the list of currently active threads that > belong to your app process (in Eclipse that would be in the debug view in > the debug perspective). As far as I recall, locked up threads are marked as > "waiting". You should be able to see the currently executing method names > and complete call stacks per thread. Their locations in code may give you > hints what's causing the problem. You also may have to pause your app in > order to avoid that crash happening. > > > > On Monday, February 10, 2014 3:48:02 AM UTC-6, Landry shuai wrote: >> >> I have met the same problem. Do you have a solution for this problem? >> >> On Friday, March 22, 2013 12:09:25 AM UTC+8, Mind wrote: >>> >>> Hi, >>> >>> I have implemented a 2D game using SurfaceView + GameThread (does >>> nothing atm) + ViewThread pattern that calls a draw method on the >>> SurfaceView. >>> >>> However, it randomly stops redrawing the screen. "Randomly" means it >>> can take up to several minutes of play to freeze. Other things like >>> timers/etc on the Activity itself continue to work. >>> >>> See the tombstone data below. I really don't know how to read this. It >>> seems that the call to RoundRectShape() is the problem while drawing the >>> rectangle from touchDown to touchUp. However, it works fine for some >>> minutes of random touching before crashing. >>> >>> I would appreciate it if someone with more knowledge could give me some >>> idea on HOW to debug this. Thanks! >>> >>> Here is the tombstone data: >>> >>> "main" prio=5 tid=1 WAIT >>> | group="main" sCount=1 dsCount=0 obj=0x41b809a0 self=0x40091010 >>> | sysTid=31227 nice=0 sched=0/0 cgrp=apps handle=1075041244 >>> | state=S schedstat=( 0 0 0 ) utm=67 stm=29 core=1 >>> at java.lang.Object.wait(Native Method) >>> - waiting on <0x41b80da0> (a java.lang.VMThread) held by tid=1 (main) >>> 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:159) >>> at java.util.concurrent.locks.AbstractQueuedSynchronizer. >>> parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:810) >>> at java.util.concurrent.locks.AbstractQueuedSynchronizer. >>> acquireQueued(AbstractQueuedSynchronizer.java:843) >>> at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire( >>> AbstractQueuedSynchronizer.java:1173) >>> at java.util.concurrent.locks.ReentrantLock$NonfairSync. >>> lock(ReentrantLock.java:183) >>> at java.util.concurrent.locks.ReentrantLock.lock( >>> ReentrantLock.java:259) >>> at android.view.SurfaceView.updateWindow(SurfaceView.java:497) >>> at android.view.SurfaceView.onWindowVisibilityChanged( >>> SurfaceView.java:231) >>> at android.view.View.dispatchWindowVisibilityChanged(View.java:7544) >>> at android.view.ViewGroup.dispatchWindowVisibilityChange >>> d(ViewGroup.java:1039) >>> at android.view.ViewGroup.dispatchWindowVisibilityChange >>> d(ViewGroup.java:1039) >>> at android.view.ViewGroup.dispatchWindowVisibilityChange >>> d(ViewGroup.java:1039) >>> at android.view.ViewGroup.dispatchWindowVisibilityChange >>> d(ViewGroup.java:1039) >>> at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1211) >>> at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:989) >>> at android.view.ViewRootImpl$TraversalRunnable.run( >>> ViewRootImpl.java:4351) >>> at android.view.Choreographer$CallbackRecord.run( >>> Choreographer.java:749) >>> at android.view.Choreographer.doCallbacks(Choreographer.java:562) >>> at android.view.Choreographer.doFrame(Choreographer.java:532) >>> at android.view.Choreographer$FrameDisplayEventReceiver.run( >>> Choreographer.java:735) >>> at android.os.Handler.handleCallback(Handler.java:725) >>> at android.os.Handler.dispatchMessage(Handler.java:92) >>> at android.os.Looper.loop(Looper.java:137) >>> at android.app.ActivityThread.main(ActivityThread.java:5041) >>> 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:793) >>> at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) >>> at dalvik.system.NativeStart.main(Native Method) >>> >>> "Thread-3900" prio=5 tid=12 TIMED_WAIT >>> | group="main" sCount=1 dsCount=0 obj=0x4242c4c8 self=0x73c2f6c0 >>> | sysTid=31253 nice=0 sched=0/0 cgrp=apps handle=1924236928 >>> | state=S schedstat=( 0 0 0 ) utm=62 stm=44 core=1 >>> at java.lang.VMThread.sleep(Native Method) >>> at java.lang.Thread.sleep(Thread.java:1031) >>> at java.lang.Thread.sleep(Thread.java:1013) >>> at com.rhs.wordsearch.Threads.GameThread.run(GameThread.java:62) >>> >>> "Thread-3899" prio=5 tid=11 NATIVE >>> | group="main" sCount=1 dsCount=0 obj=0x4242c270 self=0x73c2f270 >>> | sysTid=31252 nice=0 sched=0/0 cgrp=apps handle=1925462672 >>> | state=R schedstat=( 0 0 0 ) utm=8667 stm=274 core=1 >>> #00 pc 0007f9cc /system/lib/libskia.so (SkPath::Iter:: >>> consumeDegenerateSegments()+60) >>> #01 pc 0007fbcc /system/lib/libskia.so (SkPath::Iter::next(SkPoint*)+ >>> 12) >>> #02 pc 0006e014 /system/lib/libskia.so (SkEdgeBuilder::build(SkPath >>> const&, SkIRect const*, int)+328) >>> #03 pc 00091e58 /system/lib/libskia.so (sk_fill_path(SkPath const&, >>> SkIRect const*, SkBlitter*, int, int, int, SkRegion const&)+56) >>> #04 pc 0008ec40 /system/lib/libskia.so (SkScan::AntiFillPath(SkPath >>> const&, SkRegion const&, SkBlitter*, bool)+776) >>> #05 pc 0008ef9c /system/lib/libskia.so (SkScan::AntiFillPath(SkPath >>> const&, SkRasterClip const&, SkBlitter*)+204) >>> #06 pc 0006be64 /system/lib/libskia.so >>> #07 pc 00060ae8 /system/lib/libskia.so (SkCanvas::drawPath(SkPath >>> const&, SkPaint const&)+520) >>> #08 pc 0006a9ff /system/lib/libandroid_runtime.so >>> #09 pc 0001e290 /system/lib/libdvm.so (dvmPlatformInvoke+112) >>> #10 pc 0004d411 /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int >>> const*, JValue*, Method const*, Thread*)+396) >>> #11 pc 00000214 /dev/ashmem/dalvik-jit-code-cache (deleted) >>> at android.graphics.Canvas.native_drawPath(Native Method) >>> at android.graphics.Canvas.drawPath(Canvas.java:1021) >>> at android.graphics.drawable.shapes.RoundRectShape.draw( >>> RoundRectShape.java:78) >>> at android.graphics.drawable.ShapeDrawable.onDraw( >>> ShapeDrawable.java:209) >>> at android.graphics.drawable.ShapeDrawable.draw( >>> ShapeDrawable.java:224) >>> at com.rhs.wordsearch.Components.Highlight.draw(Highlight.java:230) >>> at com.rhs.wordsearch.Views.WordSearchSurfaceView.onDraw( >>> WordSearchSurfaceView.java:283) >>> at com.rhs.wordsearch.Threads.ViewThread.run(ViewThread.java:69) >>> >>> >>> -- > 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 a topic in the > Google Groups "Android Developers" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/android-developers/0VuqnrYe7b0/unsubscribe > . > To unsubscribe from this group and all its topics, send an email to > [email protected]. > For more options, visit https://groups.google.com/groups/opt_out. > -- Best Regards, Landry -- 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/groups/opt_out.

