Android信号11 (SIGSEGV),无故障地址



墓碑.log中上报的SIGSEGV没有"故障地址",可能是什么原因?

这是墓碑所报告的内容(错误地址是--------),

signal 11 (SIGSEGV), code 0 (SI_USER from pid 4956, uid 0), fault addr --------
rax fffffffffffffffc  rbx 000075d08fa0d2e0  rcx 000075d0901f98ca  rdx 0000000000000010
r8  0000000000000000  r9  0000000000000008  r10 00000000ffffffff  r11 0000000000000246
r12 00000000ffffffff  r13 000075d08fa23000  r14 000075d08fa230a8  r15 7fffffffffffffff
rdi 0000000000000005  rsi 00007ffd21eddb90
rbp 00000000ffffffff  rsp 00007ffd21eddb38  rip 000075d0901f98ca

和回溯似乎是合理的(不是堆栈损坏)。

backtrace:
#00 pc 00000000000ea8ca  /apex/com.android.runtime/lib64/bionic/libc.so (__epoll_pwait+10)
#01 pc 0000000000040bf0  /system/bin/wificond (android::Looper::pollInner(int)+160)
#02 pc 0000000000040aee  /system/bin/wificond (android::Looper::pollOnce(int, int*, int*, void**)+126)
#03 pc 000000000003fdd4  /system/bin/wificond (android::wificond::LooperBackedEventLoop::Poll()+36)
#04 pc 000000000001feaf  /system/bin/wificond (main+959)
#05 pc 000000000008e4f5  /apex/com.android.runtime/lib64/bionic/libc.so (__libc_init+101)

当接收到的siginfo_t中的si_codeSI_USERSI_QUEUESI_TKILL(参见AOSP源码中的[signal_has_si_addr()])时,tombstone(以前的debugd)工具将故障地址设置为-------

si_code,根据[man sigaction(2)]。指示发送此信号的原因;在下面的例子中,si_code是SI_USER,这意味着信号来自另一个用户进程(例如kill)。

signal 11 (SIGSEGV), code 0 (SI_USER from pid 4956, uid 0), fault addr --------

最新更新