Perl 5.10.0 正規表現でメモリリーク発生

Perl 5.10.0 には正規表現周りでメモリリークが発生するとのこと。
regcomp.c の修正で解決済み らしいが、Linux ディストリビューションで
既に巷に出回っている 5.10.0 は当面は、現役続行になりそうなので、
サーバでデーモン的に常時起動している場合は、問題になりそう?
 
ちょうど XML::TreePP モジュールで、『Perl 5.8 では問題がないのに、
Perl 5.10 だとメモリリークが発生する』との問い合わせが来たので
確認していたところ。
while ( 1 ) {
        qr/something/;
}
これだけのコードでメモリリークを確認できます。
5.8.8 では使用メモリは 5MB くらいなのに、5.10.0 ではガシガシ増える。
コードゴルフ的には、ワンライナーでも確認できたり。
$ perl -e 'qr// while 1'
XML::TreePP で使っていた正規表現は、前方一致検索だけのシンプルな
コードだったので、substr() を使って正規表現の利用を回避して対応。
 
正規表現をいったん使うと、そのメモリが開放されないのかな?
Perl なのに正規表現で問題発生とは、ちょっと困りますね。
正規表現がどうしても必要なプログラムって多いと思いますが、
5.10.0 では使えないということになってしまうのでしょうか?
Perl 5.8.0 も鬼門だったが、5.10.0 もやっぱり避けたほうが良い!?
 
PS)
XML::TreePP への問い合わせをもらったのは7月8日だったのですが、
確認する時間がなくて放置してしまっていました、ゴメンナサイ!

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 16

なるほど(納得、参考になった、ヘー) なるほど(納得、参考になった、ヘー) なるほど(納得、参考になった、ヘー) なるほど(納得、参考になった、ヘー)
驚いた 驚いた 驚いた 驚いた
面白い 面白い
ナイス ナイス
ガッツ(がんばれ!) ガッツ(がんばれ!)
かわいい かわいい

この記事へのコメント

Henrich
2008年10月30日 10:37
有用な情報ありがとうございます。
とりあえず、自分のできる範囲ということで Debian BTS に報告してみました。
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=503975
ツッコミやフォローがあればお願い致します。

この記事へのトラックバック

  • 対応する括弧にマッチする正規表現

    Excerpt: Perl5.10の正規表現では名前付きキャプチャとメモリリークが追加されました。 Perl 5.10.0 正規表現でメモリリーク発生 Kawa.netブログ(川崎有亮)/ウェブリブログ ち.. Weblog: にひりずむ::しんぷる racked: 2009-04-12 04:28