Knight-ZXW / Sliver

字节跳动sliver 采集Java函数栈实现
Apache License 2.0
89 stars 22 forks source link

你好,我这边试了一下,发现Android 12 系统有几个机型调用SuspendThreadByThreadId会报错 #1

Closed maojianwen closed 1 year ago

maojianwen commented 1 year ago

你好,我这边试了一下,发现Android 12 系统有几个机型调用SuspendThreadByThreadId会报错,分别是:

机型:HONOR/FNE-NX9 Android 12,level 31 aarch64 SIGSEGV(SEGV_MAPERR)

00 pc 00000000001ab550 /apex/com.android.art/lib64/libart.so (art::ThreadList::SuspendThreadByThreadId(unsigned int, art::SuspendReason, bool*)+464) [arm64-v8a::289d75599f6112d5757113220599e90b]

机型:SM-A315G Android 12,level 31 aarch64 SIGSEGV(SEGV_MAPERR)

00 pc 000000000022f540 /apex/com.android.art/lib64/libart.so (art::ThreadList::SuspendThreadByThreadId(unsigned int, art::SuspendReason, bool*)+452) [arm64-v8a::a49c773ef6221a996ecea990e9753caa]

机型:XT2175-2 Android 12,level 31 aarch64 SIGSEGV(SEGV_MAPERR)

00 pc 0000000000231ca8 /apex/com.android.art/lib64/libart.so (art::ThreadList::SuspendThreadByThreadId(unsigned int, art::SuspendReason, bool*)+452) [arm64-v8a::56e704c544e6c624201be2ab4933e853]

请问这个有啥排查思路吗?

Knight-ZXW commented 1 year ago

我记得我之前试的时候 用SuspendThreadByThreadId 也会出错, 用SuspendThreadByPeer 就好了 ,没有去分析原因

maojianwen commented 1 year ago

SuspendThreadByPeer不是有概率会因为挂起超时导致崩溃吗?

Knight-ZXW commented 1 year ago

SuspendThreadByPeer不是有概率会因为挂起超时导致崩溃吗?

我说反了。 你贴的这个错误我没遇到过,我写这个Demo 只测试了一个机型

maojianwen commented 1 year ago

根据这个堆栈的偏移量能还原具体的方法行号吗?

Knight-ZXW commented 1 year ago

最好贴下完整的错误日志,或者 DEBUG 调试确认下 调用SuspendThreadByThreadId 时各个参数值是否正确