gopkg
gopkg copied to clipboard
skipmap在32位系统下运行crash
Operating System
Arm71 Linux
Go Version
go1.17
Package Version
20230728082804
Affected Packages
collection/skipmap
Expected Behavior
在32位系统上运行正常。
Actual Behavior
在32位系统上运行时候,会报错:panic: unaligned 64-bit atomic operation。原因是使用了atomic.Load64(),在32位下操作64位数据不是原子的。
Reproduction Steps
- 使用skipmap的LoadOrStoreLazy。
- 编译32位Arm下运行的程序。
- 在Arm71上运行编译好的程序。
Other Information
我认为这是个普遍存在于32位系统的问题,不一定非要arm71系统。应该是32位系统就能复现。
请问是哪个类型的 skipmap 报错了呢,可以提供一下完整的 stack 么
@zhangyunhao116 你会帮忙解决这个问题么?原理是很简单的,就是atomic的对int64的原子操作,在32位系统下无法保持原子行而panic。
下面是我们遇到的crash,实际上,任何关于int64的原子操作,在32位系统下都会报错。