Perl を Crash させたい。そんな欲求を抑えきれないあなたのために、いくつかの方法を教えよう。
perl -e 'unpack "p",0xdeadbeef'
pack において 'p' は A pointer to a null-terminated string. を意味する。不正なメモリ領域にアクセスすれば死ぬのはあたりまえである。
perl -e 'use overload q{""}=>sub{"$_[0]"};$a=bless{},main;"$a"'
overload の stringify させる部分などで無限ループにおちいると、segv する。
このバグは昔から知られており、ticket が切られているが、なおっていない。
perl -E '$INC[0]=sub {die require B};require B'
@INC の中に coderef を入れると便利なのはみなさんご承知のとおりだが、この部分で再帰的に require すると segv する。
perl -E 'use Encode; DynaLoader::dl_unload_file($_) for @DynaLoader::dl_librefs; encode('euc-jp', 'abcde');'
DynaLoader::dl_unload_file() して開放したあとに使おうとすると SEGV
これは Perl5.8.4 以前に存在する有名な問題だが最新版ではなおっているので、とりあげない。
意外と perl を segv させるのはむずかしい。微妙なところで再帰させるというのが一番容易だといえよう。
Last modified: $Date: 2008-10-26T05:38:56.231052Z $