I have the same issue right now. Did you find a solution to your problem? I've posted a question (Crash in /system/lib/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)) in the *android-ndk*group that describes more details.
Any help on this would be much appreciated, Bart Op dinsdag 25 oktober 2011 21:21:23 UTC+2 schreef Shridhar Basty het volgende: > > Hello, > > I'm working on fixing a system_server crash that was found to occur > randomly. By following the logs and the stack trace, I find a > situation that appears impossible to occur under normal circumstances. > The function "pollOnce()" in Looper.cpp is called with its pointer > arguments set to NULL. A SIGSEGV occurs in the body of the function > where an attempt is made to access one of the pointers (outFd). The > function arguments are never modified and checks are in place to > access pointers only if they are non-NULL. But it seens that this > pointer has changed and acquired a non-NULL invalid address. An access > in the subsequent code causes a SIGSEGV. I'm unable to see how outFd > got modified - unless a child function (pollInner) returned by not > restoring the registers correctly. From the disassembly, r6 is to hold > the backup of outFd and we see in the logs it is not null. The other > two pointer args (held in r8 and r7) seem to be proper (NULL). > > I've provided the details below. I'm still trying to find an > explanation for this problem and will appreciate any suggestions. > > Regards, > Shridhar > > LOGS: > I/DEBUG ( 108): pid: 184, tid: 225 >>> system_server <<< > I/DEBUG ( 108): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault > addr 20000000 > I/DEBUG ( 108): r0 fffffffe r1 00000001 r2 6d344489 r3 > 00000000 > I/DEBUG ( 108): r4 00388bf0 r5 ffffffff r6 20000000 r7 > 00000000 > I/DEBUG ( 108): r8 00000000 r9 00000014 10 31359f10 fp > 2b498a30 > I/DEBUG ( 108): ip 68127cb0 sp 31459b38 lr 6f904a1c pc > 68121b0a cpsr 60000030 > > STACK TRACE WITH RELEVANT CODE INLINED: > #00 pc 00021b0a /system/lib/libutils.so > android::Looper::pollOnce(int, int*, int*, void**) > frameworks/base/libs/utils/Looper.cpp:182 > > 159 int Looper::pollOnce(int timeoutMillis, int* outFd, int* > outEvents, void** outData) { > 160 int result = 0; > 161 for (;;) { > 162 while (mResponseIndex < mResponses.size()) { > 163 const Response& response = > mResponses.itemAt(mResponseIndex++); > 164 if (! response.request.callback) { > 165 #if DEBUG_POLL_AND_WAKE > 166 LOGD("%p ~ pollOnce - returning signalled > identifier %d: " > 167 "fd=%d, events=0x%x, data=%p", this, > 168 response.request.ident, > response.request.fd, > 169 response.events, > response.request.data); > 170 #endif > 171 if (outFd != NULL) *outFd = > response.request.fd; > 172 if (outEvents != NULL) *outEvents = > response.events; > 173 if (outData != NULL) *outData = > response.request.data; > 174 return response.request.ident; > 175 } > 176 } > 177 > 178 if (result != 0) { > 179 #if DEBUG_POLL_AND_WAKE > 180 LOGD("%p ~ pollOnce - returning result %d", this, > result); > 181 #endif > <HERE> 182 if (outFd != NULL) *outFd = 0; > 183 if (outEvents != NULL) *outEvents = NULL; > 184 if (outData != NULL) *outData = NULL; > 185 return result; > 186 } > 187 > 188 result = pollInner(timeoutMillis); > 189 } > 190 } > > #01 pc 00046b04 /system/lib/libandroid_runtime.so > android::Looper::pollOnce(int) > frameworks/base/include/utils/Looper.h:101 > > 99 int pollOnce(int timeoutMillis, int* outFd, int* > outEvents, > void** outData); > 100 inline int pollOnce(int timeoutMillis) { > <HERE> 101 return pollOnce(timeoutMillis, NULL, NULL, > NULL); > 102 } > > #02 pc 00046b0e /system/lib/libandroid_runtime.so > _ZN7androidL38android_os_MessageQueue_nativePollOnceEP7_JNIEnvP8_jobjectii > frameworks/base/core/jni/android_os_MessageQueue.cpp:118 > > 115 static void android_os_MessageQueue_nativePollOnce(JNIEnv* > env, > jobject obj, > 116 jint ptr, jint timeoutMillis) { > 117 NativeMessageQueue* nativeMessageQueue = > reinterpret_cast<NativeMessageQueue*>(ptr); > <HERE> 118 nativeMessageQueue->pollOnce(timeoutMillis); > 119 } > > #03 pc 00011ef4 /system/lib/libdvm.so > dvmPlatformInvoke > dalvik/vm/arch/arm/CallEABI.S:243 > > #04 pc 00043754 /system/lib/libdvm.so > dvmCallJNIMethod_virtualNoRef > system/core/include/cutils/atomic-arm.h:25 > -- -- unsubscribe: android-porting+unsubscr...@googlegroups.com website: http://groups.google.com/group/android-porting --- You received this message because you are subscribed to the Google Groups "android-porting" group. To unsubscribe from this group and stop receiving emails from it, send an email to android-porting+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.