Knight-ZXW / Sliver

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

挂起线程失败,但仍然会有去获取堆栈的可能,此时可能就会出现其他BUG? #4

Closed lbybug closed 2 months ago

lbybug commented 10 months ago

image

这里是将SuspendThreadByPeer改成了SuspendThreadByThreadId,目的是防止FATAL日志导致的crash,能理解

假设目标线程挂起失败输出了warn日志,但抓栈行为继续,则可能会出现很多奇怪的问题?

Knight-ZXW commented 10 months ago

确实,这里应该加下返回值的判断,从源码上看 suspend成功时会返回Thread* , 失败时(比如线程已销毁)会返回null

lbybug commented 10 months ago

嗯,从源码看的确判断返回值可以解决该问题 image