调试一个邪恶的Go运行时错误

2024-07-19

本文记录了作者调试Go语言node_exporter组件崩溃问题的过程。作者首先排除了硬件问题,通过在不同机器和虚拟机上测试,确定问题与内核配置和编译器版本有关。最终发现问题出在内核vDSO代码中,由于Go语言的栈空间分配策略与内核的栈溢出保护机制冲突,导致内存写冲突,从而引发崩溃。最终通过修改Go语言的栈空间分配策略解决了该问题。

37
未分类 内核调试 vDSO