我从我的Android应用程序收到以下崩溃报告:
之前我有崩溃报告,他们都是关于我的程序的来源,但这次是本机崩溃.我很想知道出了什么问题.有人可以帮我理解问题是什么以及我如何阅读堆栈跟踪以获取自己的信息?
我认为这与关键版本有关...?
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'oneplus/bacon/A0001:4.4.4/KTU84Q/XNPH05Q:user/release-keys'
Revision: '0'
pid: 21249, tid: 21249, name: .application.android >>> com.my.application.android <<<
signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
r0 838c7408 r1 00000080 r2 00000002 r3 00000000
r4 838c7408 r5 00000002 r6 00000000 r7 000000f0
r8 00000000 r9 838c7408 sl 41dbb3f8 fp 00000001
ip 00000000 sp bec11f90 lr 401056c4 pc 401188a8 cpsr 600a0010
d0 0000000000000000 d1 000000004432d59c
d2 000003f500000000 d3 0000000000000008
d4 fe8000003f000001 d5 000122e800000000
d6 0000000000000000 d7 4432d59c00000000
d8 0000000000000000 d9 3fe0000000000000
d10 0000000000000000 d11 0000000000000000
d12 0000000000000000 d13 0000000000000000
d14 0000000000000000 d15 0000000000000000
d16 ffffffffffffffff d17 00790061006c0050
d18 0000009ebdc4e22a d19 002e006900750067
d20 0061007200470049 d21 0063006900680070
d22 0066006600750042 d23 0072005000720065
d24 3f5243eca0000000 d25 8000000000000000
d26 3ff0000000000000 d27 bf95555560000000
d28 8000000000000000 d29 0000000000000000
d30 0000000000000000 d31 0000000000000000
scr 68000013
backtrace:
#00 pc 000218a8 /system/lib/libc.so (__futex_syscall3+8)
#01 pc 0000e6c0 /system/lib/libc.so
#02 pc 00055ac9 /system/lib/libdvm.so
#03 pc 00055fe9 /system/lib/libdvm.so (dvmLockObject+228)
#04 pc 00020d9c /system/lib/libdvm.so
#05 pc 00030ea4 /system/lib/libdvm.so (dvmMterpStd(Thread*)+76)
#06 pc 0002e508 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
#07 pc 000635bd /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+336)
#08 pc 0004f765 /system/lib/libdvm.so
#09 pc 00053e75 /system/lib/libandroid_runtime.so
#10 pc 00067a69 /system/lib/libandroid_runtime.so (android::NativeInputEventReceiver::consumeEvents(_JNIEnv*, bool, long long, bool*)+368)
#11 pc 00067b4d /system/lib/libandroid_runtime.so (android::NativeInputEventReceiver::handleEvent(int, int, void*)+52)
#12 pc 000109ff /system/lib/libutils.so (android::Looper::pollInner(int)+474)
#13 pc 00010aad /system/lib/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+92)
#14 pc 0006ed5d /system/lib/libandroid_runtime.so (android::NativeMessageQueue::pollOnce(_JNIEnv*, int)+22)
#15 pc 000204d0 /system/lib/libdvm.so (dvmPlatformInvoke+116)
#16 pc 0005118f /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+398)
#17 pc 00000214 /dev/ashmem/dalvik-jit-code-cache (deleted)
code around pc:
40118888 e5900000 e2601000 e0100001 116f0f10
40118898 12600020 e12fff1e e1a0c007 e3a070f0
401188a8 ef000000 e1a0700c e12fff1e eafffff9
401188b8 e1a0c007 e1a03002 e1a02001 e3a01000
401188c8 e3a070f0 ef000000 e1a0700c e12fff1e
401188d8 e1a0c007 e1a02001 e3a01001 e3a070f0
401188e8 ef000000 e1a0700c e12fff1e e1a0000d
401188f8 e12fff1e e92d50f0 e3a07025 ef000000
40118908 e8bd50f0 e3700a01 912fff1e e2600000
40118918 ea006f6a f5d0f000 f5d1f000 e1500001
40118928 13520000 03a00000 012fff1e e1a03000
40118938 e352000c 5a000008 f5d0f020 f5d1f020
40118948 e0d300b2 e0d1c0b2 e050000c 112fff1e
40118958 e2522001 1afffff9 e12fff1e e92d4010
40118968 e3130002 0a000005 e0d300b2 e0d1c0b2
40118978 e2422001 e050000c 18bd4010 112fff1e
code around lr:
401056a4 01841f90 e3510000 1afffff9 e1560003
401056b4 13865002 1a000001 ea000009 ebffff74
401056c4 e194cf9f e1843f95 e3530000 e1a00004
401056d4 e1a01006 e1a02005 1afffff8 e156000c
401056e4 1afffff5 f57ff05b e3a00000 e8bd81f0
401056f4 e3a00016 e8bd81f0 fa001211 e5903020
40105704 e1530825 0a000025 e1867007 e1a0c803
40105714 e1550007 0a000033 e38c0002 e1808007
40105724 ea000012 e2053003 e3530001 1a000009
40105734 e225c003 e1942f9f e3a0e000 e1320005
40105744 0184ef9c e35e0000 1afffff9 e1550002
40105754 01a0500c 1a000004 e1a02005 e1a00004
40105764 e1a01006 e3a03000 ebffff49 e5945000
40105774 e1550007 1affffea e1941f9f e3a00000
40105784 e1310007 01840f98 e3500000 1afffff9
40105794 e1570001 1afffff4 f57ff05b e8bd81f0
Run Code Online (Sandbox Code Playgroud)
从堆栈跟踪看,它似乎在Dalvik VM内部崩溃.您没有包含完整的崩溃报告,该报告将显示Android的故障地址和版本,但事实上它dvmLockObject()表明托管堆已损坏.
堆损坏通常是由本机代码库引起的.追踪可能很困难,因为崩溃不一定发生在腐败附近.
更新:使用完整的本机崩溃转储,情况似乎完全不同.该线程正在与SIGABRT崩溃,这通常发生在某些事情(如assert()调用或调用失败free())调用时abort().但是,堆栈跟踪显示代码位于futex系统调用中 - futexes为诸如pthread互斥锁之类的libc功能提供了基础 - 而futex系统调用不会导致SIGABRT.
我的猜测是其他一些线程导致了信号6.你会注意到pid和tid有相同的值(21249),这意味着这是应用程序的主线程,并且是捕获发送信号的线程通过这个过程kill().
Android abort()用于取消引用0xdeadbaad以确保失败的线程出现在堆栈跟踪中.在最近发布的版本中发送了一个SIGABRT tgkill(),这应该确保正确的线程接收信号.所以要么那个机制不工作,要么其他一些代码正在发送SIGABRT,也许正在使用kill().
如果您具有完整的logcat输出,则可能会在崩溃日志开始之前看到某种失败指示.
| 归档时间: |
|
| 查看次数: |
2279 次 |
| 最近记录: |