目录

golang runtime: fatal error: SIGSEGV during C.getaddrinfo

runtime: fatal error: SIGSEGV during C.getaddrinfo 解决方法

现象

1
2
3
4
5
6
7
8
golang runtime: fatal error: SIGSEGV during C.getaddrinfo

fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x1 addr=0x63 pc=0x7fd8b41641b9]
runtime stack:
...
created by net.cgoLookupIP
...

/etc/resolv.conf 包含参数 options edns0

原因

https://github.com/golang/go/issues/30310

glibc 的 bug 导致 go 中 net 模块静态编译后的可执行文件 getaddrinfo 的时候 pinic,无法启动服务

解决办法

方法1. build 代码的时候,使用 go 自己的 net 实现 -tags netgo: go build -tags netgo main.go 方法2. 已经 build 的程序使用环境变量 GODEBUG=netdns=go 运行程序,临时使用 go实现的 net: GODEBUG=netdns=go main