8

나는 VOIP 응용 프로그램을 가지고 있으며 엔진 부분은 C (NDK) 레벨입니다. 응용 프로그램의 임의 사용은 "android.os.MessageQueue.NativePollOnce"의 을 가리키는 ANR로 끝납니다 ") ". 안드로이드 NDK-R5응용 프로그램 임의 사용의 ANR

ANR을 사용
는 추적 :

----- pid 13735 at 2013-05-23 15:56:47 ----- 
Cmd line: com.myapp.voip 

DALVIK THREADS: 
(mutexes: tll=0 tsl=0 tscl=0 ghl=0) 

"main" prio=5 tid=1 NATIVE 
    | group="main" sCount=1 dsCount=0 obj=0x41315508 self=0x413058e8 
    | sysTid=13735 nice=0 sched=0/0 cgrp=apps handle=1074442032 
    | schedstat=(23115964360 3706387400 21258) utm=1651 stm=660 core=3 
    #00 pc 0000da70 /system/lib/libc.so (epoll_wait+12) 
    #01 pc 00014899 /system/lib/libutils.so (android::Looper::pollInner(int)+96) 
    #02 pc 00014b01 /system/lib/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+104) 
    #03 pc 00063443 /system/lib/libandroid_runtime.so (android::NativeMessageQueue::pollOnce(_JNIEnv*, int)+22) 
    #04 pc 0001de70 /system/lib/libdvm.so (dvmPlatformInvoke+112) 
    #05 pc 0004d0c3 /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+394) 
    #06 pc 000272a0 /system/lib/libdvm.so 
    #07 pc 0002bba8 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+180) 
    #08 pc 0005faf7 /system/lib/libdvm.so (dvmInvokeMethod(Object*, Method const*, ArrayObject*, ArrayObject*, ClassObject*, bool)+374) 
    #09 pc 0006709d /system/lib/libdvm.so 
    #10 pc 000272a0 /system/lib/libdvm.so 
    #11 pc 0002bba8 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+180) 
    #12 pc 0005f831 /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+272) 
    #13 pc 000496b3 /system/lib/libdvm.so 
    #14 pc 0004c451 /system/lib/libandroid_runtime.so 
    #15 pc 0004d557 /system/lib/libandroid_runtime.so (android::AndroidRuntime::start(char const*, char const*)+390) 
    #16 pc 00000dcf /system/bin/app_process 
    #17 pc 00017123 /system/lib/libc.so (__libc_init+38) 
    #18 pc 00000b34 /system/bin/app_process 
    at android.os.MessageQueue.nativePollOnce(Native Method) 
    at android.os.MessageQueue.next(MessageQueue.java:125) 
    at android.os.Looper.loop(Looper.java:124) 
    at android.app.ActivityThread.main(ActivityThread.java:4898) 
    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:1006) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773) 
    at dalvik.system.NativeStart.main(Native Method) 

스레드에 붙어 2013년 5월 6일 ADB 로그

05-23 15:56:27.704 E/BufferQueue(1900): [com.myapp.voip/com.myapp.voip.SettingsActivity] dequeueBuffer: SurfaceTexture has been abandoned! 

05-23 15:56:27.704 E/SurfaceTextureClient(13735): dequeueBuffer failed (No such device) 
05-23 15:56:27.719 E/ViewRootImpl(13735): Could not lock surface 

05-23 15:56:27.719 E/ViewRootImpl(13735): java.lang.IllegalArgumentException 

05-23 15:56:27.719 E/ViewRootImpl(13735): at android.view.Surface.lockCanvasNative(Native Method) 

05-23 15:56:27.719 E/ViewRootImpl(13735): at android.view.Surface.lockCanvas(Surface.java:88) 

05-23 15:56:27.719 E/ViewRootImpl(13735): at android.view.ViewRootImpl.drawSoftware(ViewRootImpl.java:2312) 

05-23 15:56:27.719 E/ViewRootImpl(13735): at android.view.ViewRootImpl.draw(ViewRootImpl.java:2275) 

05-23 15:56:27.719 E/ViewRootImpl(13735): at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2143) 

05-23 15:56:27.719 E/ViewRootImpl(13735): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1954) 

05-23 15:56:27.719 E/ViewRootImpl(13735): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1110) 

05-23 15:56:27.719 E/ViewRootImpl(13735): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4470) 

05-23 15:56:27.719 E/ViewRootImpl(13735): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725) 

05-23 15:56:27.719 E/ViewRootImpl(13735): at android.view.Choreographer.doCallbacks(Choreographer.java:555) 

05-23 15:56:27.719 E/ViewRootImpl(13735): at android.view.Choreographer.doFrame(Choreographer.java:525) 

05-23 15:56:27.719 E/ViewRootImpl(13735): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711) 

