FreeBSD 13.1: systat io が Stack overflow detected になる

現在、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

ということは、いずれパッチレベルが上がって解決するんでしょう。

コメントを残す