openvpn で tun0 デバイス生やして通信していると、
ファイルサーバ経由で再生してた音楽が止まってしまう事象が発生。

どうも、samba が落ちてしまっているようだ。
再起動をかけたのだけれど、core 吐いて落ちる。
tun0 を止めると samba は再び起動できるようになる。

log.smbdの出力はこんな感じ。

Assertion failed: (iface_comp(&((ifaces)[0]), &((ifaces)[1])) <= 0), function get_interfaces, file lib/interfaces.c, line 283.
[2013/03/16 01:24:32.325544, 0] lib/fault.c:51(fault_report)
===============================================================
[2013/03/16 01:24:32.325604, 0] lib/fault.c:52(fault_report)
INTERNAL ERROR: Signal 6 in pid 90991 (3.6.12)
Please read the Trouble-Shooting section of the Samba3-HOWTO
[2013/03/16 01:24:32.325636, 0] lib/fault.c:54(fault_report)

From: https://www.samba.org/samba/docs/Samba3-HOWTO.pdf
[2013/03/16 01:24:32.325659, 0] lib/fault.c:55(fault_report)
===============================================================

ぐぐると、こんな情報を発見。
どうやら、FreeBSD特有の現象らしい。
微妙にsambaのバージョンが違うけれど、3.6.12でも治ってないんだろう。

さて、どーすんべ。
VPNは使いたいけれど、sambaが使えないのは困る。

しかたがないのでソースを追うことに。
lib/interfaces.c の中をみてみると、処理対象にするデバイス(“bge0″とか”em0”)
を列挙して重複を取り除こうとしている時に落ちてるっぽい。

ちなみに初期化の時の処理なので、

bind interfaces only = yes
interfaces = bge0, lo0

は効果がない。

ざっくり眺めてみたのだけれど、落ちそうな箇所は見当たらない。
上記の情報だと、デバイス名にeth0とかeth1が有ることを前提にされた
ソースらしいのだけれど……

しかたがないので、if文を追加して、デバイス名が tun0 の場合は
処理させないようにソースを改変した。

ソースを tar と gzip で固めて、/usr/ports/distfiles へコピー
ports の sha256 と サイズを修正したソースのものに変更。

で、ports の再インストール。

tun0 を生やして恐る恐る samba を起動。
お、大丈夫っぽい。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です