Hatena::ブログ(Diary)

”><xmp>TokuLog 改メ tokuhirom’s blog このページをアンテナに追加 RSSフィード

[]today's segv

use Compress::Zlib;
use Devel::Symdump;
Devel::Symdump->rnew->packages

これが perl5.10 だと bus error になってしまいます。Devel::Symdump は Test::Class でもつかわれているので困りもの。

チケットはだいぶ前にでてるようなんですが。誰かなおしてくれるといいなあ(他人まかせ)。

http://rt.cpan.org/Public/Bug/Display.html?id=43675

【追記】

いろいろ紆余曲折ありましたが、なんだかんだで Test::Class から Devel::Symdump への依存を切りはなして解決。

今は mro つかってスマートにかけるし、mro はコアなので、確実にメンテされるという点からも、その方がいいという判断。

mro がつかえない場合には MRO::Compat がつかえるし。

gfxgfx 2009/07/03 15:05 とりあえずこれでSEGVはなおるね。テストは知らない。これはむしろPerlのバグといってもいいかも。

--- Symdump.pm~ 2007-06-25 15:07:38.000000000 +0900
+++ Symdump.pm 2009-07-03 15:02:55.451240000 +0900
@@ -49,8 +49,10 @@
my($key,$val,$num,$pack,@todo,$tmp);
my $result = {};
foreach $pack (@packages){
- no strict;
- while (($key,$val) = each(%{*{"$pack\::"}})) {
+ no strict 'refs';
+ my $stash = \%{$pack .'::'};
+ while (($key,$val) = each(%{$stash})) {
+ next if ref(\$val) ne 'GLOB'; # stubs and constants are not type-globs
my $gotone = 0;
local(*ENTRY) = $val;
#### SCALAR ####

gfxgfx 2009/11/09 17:59 インデントが潰れていない適用可能版パッチは本文のリンク先にもありますが,以下のアドレスから入手できます。
http:/rt.cpan.org//Ticket/Attachment/627599/319466/fix-segv.patch

http://d.hatena.ne.jp/celeron1ghz/20091108/1257685907 に転載されていたので補足しました。

gfxgfx 2009/11/10 14:02 さらに追記。パッチを直接ダウンロードすることはできないみたいですね。チケットページからなら落とせるようです。

tokuhiromtokuhirom 2009/11/10 15:14 andk 的には perl のバグだから、perl なおせよ、的なかんじっぽい?

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証