The Lost Atomic Update on Loongson CPU
2 days ago
- 在LoongArch上,normaliz打包中出现的一个无限循环被追溯到CPU原子加指令中的丢失更新,这是一个新的CPU勘误。
- 该错误发生在不同物理核心上的线程对同一地址执行宽松原子操作,同时一个线程交错进行内存读取(尤其是LASX向量化读取)时。
- 第一次调查未能找到最小重现程序,因为忽略了glibc中memcpy的向量化实现;AI辅助分析在第二轮中发现了这一点。
- 测试表明,原子加、CAS、最大值、交换等指令在特定条件下都会丢失更新,而带有数据屏障的版本则不受影响。
- AOSC无法重现该问题,因为其glibc构建禁用了多架构支持,从而禁用了LASX加速的memcpy;Debian仍然启用它。
- 该勘误可能影响Rust的Arc和mpsc引用计数,可能导致释放后使用或双重释放,但触发需要同一进程内的并发操作。
- 软件变通方案需要使用数据屏障原子指令重新编译,成本高昂;硬件修复是通过固件更新设置MCSR24的第13位。
- 龙芯在报告发布两周后提供了测试固件,预计修复将在2026年10月1日之前发布,性能损失可以忽略不计。