sigma-star 团队接到客户报告:一个 Go 应用在嵌入式 Linux 上偶发崩溃,致命错误是 runtime: netpoll: eventfd ready for something unexpected。排查后发现 netpoll 代码假设 epoll 只触发 EPOLLIN,实际却收到 EPOLLIN|EPOLLOUT。这暴露了 Go netpoll 内部的一个假设不再成立,最终定位并修复了 Go 运行时里的一个真实 bug。
核心要点
崩溃指向 Go 运行时 netpoll 的内部假设失效
netpoll 预期只有 EPOLLIN,实际收到 EPOLLIN|EPOLLOUT
通过 Go issue tracker 对照已知报告 快速定位
金句
起初我们以为是应用本身的 bug,但仔细检查后,它更像 Go netpoll 机制里一个内部假设不再成立。