現在、FreeBSD 12.3 を自宅サーバー用OSとして使用しているのですが、32bit x86バイナリーのサポートが終わりそうなので、32bit OSで動いているサーバーを 64bit amd64 バイナリーに切り替えようと思って、FreeBSD13.1 のテストを開始しました。
ちょっとした問題が発生。
FreeBSD 13.1 amd64 をクリーンインストールした後、systat コマンドで、IOの状態を確認しながらカスタマイズ作業を行おうとしたら、
systat → io
が、
systat[1237]: stack overflow detected; terminated kernel: pid 1237 (systat), jid 0, uid 1001: exited on signal 6 (core dumped)
になってしまう!
Stack Overflow ってことはメモリ不足?
今回、ZFSファイルシステムを選択したので、メモリ負荷増大状態になっているのかな?
と、面倒ですが、UFSでファイルシステムを作り直し、FreeBSD13.1を再インストールしました。ところが、結果変わらず、core dump します。ガックリ。
プラットフォームが、Intel STCK1A32WFC と貧弱で、2GBメモリしか積んでいないから?
FreeBSD13.1 amd64 では、MMCスロットのサポートが無いので、ファイルシステムは、内蔵32GB SSDとUSB Hub上の USBメモリにUFSで構成しています。
sysctl コマンドでパラメータを修正すれば何とかなりそうな気もしますが、対策パラメータを探すのが面倒なことと、不思議なことに systat → vm, net, swap は落ちず、正常表示されるため、ホストの負荷状況を見るだけなので vm でいいかって放置しています。
gdb でバックトレースしてみると、以下のように libc.so.7 を走っているときに落ちているような感じの数字が出て来ました。
Program terminated with signal SIGABRT, Aborted. Sent by kill() from pid 1237 and user 1001. #0 0x00000008012a777a in kill () from /lib/libc.so.7 (gdb) bt #0 0x00000008012a777a in kill () from /lib/libc.so.7 #1 0x00000008012aaab0 in ?? () from /lib/libc.so.7 #2 0x00000008012aaa20 in __stack_chk_fail () from /lib/libc.so.7
ということは、いずれパッチレベルが上がって解決するんでしょう。
追記:
FreeBSD13.1-p6 では解決しておらず。