HOME / コンピュータTips / Solaris / コンパイル / Perl 5.8.8
Date: 2024/12/13 | | Tags: Perl 5.8.8 Solaris コンパイル Out of memory!
Soalris10に入っている標準のPerlには、どういうワケか、伝統的に正規表現系が怪しい動きをする。
このパッチは、「Out of memory!」を治すパッチ。
添付のファイルを実行して、下記のようになると、インストールされているPerlにはバグがある。
47 0. 1. Out of memory!
どうやらSolarisで動かすときに発現するPerlの問題なのかわからないが、いずれにしても、パッチを見れば分かるとおり、変数の初期化問題である。
とりあえずお友達が作ったパッチを当ててみると再現はしないような気がする。
--- regcomp.c.orig Tue Jun 5 00:52:28 2007 +++ regcomp.c Tue Jun 5 00:53:31 2007 @@ -1810,6 +1810,8 @@ r->subbeg = NULL; r->reganch = pm->op_pmflags & PMf_COMPILETIME; r->nparens = RExC_npar - 1; /* set early to validate backrefs */ + r->lastparen = 0; + r->lastcloseparen = 0; r->substrs = 0; /* Useful during FAIL. */ r->startp = 0; /* Useful during FAIL. */
下記のスクリプトはconfigureだけを行うので、エラーがないことを確認して、make && make test && make installすると良い。
なお、64bitコンパイルが必要ない場合は、下を見て、適当に編集するとよいでしょう。コメントアウトされている方が、32bit版ね。
#!/bin/sh rm -f config.sh Policy.sh # for 32bit #./Configure -des -Dlibs='-lsocket -lnsl -ldl -lm -lc' \ #-Dperllibs='-lsocket -lnsl -ldl -lm -lc' \ #-Doptimize='-xO3 -xspace -xildoff' # for 64bit rm -f config.sh Policy.sh ./Configure -des -Dlibs='-lsocket -lnsl -ldl -lm -lc' \ -Dperllibs='-lsocket -lnsl -ldl -lm -lc' \ -Doptimize='-xO3 -xspace -xildoff' \ -Dccflags='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TS_ERRNO' \ -Duse64bitint=define \ -Duse64bitall=undef \ -Duselongdouble=undef \ -Dd_longlong=define \ -Dd_longdbl=define \ -Divtype='long long' \ -Dnvtype='double' \ -DOff_t='off_t' \ -Dprototype=define \ -Ddlsrc=dl_dlopen.xs \ -Ddlext=so \ -Dd_dlsymun=undef