Gauche > Archives > 2014/03/06

2014/03/06 20:41:39 UTCshiro
#
rfc.tlsにリソースリークがあった。chaton-twitterブリッジがいつの間にか死んでる件も多分そのせい。rfc.tlsはtlsオブジェクトがコンテキストを持ってて、それを使って何回でもconnectができるんだけど、コンテキストの破棄はこれまでファイナライザに任せるだけだった。
#
tlsコンテキストは/dev/urandomをオープンしたfdを保持してる。頻繁にtlsを作ってると、gcがかかるより前にfdを使い尽くしてしまう。Schemeから直接ファイルをopenしてるなら、fdが足りなくなったらgcを走らせるんだけど、今回の場合はopen失敗がSchemeから直接見えないのでそれができない。
#
コンテキストの後始末を陽にやるようにして解決。ファイナライザはリソース管理の解決にはならないという例かもしれない。
#
む、getはちゃんと閉じるけどpostだとまだ/dev/urandomが開きっぱなしになってるっぽい
#
いや違うか。postがエラーになった時がまずいのかな。むむむ。