05-23 15:56:27.719 E/ViewRootImpl(13735): at android.os.Handler.handleCallback(Handler.java:615) 

05-23 15:56:27.719 E/ViewRootImpl(13735): at android.os.Handler.dispatchMessage(Handler.java:92) 

05-23 15:56:27.719 E/ViewRootImpl(13735): at android.os.Looper.loop(Looper.java:137) 

05-23 15:56:27.719 E/ViewRootImpl(13735): at android.app.ActivityThread.main(ActivityThread.java:4898) 

05-23 15:56:27.719 E/ViewRootImpl(13735): at java.lang.reflect.Method.invokeNative(Native Method) 

05-23 15:56:27.719 E/ViewRootImpl(13735): at java.lang.reflect.Method.invoke(Method.java:511) 

05-23 15:56:27.719 E/ViewRootImpl(13735): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006) 

05-23 15:56:27.719 E/ViewRootImpl(13735): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773) 

05-23 15:56:27.719 E/ViewRootImpl(13735): at dalvik.system.NativeStart.main(Native Method) 

05-23 15:56:27.869 D/STATUSBAR-NetworkController(2535): onDataActivity: direction=3 

05-23 15:56:27.874 D/STATUSBAR-NetworkController(2535): refreshSignalCluster:2 

05-23 15:56:27.874 D/STATUSBAR-SignalClusterView(2535): mSeparateMobileGroup=0 

05-23 15:56:27.879 D/STATUSBAR-SignalClusterView(2535): mSeparateMobileGroup=0 

05-23 15:56:27.879 D/STATUSBAR-SignalClusterView(2535): mSeparateMobileGroup=0 



05-23 15:56:45.014 D/STATUSBAR-NetworkController(2535): onDataActivity: direction=0 

05-23 15:56:45.019 D/STATUSBAR-NetworkController(2535): refreshSignalCluster:2 

05-23 15:56:45.019 D/STATUSBAR-SignalClusterView(2535): mSeparateMobileGroup=0 

05-23 15:56:45.024 D/STATUSBAR-SignalClusterView(2535): mSeparateMobileGroup=0 

05-23 15:56:45.024 D/STATUSBAR-SignalClusterView(2535): mSeparateMobileGroup=0 

05-23 15:56:46.024 D/STATUSBAR-NetworkController(2535): onDataActivity: direction=2 

05-23 15:56:46.029 D/STATUSBAR-NetworkController(2535): refreshSignalCluster:2 

05-23 15:56:46.029 D/STATUSBAR-SignalClusterView(2535): mSeparateMobileGroup=0 

05-23 15:56:46.029 D/STATUSBAR-SignalClusterView(2535): mSeparateMobileGroup=0 

05-23 15:56:46.029 D/STATUSBAR-SignalClusterView(2535): mSeparateMobileGroup=0 

05-23 15:56:46.674 I/InputReader(2272): Touch event's action is 0x0 (deviceType=0) [pCnt=1, s=0.1171 ] 

05-23 15:56:46.729 I/InputReader(2272): Touch event's action is 0x1 (deviceType=0) [pCnt=1, s=] 

05-23 15:56:46.854 I/InputReader(2272): Touch event's action is 0x0 (deviceType=0) [pCnt=1, s=0.1172 ] 

05-23 15:56:46.899 I/InputReader(2272): Touch event's action is 0x1 (deviceType=0) [pCnt=1, s=] 

05-23 15:56:47.004 I/InputReader(2272): Touch event's action is 0x0 (deviceType=0) [pCnt=1, s=0.1173 ] 

05-23 15:56:47.029 D/STATUSBAR-NetworkController(2535): onDataActivity: direction=0 

05-23 15:56:47.029 D/STATUSBAR-NetworkController(2535): refreshSignalCluster:2 

05-23 15:56:47.029 D/STATUSBAR-SignalClusterView(2535): mSeparateMobileGroup=0 

05-23 15:56:47.029 D/STATUSBAR-SignalClusterView(2535): mSeparateMobileGroup=0 

05-23 15:56:47.029 D/STATUSBAR-SignalClusterView(2535): mSeparateMobileGroup=0 

05-23 15:56:47.044 I/InputReader(2272): Touch event's action is 0x1 (deviceType=0) [pCnt=1, s=] 

05-23 15:56:47.074 I/InputDispatcher(2272): Application is not responding. It has been 20018.8ms since event, 20018.4ms since wait started. Reason: Waiting because there is no touchable window that can handle the event but there is focused application that may eventually add a new window when it finishes starting up. 

05-23 15:56:47.149 I/Process (2272): Sending signal. PID: 13735 SIG: 3 

05-23 15:56:47.149 I/dalvikvm(13735): threadid=3: reacting to signal 3 

05-23 15:56:47.189 I/dalvikvm(13735): Wrote stack traces to '/data/anr/traces.txt' 

