[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Re: core dump



>> On 15 Mar 2001 12:45:41 +0900
>> 「山」== yamaoka@jpl.org (Katsumi Yamaoka) said as follows:

山> 同じく Solaris 2.6 で 20.7 は消えてなくなり、21.0.100 は
山> => "オープンされたファイルが多すぎます。"

このエラーメッセージが決め手になりました。どうも有難うございます。

この問題の原因は、子プロセスとの通信に使われる pipe / pty がプロセスあ
たりの制限を越えてしまうことのようです。通常の利用であれば、適当なタイ
ミングで GC などによって掃除されるので問題は顕在化しないのですが、今回
のテストプログラムは連続して大量の子プロセスを生成するため、GC の暇が
なかったのでしょう。

そういうわけで、delete-process を呼び出して、プロセスの資源を明示的に
解放すると回避できました。


2001-03-15  TSUCHIYA Masatoshi  <tsuchiya@pine.kuee.kyoto-u.ac.jp>

	* w3m.el (w3m-exec-process): Add `delete-process' to clean up
	resources of child process.


ただし、process sentinel function に delete-process をしかけても回避で
きなかったので、w3m-retrieve の非同期化はかなり難しいことになってしま
いました。

ソースを調べてみると、資源の解放をしているのは src/process.c で定義さ
れている deactivate_process 関数のようなので、これを呼び出している関数
であれば、どれでも資源を明示的に解放させるために使えそうです。ざっと調
べた感じでは、delete-process とlist-processes が使えそうでした。

# まったく、なんで私の書くプログラムはこうも Emacs の秘孔を突っついて
# しまうのか…。

-- 
土屋 雅稔  ( TSUCHIYA Masatoshi )
    http://www-nagao.kuee.kyoto-u.ac.jp/member/tsuchiya/