SEGV_MAPERR :当前执行的指令访问的内存地址未映射到当前进程地址空间 SEGV_ACCERR:当前执行的指令访问的内存地址无访问权限(读、写、执行) SEGV_MAPERR : 字符串溢出:寄存器中不够存储字符串长度
, { do_bad, SIGKILL, SI_KERNEL, "level 3 address size fault" }, { do_translation_fault, SIGSEGV, SEGV_MAPERR , "level 0 translation fault" }, { do_translation_fault, SIGSEGV, SEGV_MAPERR , "level 1 translation fault" }, { do_translation_fault, SIGSEGV, SEGV_MAPERR , "level 2 translation fault" }, { do_translation_fault , SIGSEGV, SEGV_MAPERR , "level 3 translation fault" }, asmlinkage void __exception do_mem_abort(unsigned SEGV_ACCERR : SEGV_MAPERR , (void __user *)addr, inf->name); 内核最终会调用arm64_force_sig_fault的方式通知应用程序,而此处的信号类型是
2核2G云服务器 每月9.33元起,个人开发者专属3年机 低至2.3折
Tue Oct 25 05:18:00 CST 2016 aarch64 CPU: arm64 8 CPUs GPU: UNKNOWN Crash reason: SIGSEGV / SEGV_MAPERR 0x0000007f74e64240 x3 = 0x0000000000570000 根据文章Android 平台 Native 代码的崩溃捕获机制及实现 的介绍,我们可知“Crash reason: SIGSEGV / SEGV_MAPERR
xample.hellojni >>> com.example.hellojni <<< 7. 06-23 15:02:26.772: I/DEBUG(299): signal 11 (SIGSEGV), code 1 ( SEGV_MAPERR 14173, tid: 14173, name: xample.hellojni >>> com.example.hellojni <<< signal 11 (SIGSEGV), code 1 ( SEGV_MAPERR
fault" }, { do_bad, SIGBUS, 0, "level 3 address size fault" }, { do_translation_fault, SIGSEGV, SEGV_MAPERR , "level 0 translation fault" }, { do_translation_fault, SIGSEGV, SEGV_MAPERR , "level 1 translation fault" }, { do_translation_fault, SIGSEGV, SEGV_MAPERR , "level 2 translation fault" }, { do_translation_fault , SIGSEGV, SEGV_MAPERR , "level 3 translation fault" }, { do_bad, SIGBUS, 0, "unknown 8" }, { do_page_fault
A/libc: Fatal signal 11 (SIGSEGV), code 1 ( SEGV_MAPERR ), fault addr 0x0 in tid 7985 (gce.ndkpractice) A/DEBUG: signal 11 (SIGSEGV), code 1 ( SEGV_MAPERR ), fault addr 0x0 2022-11-21 16:24:58.265 8033-8033/ A/DEBUG: signal 11 (SIGSEGV), code 1 ( SEGV_MAPERR ), fault addr 0x0 2022-11-21 16:24:58.265 8033-8033/ STR R0, [R1]STR是把R0中的值存入寄存器R1中,STR:store R0 to register R1 结合Fatal signal 11 (SIGSEGV), code 1 ( SEGV_MAPERR
tid: 23051, name: .tencent.qqlive >>> com.tencent.qqlive <<< uid: 10256 signal 11 (SIGSEGV), code 1 ( SEGV_MAPERR 可以从logcat中找到对应的信息 libc : Fatal signal 11 (SIGSEGV), code 1 ( SEGV_MAPERR ), fault addr 0xdb3fb000 in tid 23051 (.tencent.qqlive), pid 23051 (.tencent.qqlive) 信号的num,比如信号11代表的是SIGSEGV 信号code, SEGV_MAPERR si_code, get_sigcode(thread_info.siginfo), sender_desc, addr_desc); 示例如下: signal 11 (SIGSEGV), code 1 ( SEGV_MAPERR
可以很明显的看到,就是addCircle方法发生的崩溃,崩溃的地方是系统类Path的方法 还有崩溃2,数量也比较高,崩溃log如下 # AppExecutors-mt(32487)SIGSEGV( SEGV_MAPERR
- 2020-11-12 09:21:47.476 11561-11575/com.tombstone.demo A/libc: Fatal signal 11 (SIGSEGV), code 1 ( SEGV_MAPERR A/DEBUG: signal 11 (SIGSEGV), code 1 ( SEGV_MAPERR ), fault addr 0xc 2020-11-12 09:21:47.540 11606-11606 , tid: 11575, name: Binder:11561_3 >>> com.tombstone.demo:process <<< signal 11 (SIGSEGV), code 1 ( SEGV_MAPERR
这下子可分析的内容就多起来了,我们逐个来看看: 进程信息:pid表示进程号,tid表示线程号,name表示进程名 错误信号:signal 11表示信号的数字,SIGSEGV表示信号的名字,code 1( SEGV_MAPERR
tid: 17013, name: w.myapplication >>> com.ictt.www.myapplication <<< signal 11 (SIGSEGV), code 1 ( SEGV_MAPERR
, tid: 11575, name: Binder:11561_3 >>> com.tombstone.demo:process <<< signal 11 (SIGSEGV), code 1 ( SEGV_MAPERR
205044, stack(0x00007fb58f435000,0x00007fb58f536000)] siginfo:si_signo=SIGSEGV: si_errno=0, si_code=1 ( SEGV_MAPERR “siginfo:si_signo=SIGSEGV: si_errno=0, si_code=1 ( SEGV_MAPERR ), si_addr=0x0000003f96dc9c6c”这部分是导致虚拟机终止的非预期的信号信息
SIGBUS, 0, “level3 address size fault” }, { do_translation_fault, SIGSEGV, SEGV_MAPERR , “input address range fault” }, { do_translation_fault, SIGSEGV, SEGV_MAPERR , “level 1 translation fault” }, { do_translation_fault, SIGSEGV, SEGV_MAPERR , “level 2 translation fault” }, { do_page_fault, SIGSEGV, SEGV_MAPERR , “level3 translation fault” }, { do_bad
com.rockstargames.gtasa <<< 10-24 00:29:11.621 468 468 F DEBUG : signal 11 (SIGSEGV), code 1 ( SEGV_MAPERR pid: 29357, tid: 29357, name: cnss_diag >>> /system/bin/cnss_diag <<< signal 11 (SIGSEGV), code 1 ( SEGV_MAPERR xxxx' pid: 774, tid: 2212, name: Binder_3 >>> /system/bin/mediaserver <<< signal 11 (SIGSEGV), code 1 ( SEGV_MAPERR pid: 774, tid: 2212, name: Binder_3 >>> /system/bin/mediaserver <<<