05-23 15:56:47.189 I/Process (2272): Sending signal. PID: 2272 SIG: 3 

05-23 15:56:47.189 I/dalvikvm(2272): threadid=3: reacting to signal 3 

05-23 15:56:47.779 E/uevent.c(2272): [email protected]_next_event: poll - nr=-1, fds.revents=0x0 

05-23 15:56:47.869 E/Sensors (2272): poll() failed (Interrupted system call) 

05-23 15:56:47.889 I/Process (2272): Sending signal. PID: 2719 SIG: 3 

05-23 15:56:47.889 I/dalvikvm(2719): threadid=3: reacting to signal 3 

05-23 15:56:47.899 I/dalvikvm(2272): Wrote stack traces to '/data/anr/traces.txt' 

05-23 15:56:47.899 I/Process (2272): Sending signal. PID: 2535 SIG: 3 

05-23 15:56:47.899 I/dalvikvm(2535): threadid=3: reacting to signal 3 

05-23 15:56:47.984 I/dalvikvm(2535): Wrote stack traces to '/data/anr/traces.txt' 

05-23 15:56:47.984 I/Process (2272): Sending signal. PID: 2556 SIG: 3 

05-23 15:56:47.984 I/dalvikvm(2556): threadid=3: reacting to signal 3 

05-23 15:56:47.994 I/dalvikvm(2719): Wrote stack traces to '/data/anr/traces.txt' 

05-23 15:56:47.994 I/Process (2272): Sending signal. PID: 2736 SIG: 3 

05-23 15:56:47.994 I/dalvikvm(2736): threadid=3: reacting to signal 3 

05-23 15:56:48.024 I/dalvikvm(2736): Wrote stack traces to '/data/anr/traces.txt' 

05-23 15:56:48.024 I/Process (2272): Sending signal. PID: 2751 SIG: 3 

05-23 15:56:48.024 I/dalvikvm(2751): threadid=3: reacting to signal 3 

05-23 15:56:48.024 I/dalvikvm(2556): Wrote stack traces to '/data/anr/traces.txt' 

05-23 15:56:48.024 I/Process (2272): Sending signal. PID: 2765 SIG: 3 

05-23 15:56:48.024 I/dalvikvm(2765): threadid=3: reacting to signal 3 

05-23 15:56:48.049 I/dalvikvm(2751): Wrote stack traces to '/data/anr/traces.txt' 

05-23 15:56:48.059 I/dalvikvm(2765): Wrote stack traces to '/data/anr/traces.txt' 

05-23 15:56:48.459 D/dalvikvm(2272): GC_CONCURRENT freed 2075K, 7% free 94406K/100551K, paused 23ms+36ms, total 240ms 

05-23 15:56:48.459 D/dalvikvm(2272): WAIT_FOR_CONCURRENT_GC blocked 201ms 

05-23 15:56:48.594 D/dalvikvm(2272): WAIT_FOR_CONCURRENT_GC blocked 0ms 

05-23 15:56:48.824 D/dalvikvm(2272): GC_EXPLICIT freed 737K, 6% free 94612K/100551K, paused 5ms+38ms, total 227ms 

05-23 15:56:49.409 W/PowerManagerService(2272): Timer 0x3->0x3|0x0 

05-23 15:56:49.409 D/PowerManagerService(2272): setTimeoutLocked::SmartSleep : after589500 

05-23 15:56:49.414 E/android.os.Debug(2272): [email protected] > dumpstate -k -t -z -d -o /data/log/dumpstate_app_anr 

확실하지있는 편집 이 점. 여기에 무슨 일이 있습니까?

+0

ActivityManager ANR 보고서에서 logcat 행을 추가 할 수 있습니까? – mik3y

+0

Mabye 두 개의 스레드 "실행중인 스레드"와 주 스레드 (Runnable, BroadcastReceiver의 onReceive, Handler의 handleMessage에서 실행할 수 있음)의 중요 섹션을 잠그기 위해 동일한 객체를 사용합니다. –

+0

SurfaceView로 무엇을하려고하는지 알려주실 수 있습니까? – Phileo99

답변

0

당신의 문제에 대한 가장 가능한 대답은 당신이 원시 코드로 표면을 가지고 무엇인가하고 있다고 생각합니다.

특히 SIP 화상 통화 기능을 개발하는 경우.

네이티브 코드가 캔바스/표면 잠금을 올바르게 처리하지 못하면이 문제가 발생합니다.

여기에 소스 코드를 표시 할 수 없기 때문에 원시 코드 또는 다른 Java 스레드의 코드에 표면이 액세스하고 있는지 확인하는 것이 좋습니다.

+0

@ Robin 내가 JAVA/NATIVE에서 표면을 사용하지 않기 전에 말했듯이 내가 사용하는 활동은 캔버스가 아닙니다. – NitZRobotKoder