在包上运行go测试--race时如何调试Golang故障



所以我在运行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)
    [...]
    

相关内容

  • 没有找到相关文章

最新更新