gopkg icon indicating copy to clipboard operation
gopkg copied to clipboard

skipmap在32位系统下运行crash

Open zhiyongzhang663 opened this issue 1 year ago • 2 comments

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

  1. 使用skipmap的LoadOrStoreLazy。
  2. 编译32位Arm下运行的程序。
  3. 在Arm71上运行编译好的程序。

Other Information

我认为这是个普遍存在于32位系统的问题,不一定非要arm71系统。应该是32位系统就能复现。

zhiyongzhang663 avatar Feb 06 '24 03:02 zhiyongzhang663

请问是哪个类型的 skipmap 报错了呢,可以提供一下完整的 stack 么

zhangyunhao116 avatar Feb 06 '24 04:02 zhangyunhao116

@zhangyunhao116 你会帮忙解决这个问题么?原理是很简单的,就是atomic的对int64的原子操作,在32位系统下无法保持原子行而panic。 下面是我们遇到的crash,实际上,任何关于int64的原子操作,在32位系统下都会报错。 image

zhiyongzhang663 avatar Feb 06 '24 04:02 zhiyongzhang663