解決:Crypt::SSLeayがSegmentation faultでcoreを吐く件について

追記

0.52_01 2006-12-17

  • add call to SSL_library_init() in new()

というわけで、最新版のCrypt::SSLeayでは修正されています。



表題の件(http://d.hatena.ne.jp/holidays-l/20060828/p3)に関してid:odzさんからトラックバックをいただきました。
どうみても初トラックバックです。本当にありがとうございm(ry

不思議に思って apt-get source libcrypt-ssleay-perl してソースパッケージを取得してみると、
(略)
+ SSL_library_init();
(略)
ってパッチが当たってた。ぐはぁ。

とのことなので、opensslを最新版に戻すことに。


Cygwinのsetup.exeでopenssl-0.9.8b, openssl-devel-0.9.8b(共に最新版)を再インストールし、Crypt::SSLeayも再インストール。
例のアレをやると案の定落ちた。

$ perl -MCrypt::SSLeay -e 'my $ctx = Crypt::SSLeay::CTX->new(23);'
Segmentation fault (core dumped)

次にCrypt::SSLeayにパッチを当ててインストールする。

$ cpan
cpan> look Crypt::SSLeay
$ cat Crypt-SSLeay-0.51.patch
--- SSLeay.xs.orig      2003-05-28 15:55:02.000000000 +0900
+++ SSLeay.xs   2006-08-30 12:03:26.053808000 +0900
@@ -106,6 +106,8 @@
        char buf[1024];
         int rand_bytes_read;

+        SSL_library_init();
+
        if(!bNotFirstTime) {
                SSLeay_add_all_algorithms();
                SSL_load_error_strings();
$ patch -p0 < Crypt-SSLeay-0.51.patch
$ perl Makefile.PL
$ make
$ make test
$ make install

問題なく完了。例のアレも落ちなくなった。

$ perl -MCrypt::SSLeay -e 'my $ctx = Crypt::SSLeay::CTX->new(23);'

id:odzさん、どうもありがとうございました。