问题:system_process W/NativeCrashListener: Couldn’t find ProcessRecord for pid 12949?
0、概念
system_process是我们在应用程序列表可以看到的名称system_process不是进程的名称
system_process的进程名称是system_server,system_server进程是zygote进程孵化的第一个Java进程
1.什么是tombstone
当一个动态库(native 程序)开始执行时,系统会注册一些连接到 debuggerd 的 signal handlers,当系统 crash 的时候,会保存一个 tombstone 文件到/data/tombstones目录下
(Logcat中也会有相应的信息),文件的确就像墓碑一样记录了死亡了的进程的基本信息(例如进程的进程号,线程号),死亡的地址(在哪个地址上发生了 Crash),
死亡时的现场是什么样的(记录了一系列的堆栈调用信息)等等。
2、16:03:34.261 12949-12950/? A/libc: Fatal signal 7 (SIGBUS), code 1, fault addr 0xffffffff in tid 12950 (rild)
::这里的信息说明访问内存对象的未定义部分。
、··
3、Signal Description
SIGSEGV Invalid memory reference. 无效内存引用
SIGBUS Access to an undefined portion of a memory object. 访问内存对象的未定义部分
SIGFPE Arithmetic operation error, like divide by zero. 算术运算错误,比如除以零。
SIGILL Illegal instruction, like execute garbage or a privileged instruction 非法指令,如执行垃圾或特权指令
SIGSYS Bad system call。
BAD SYSTEM CALL 错误的系统调用。
SIGXCPU CPU time limit exceeded. 超过CPU时间限制。
SIGXFSZ File size limit exceeded. 超出了文件大小限制。
、
4、当 tid == pid 时,问题发生在父进程,反之问题发生在子进程
:: 16:03:34.344 12956-12956/? A/DEBUG: pid: 12949, tid: 12950, name: rild >>> /system/bin/rild <<<
图示: