所以我在运行go test --race my/package/ya
时收到一个错误。输出如下:
unexpected fault address 0x200015a490e0
fatal error: fault
[signal 0xb code=0x1 addr=0x200015a490e0 pc=0x47399ac]
goroutine 1 [running, locked to thread]:
runtime.throw(0x0, 0xc820000180)
/opt/go1.6/src/runtime/panic.go:530 +0x90 fp=0x7fff5fbfeb80 sp=0x7fff5fbfeb68
goroutine 17 [syscall, locked to thread]:
runtime.goexit()
/opt/go1.6/src/runtime/asm_amd64.s:1998 +0x1
我试过在TestMain中捕捉这个错误,但显然我的TestMain没有被调用。我曾尝试使用-trace生成跟踪文件,但尽管编写了测试文件pkg.out,但从未编写过该文件。我不完全确定接下来该怎么做,因为输出并没有提供太多提示。我想我可以尝试gdb和深入研究,但在过去这两种方法都没有运气。
我想知道是否还有其他事情需要考虑?
附加说明:只有当--race标志存在时,才会发生此故障。去1.6达尔文/amd64。
(预热这个老问题)
只需升级到Go1.20
(请参阅GitHub上的问题)。
供参考,错误为(取自问题):
-
在版本
1.19
:中syscall.ptrace: nosplit stack over 792 byte limit syscall.ptrace<1> grows 128 bytes, calls syscall.ptrace1<1> [...]
-
在版本
1.18.5
中runtime.fatalthrow: nosplit stack overflow 792 assumed on entry to syscall.ptrace<1> (nosplit) [...]