本地执行任意gh cli命令触发段错误/goroutine报错的原因
gh CLI 执行任意命令均触发空指针 panic 报错
本地运行任何gh CLI命令都会直接崩溃,抛出panic: runtime error: invalid memory address or nil pointer dereference和signal SIGSEGV: segmentation violation错误。已尝试卸载重装gh CLI,甚至移除机器上所有Node.js和npm环境,问题仍未解决。
报错详情
执行gh auth login时的报错:
(base) yamini@Yaminis-MacBook-Pro local % gh auth login panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x2 addr=0x0 pc=0x1031c6580] goroutine 1 [running]: github.com/cli/go-gh/pkg/config.(*Config).Get(0x1038a3548?, {0x140007bfbd8?, 0x30?, 0x10488aea0?}) github.com/cli/go-gh@v0.1.1-0.20220817122932-3630ab390fe7/pkg/config/config.go:46 +0x30 github.com/cli/go-gh/pkg/browser.resolveLauncher() github.com/cli/go-gh@v0.1.1-0.20220817122932-3630ab390fe7/pkg/browser/browser.go:75 +0x6c github.com/cli/go-gh/pkg/browser.New(...) github.com/cli/go-gh@v0.1.1-0.20220817122932-3630ab390fe7/pkg/browser/browser.go:32 github.com/cli/cli/v2/internal/browser.New({0x0, 0x0}, {0x1049098a0, 0x14000010018}, {0x1049098a0, 0x14000010020}) github.com/cli/cli/v2/internal/browser/browser.go:14 +0x58 github.com/cli/cli/v2/pkg/cmd/factory.newBrowser(0x140003bfdc0?) github.com/cli/cli/v2/pkg/cmd/factory/default.go:111 +0x50 github.com/cli/cli/v2/pkg/cmd/factory.New({0x10477ac48, 0x6}) github.com/cli/cli/v2/pkg/cmd/factory/default.go:37 +0x238 main.mainRun() github.com/cli/cli/v2/cmd/gh/main.go:64 +0xec main.main() github.com/cli/cli/v2/cmd/gh/main.go:48 +0x1c
执行gh repo create时的报错:
(base) yamini@Yaminis-MacBook-Pro local % gh repo create panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x2 addr=0x0 pc=0x1031fa580] goroutine 1 [running]: github.com/cli/go-gh/pkg/config.(*Config).Get(0x1038d7548?, {0x1400085fbd8?, 0x30?, 0x1048beea0?}) github.com/cli/go-gh@v0.1.1-0.20220817122932-3630ab390fe7/pkg/config/config.go:46 +0x30 github.com/cli/go-gh/pkg/browser.resolveLauncher() github.com/cli/go-gh@v0.1.1-0.20220817122932-3630ab390fe7/pkg/browser/browser.go:75 +0x6c github.com/cli/go-gh/pkg/browser.New(...) github.com/cli/go-gh@v0.1.1-0.20220817122932-3630ab390fe7/pkg/browser/browser.go:32 github.com/cli/cli/v2/internal/browser.New({0x0, 0x0}, {0x10493d8a0, 0x140001aa008}, {0x10493d8a0, 0x140001aa010}) github.com/cli/cli/v2/internal/browser/browser.go:14 +0x58 github.com/cli/cli/v2/pkg/cmd/factory.newBrowser(0x140000fdce0?) github.com/cli/cli/v2/pkg/cmd/factory/default.go:111 +0x50 github.com/cli/cli/v2/pkg/cmd/factory.New({0x1047aec48, 0x6}) github.com/cli/cli/v2/pkg/cmd/factory/default.go:37 +0x238 main.mainRun() github.com/cli/cli/v2/cmd/gh/main.go:64 +0xec main.main() github.com/cli/cli/v2/cmd/gh/main.go:48 +0x1c
其他gh CLI命令也会触发相同报错:
panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x2 addr=0x0 pc=0x100622580] goroutine 1 [running]: github.com/cli/go-gh/pkg/config.(*Config).Get(0x100cff548?, {0x140007dfbd8?, 0x30?, 0x101ce6ea0?}) github.com/cli/go-gh@v0.1.1-0.20220817122932-3630ab390fe7/pkg/config/config.go:46 +0x30 github.com/cli/go-gh/pkg/browser.resolveLauncher() github.com/cli/go-gh@v0.1.1-0.20220817122932-3630ab390fe7/pkg/browser/browser.go:75 +0x6c github.com/cli/go-gh/pkg/browser.New(...) github.com/cli/go-gh@v0.1.1-0.20220817122932-3630ab390fe7/pkg/browser/browser.go:32 github.com/cli/cli/v2/internal/browser.New({0x0, 0x0}, {0x101d658a0, 0x140001aa008}, {0x101d658a0, 0x140001aa010}) github.com/cli/cli/v2/internal/browser/browser.go:14 +0x58 github.com/cli/cli/v2/pkg/cmd/factory.newBrowser(0x140000f7ce0?) github.com/cli/cli/v2/pkg/cmd/factory/default.go:111 +0x50 github.com/cli/cli/v2/pkg/cmd/factory.New({0x101bd6c48, 0x6}) github.com/cli/cli/v2/pkg/cmd/factory/default.go:37 +0x238 main.mainRun() github.com/cli/cli/v2/cmd/gh/main.go:64 +0xec main.main() github.com/cli/cli/v2/cmd/gh/main.go:48 +0x1c
解决步骤
从报错栈分析,问题出在gh读取配置获取浏览器启动器时触发空指针,说明配置文件可能损坏、缺失或权限异常。
- 彻底清理gh配置文件:
- Mac系统下gh配置目录为
~/.config/gh/ - 执行命令删除整个配置目录:
rm -rf ~/.config/gh/
- Mac系统下gh配置目录为
- 重新安装最新版gh CLI:
- 用Homebrew:
brew reinstall gh - 或从官方渠道下载对应安装包
- 用Homebrew:
- 避免以root权限运行gh,确保当前用户对配置目录有读写权限
- 若处于代理环境,检查是否有冲突的gh环境变量,比如执行
unset GH_CONFIG_DIR后重试
内容的提问来源于stack exchange,提问作者yva2002
相关产品推荐
相关产品推荐

