数十から100程度のthread内で他のコマンド(catとか、findとか)をopenで
呼び出すperlスクリプトがあります。solaris9だと上手く動いている
(ように見える)のですが、FreeBSD5.4だと時々thread内で無限ループ
らしき状況に陥ります(ちゃんと動くときもあります)

かたっぱしからprintfを入れてどこで止まってるかを調べてみると、
open文の個所でコマンドを呼び出し中(コマンドは実行されていない)
で止まっています。

単純な
for($i=0;$i<1000;$i++) {
threads->new(\&a,"foo");
};

foreach (threads->list) {
$_->join;
}

sub a {
open(FILE,"echo @_|");
 
}
だと問題なく動作します。

両OSともperl5.8.7、thread関連はperl -Vの出力では
usethreads=define use5005threads=undef useithreads=define
となっています。
スクリプトの問題なのか、perlの問題なのか、FreeBSDの問題なのか切り分け
ようと思うのですが、どこから手を付けたらよいのでしょうか。