Go Wiki:MacOS12BSDThreadRegisterIssue

简介

如果您看到以下错误消息而访问此页面,则说明您正在运行在 macOS 12 Monterey 上运行的 Go 程序打印的错误消息

fatal error: runtime: bsdthread_register error

runtime stack:
runtime.throw(0x20594e0, 0x21)
    /usr/local/go/src/runtime/panic.go:619 +0x81 fp=0x7ff7bfeff878 sp=0x7ff7bfeff858 pc=0x1029751
runtime.goenvs()
    /usr/local/go/src/runtime/os_darwin.go:129 +0x83 fp=0x7ff7bfeff8a8 sp=0x7ff7bfeff878 pc=0x10272d3
runtime.schedinit()
    /usr/local/go/src/runtime/proc.go:496 +0xa4 fp=0x7ff7bfeff900 sp=0x7ff7bfeff8a8 pc=0x102c014
runtime.rt0_go(0x7ff7bfeff930, 0x3, 0x7ff7bfeff930, 0x1000000, 0x3, 0x7ff7bfeffab0, 0x7ff7bfeffabf, 0x7ff7bfeffac3, 0x0, 0x7ff7bfeffacc, ...)
    /usr/local/go/src/runtime/asm_amd64.s:252 +0x1f4 fp=0x7ff7bfeff908 sp=0x7ff7bfeff900 pc=0x1052c64

那么您正在运行使用旧版 Go(Go 1.10 或更早版本)构建的程序。您需要更新程序或使用较新版本的 Go 重新构建它。

详细信息

使用 Go 1.10 或更早版本构建的程序使用内核在 macOS 12 Monterey 上不再支持的一种方式来发出系统调用。在 Go 1.11 及更高版本中,系统调用通过 libSystem.dylib 发出,该库受操作系统支持。

操作方法

如果您下载或安装了此程序(例如,使用 Homebrew),则需要下载或安装使用较新版本的 Go 构建的较新版本。

如果您从源代码构建了此程序,则需要使用较新版本的 Go 重新构建它。

您可能需要检查您的 $PATH 并手动清理您已安装的 $GOPATH/bin 和其他旧的相关 Go 二进制文件。

如果您尝试编译 Go,go tool dist clean 可能会有所帮助。


此内容是 Go Wiki 的一部分。