为了账号安全,请及时绑定邮箱和手机立即绑定

SIGTRAP:在 Golang 包装 C 库中跟踪陷阱错误,但仅在运行 go test 时

SIGTRAP:在 Golang 包装 C 库中跟踪陷阱错误,但仅在运行 go test 时

Go
Smart猫小萌 2021-09-09 21:45:14
我已经设置了一个最小的代码库 repo 来复制错误并尽可能清楚地解释这个错误:https : //github.com/soroushjp/go_wrapper_c_err我目前正在使用封装C secp256k1 库的 Go 包go-secp256k1进行 ECDSA 签名的项目。如果我通过导入直接使用 go-secp256k1 中的函数(如 main.go 中所示),它工作正常。所以在 repo 中,运行 main.go 效果很好,并且打印出一个公钥。所以这是一个奇怪的错误:如果我尝试使用 go-secp256k1 为包编写测试,我会收到一个奇怪的错误。要复制,请运行:go test github.com/soroushjp/go_wrapper_c_err/cryptoutil -v我收到的错误:=== RUN TestNewPublicKeySIGTRAP: trace trapPC=0x4031730signal arrived during cgo executiongoroutine 20 [syscall]:runtime.cgocall(0x40013d0, 0x436ddd0)    /usr/local/go/src/pkg/runtime/cgocall.c:143 +0xe5 fp=0x436ddb8 sp=0x436dd70github.com/toxeus/go-secp256k1._Cfunc_secp256k1_start(0x404c14d)    github.com/toxeus/go-secp256k1/_obj/_cgo_defun.c:99 +0x31 fp=0x436ddd0 sp=0x436ddb8github.com/toxeus/go-secp256k1.Start()    /Users/soroushjp/Desktop/Dropbox/Development/go/src/github.com/toxeus/go-secp256k1/secp256k1.go:9 +0x1a fp=0x436ddd8 sp=0x436ddd0github.com/soroushjp/go_wrapper_c_err/cryptoutil.NewPublicKey(0xc20800e080, 0x20, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0)    /Users/soroushjp/go/src/github.com/soroushjp/go_wrapper_c_err/cryptoutil/cryptoutil.go:35 +0xbd fp=0x436de98 sp=0x436ddd8github.com/soroushjp/go_wrapper_c_err/cryptoutil.TestNewPublicKey(0xc20804c090)    /Users/soroushjp/go/src/github.com/soroushjp/go_wrapper_c_err/cryptoutil/cryptoutil_test.go:10 +0x5f fp=0x436df68 sp=0x436de98testing.tRunner(0xc20804c090, 0x420e110)    /usr/local/go/src/pkg/testing/testing.go:422 +0x8b fp=0x436df98 sp=0x436df68runtime.goexit()    /usr/local/go/src/pkg/runtime/proc.c:1445 fp=0x436dfa0 sp=0x436df98created by testing.RunTests    /usr/local/go/src/pkg/testing/testing.go:504 +0x8db我的测试代码非常少,几乎与 main.go 中的代码相同:package cryptoutilimport (    "fmt"    "testing")func TestNewPublicKey(t *testing.T) {    privateKey := NewPrivateKey()    publicKey, err := NewPublicKey(privateKey)    if err != nil {        t.Error(err)    }    fmt.Println(publicKey)}知道这里发生了什么吗?“go test”和“go run”之间发生了什么不同,导致 ECDSA 包装器遇到此错误?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 404 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信