perlにて「symbol lookup error: undefined symbol: Perl_Gthr_key_ptr」エラーがでる


以前まで正常に動いていたperlスクリプトが、以下のようにエラーを出すようになりました。

[code]

    perl: symbol lookup error: /usr/local/lib64/perl5/auto/JSON/XS/XS.so: undefined symbol: Perl_Gthr_key_ptr
    
[/code]

そこでCPANでエラーに書かれているライブラリをインストールしようとしても、以下のようにエラーとなります。

[code]

    cpan[1]> install JSON::XS       
    CPAN: Storable loaded ok (v2.45)
    Reading '/root/.cpan/Metadata'
      Database was generated on Fri, 09 Jan 2015 08:53:28 GMT
    CPAN: LWP::UserAgent loaded ok (v6.06)
    /usr/bin/perl: symbol lookup error: /usr/local/lib64/perl5/auto/Time/HiRes/HiRes.so: undefined symbol: Perl_Istack_sp_ptr
    
[/code]

先日まで問題なく動いていたのに、どのタイミングでこのような症状がでるようになったのかわかりません。  
サーバーはAWSのEC2で、OSはLinuxです。

原因がお分かりの方はいませんでしょうか？




Linuxのlddコマンドで、エラーの出ている.soファイルを覗いてみてください。  
中にnot foundと出ている行があるはずです。

原因としてはおそらくPerlのバージョン違いのライブラリまたはバージョン違いの共通ライブラリを入れてしまい、シンボルが見つからないんだと思います。  
lddでnot foundと出たライブラリもしくはヘッダーを、使っているPerlのバージョンに合わせたもので再インストールすれば治ると思います。

[2015/03/18 EDIT]  
AWSのフォーラムに該当スレッドが既に存在しているようですね。  
<https://forums.aws.amazon.com/message.jspa?messageID=532885>  
Time::HiResを強制インストールすれば治るといってるようですが、試してみる価値はあると思います。

Googleへの検索キーワードは「AWS s3fs perl symbol lookup error」で上記スレッドがトップにヒットしましたよ。

