Memcached::libmemcachedでリーク発見

| コメント(0) | トラックバック(0)
Memcached::libmemcachedでリークを発見しました。子クラスであるCache::Memcached::libmemcachedもその影響を受けます。以下のようなコードを書くとすぐわかるのですが、DESTROY()が毎ループではなく、global destruction時まで起きません。
for( 1..100) { my $cache = Cache::Memcached::libmemcached->new( { ... } ); }
これは単純にSV -> SV間のコピーをする時にSvREFCNT_incを呼んでしまうコードがMemcached::libmemcachedのコンストラクタにあったからです。sv_2mortal()することで解決しました。

報告してコミットした時にTimはちょうど寝る寸前だったのでリリースはまだもう少し先になりそうですが、待てない方はsvnから最新版を入手してください:
http://perl-libmemcached.googlecode.com/svn/trunk

Author

Daisuke Maki (a.k.a lestrrat): Perl hacker, Director of Japan Perl Association, YAPC::Asia Tokyo Organizer (2009-2012), Fluent in Japanese, English. Ex-Brazilian (sorta)

#perl #c #ruby #java #mysql #english #japanese #opensource #stf #cooking #scotch #cigar


このエントリーをはてなブックマ
ークに追加

翔泳社よりモダンPerl入門(2010)を出版させていただいております。できれば内容をアップデートしたいので是非皆様・・・現在の在庫処理にお力をお貸しください!><

月別アーカイブ