xroche/coffeecatch

Can not call abort() in coffeecatch_signal_pass is ok?

Opened this issue · 0 comments

I enable coffeecatch in my thread. When other thread crashed, is captured by coffeecatch and call abort() in coffeecatch_signal_pass, receive android crash stacktrace as:

02-16 11:46:33.521: A/DEBUG(288): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
02-16 11:46:33.522: A/DEBUG(288): Build fingerprint: 'Xiaomi/cancro_wc_lte/cancro:6.0.1/MMB29M/7.2.9:user/release-keys'
02-16 11:46:33.522: A/DEBUG(288): Revision: '0'
02-16 11:46:33.522: A/DEBUG(288): ABI: 'arm'
02-16 11:46:33.523: A/DEBUG(288): pid: 13619, tid: 13619, name: test.example.sk >>> test.example.sk <<<
02-16 11:46:33.523: A/DEBUG(288): signal 6 (SIGABRT), code 1 (?), fault addr --------
02-16 11:46:33.563: A/DEBUG(288): r0 00000000 r1 00003533 r2 00000006 r3 b6f53b7c
02-16 11:46:33.564: A/DEBUG(288): r4 b6f53b84 r5 b6f53b34 r6 00000002 r7 0000010c
02-16 11:46:33.564: A/DEBUG(288): r8 b6f32c4c r9 b4abf820 sl 00000000 fp b6f32c34
02-16 11:46:33.565: A/DEBUG(288): ip 00000006 sp b6f32ba0 lr b6cb0c69 pc b6cb3058 cpsr 400e0010
02-16 11:46:33.602: A/DEBUG(288): backtrace:
02-16 11:46:33.602: A/DEBUG(288): #00 pc 00042058 /system/lib/libc.so (tgkill+12)
02-16 11:46:33.603: A/DEBUG(288): #1 pc 0003fc65 /system/lib/libc.so (pthread_kill+32)
02-16 11:46:33.603: A/DEBUG(288): #2 pc 0001c403 /system/lib/libc.so (raise+10)
02-16 11:46:33.604: A/DEBUG(288): #3 pc 000195b5 /system/lib/libc.so (__libc_android_abort+34)
02-16 11:46:33.604: A/DEBUG(288): #4 pc 00017508 /system/lib/libc.so (abort+4)
02-16 11:46:33.605: A/DEBUG(288): #5 pc 000121eb /data/app/test.example.sk-2/lib/arm/libsk.so
02-16 11:46:33.605: A/DEBUG(288): #6 pc 0036cc9b /system/lib/libart.so (_ZN3art12FaultManager11HandleFaultEiP7siginfoPv+530)
02-16 11:46:33.606: A/DEBUG(288): #7 pc 0001756c /system/lib/libc.so
02-16 11:46:34.539: A/DEBUG(288): Tombstone written to: /data/tombstones/tombstone_05
02-16 11:46:34.539: E/DEBUG(288): AM write failed: Broken pipe

I comment out abort() and found crash stacktrace at real crash position:
//DEBUG(print("calling abort()\n"));
//signal(SIGABRT, SIG_DFL);
//abort();