【发布时间】:2013-07-10 11:16:51
【问题描述】:
谁能告诉我这个回溯日志表明了什么。我在我的代码中产生了一个线程。但我无法理解这有什么问题。
线程创建代码
pthread_create(&tid, &attr, (void*()(void))threadFunc, arg);
>I/DEBUG ( 6144): backtrace:
>I/DEBUG ( 6144): #00 pc 00014260 /system/lib/libc.so (dlmalloc+643)
>I/DEBUG ( 6144): #01 pc 00016f7f /system/lib/libc.so (malloc+10)
>I/DEBUG ( 6144): #02 pc 00061797 /system/lib/libdvm.so (dvmJdwpPostLocationEvent(JdwpState*, JdwpLocation const*, unsigned long long, int)+124)
I/DEBUG ( 6144): #03 pc 000438e1 /system/lib/libdvm.so (dvmDbgPostLocationEvent(Method const*, int, Object*, int)+76)
I/DEBUG ( 6144): #04 pc 0002b940 /system/lib/libdvm.so (dvmCheckBefore+504)
I/DEBUG ( 6144): #05 pc 0001e37c /system/lib/libdvm.so
I/DEBUG ( 6144): #06 pc 0002bba8 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+180)
I/DEBUG ( 6144): #07 pc 0005f831 /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+272)
I/DEBUG ( 6144): #08 pc 0005f85b /system/lib/libdvm.so (dvmCallMethod(Thread*, Method const*, Object*, JValue*, ...)+20)
I/DEBUG ( 6144): #09 pc 00054413 /system/lib/libdvm.so
I/DEBUG ( 6144): #10 pc 00012e00 /system/lib/libc.so (__thread_entry+48)
I/DEBUG ( 6144): #11 pc 00012558 /system/lib/libc.so (pthread_create+172)
谢谢
【问题讨论】:
-
您在线程中的某处分配内存不当。您可能在使用 va_list 吗?
-
不..我没有使用 va_list ..
-
malloc() 在您的一个线程中失败。这通常是由于本机堆损坏而发生的。
adb logcat输出中可能有一条信息性消息。此特定线程正在尝试通知调试器已到达断点地址。使用 JNI 时,我强烈建议启用CheckJNI功能。 -
我尝试过使用 checkJNI ..但我没有得到任何有用的输出。每次我运行该应用程序时,它都会在调用 malloc 的不同点崩溃。所以无法理解这个问题。这可能是内存不足的问题吗?
标签: android android-ndk native-code