xyh
xyh
**Describe the bug (描述bug)** 用bcc工具[funclatency](https://github.com/iovisor/bcc/blob/master/tools/funclatency.py)观察服务里某个函数的耗时时,发现会触发服务SIGILL信号,导致服务异常退出,且稳定复现。 该工具观察函数耗时是通过[uprobe/uretprobe](https://docs.kernel.org/trace/kprobes.html)来实现的,其中uretprobe会**修改栈上的函数返回地址**,所以怀疑跟bthread用户态切换栈有关。 Go服务也存在类似问题[issue](https://github.com/iovisor/bcc/issues/1320#issuecomment-325149456),是因为Go服务会对栈进行扩缩容等操作导致栈内存移动,但是bthread的栈内存应该不会有扩缩容等移动栈内存的操作。 **To Reproduce (复现方法)** 参照[funclatency_example](https://github.com/iovisor/bcc/blob/master/tools/funclatency_example.txt)观察brpc服务的用户态函数耗时就可以触发。或者使用其他依赖uretprobe的工具。 **Expected behavior (期望行为)** 期望brpc服务可以正常使用uretprobe/kretprobe **Versions (各种版本)** OS: centos7 Compiler: gcc7.3 brpc: protobuf: **Additional context/screenshots (更多上下文/截图)** 服务报SIGILL的现场:  进程的内存分布 (cat...