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 以降では、システムコールは OS でサポートされている `libSystem.dylib` を介して発行されます。
対応方法
ダウンロードまたはインストールしたプログラム (Homebrew を使用した場合など) の場合は、新しいバージョンの Go でビルドされた新しいバージョンをダウンロードまたはインストールする必要があります。
ソースからビルドしたプログラムの場合は、新しいバージョンの Go でリビルドする必要があります。
`$PATH` を確認し、`$GOPATH/bin` とインストールした他の古い関連する Go バイナリを手動でクリーンアップすることをお勧めします。
Go をコンパイルしようとしている場合は、`go tool dist clean` が役立つ場合があります。
このコンテンツは Go Wiki の一部です。