测试反馈来一个bug,说软件功能异常了。调试了许久,发现是一个存放配置文件路径的全局变量异常了。本来存放的是一个全路径,结果现在是一个'.'。后来用windbg翻看初始化路径的函数,发现一段函数有问题,某些指令是错误的,无法被反汇编。虽然说这一个函数只在第一次运行时被调用,和这个bug可能是毫无关联的,因为变量被篡改很可能是溢出之类导致。但代码段是只读的,怎么可能会被修改了某些字节?这与某种玄幻的现象特别相似,那就是内存被高能粒子射线击中,比特位翻转了!!如下图所示,左面是IDA静态反汇编,右面是windbg附加后的反汇编。
我总结就是几种情况
1.内存损坏,不稳定(但memtest86压力测试未检出任何内存问题)
2.内存rowhammer翻转(不太懂这块,不知道这种rowhammer是否导致这种现象)
3.内存被高能粒子射线导致比特位翻转(玄幻)
4.存放代码段的页面恰好换出到SSD,然后SSD被高能粒子射线导致比特位翻转,然后页面被交换回物理内存,但这更玄幻,因为SSD硬盘通常具有纠错能力(BCHECC、LDPC),感觉比3更玄幻。
5.?????
如果觉得《疑似高能粒子射线导致服务程序异常》对你有帮助,请点赞、收藏,并留下你的观点哦!