福嶋です。

akira yamada / やまだあきら <akira / arika.org> wrote:
> 福嶋さんの Ruby/Pcap 0.4 を使おうとしているのですが
> test.rb を実行すると [BUG] Segmentation fault してしまいます. 

えーと、test.rbは配布に含まれているものそのままのものでしょうか? 
あれは de0 という BSD/OS のインタフェース名を直接指定しているので、
そのまま Linux 上で実行すると

examples/test.rb:4:in `open_live': bind: de0: Operation not supported by device (Pcap::PcapError)
        from examples/test.rb:4

とかなるはずなんですが。

また、tcpdump.rbを使って、

  ruby tcpdump.rb -ni eth0

などと、適当にLAN上のデータを読ませた場合はどうなるでしょうか。

> よくわからないなりに trace してみたのですが, 
> こんな感じになります(これでは不十分かな):
> 
> #0  0x40161c98 in ?? ()
> #1  0x40194236 in _init () from /usr/lib/ruby/1.4/i386-linux/pcap.so
> #2  0x40183527 in pcap_read () from /usr/lib/libpcap.so.0
> #3  0x401944a7 in _init () from /usr/lib/ruby/1.4/i386-linux/pcap.so

肝心のpcap.so内の関数名等が出ないのは何故だろう...
あと _init って何なんでしょうねぇ。そんな関数はないはずなんですが。

> 環境は Debian GNU/Linux で
> Ruby 1.4.2 に ruby-list, ruby-dev に流れて
> 取り込まれることになった各種の patch をあてたものです.
> pcap ライブラリは CHANGES が
> 
>   @(#) $Header: CHANGES,v 1.45 98/01/30 18:29:39 leres Exp $ (LBL)
> 
> となっているものです(Debian 的には ruby 1.4.2-4 と
> libpcap0/libpcap-dev 0.4a6-2.1 という環境です).

あいにく今はpotatoの環境がないのですが、上記の libpcap のソースパッ
ケージから slink 上で .deb を作り、それをインストールして試してみ
ましたが再現しませんでした。

---
福嶋正機