file
私は、32ビット実行可能ファイルとして識別される疑わしい起源のライブラリを持っています。ただし、dlopen
32 ビットの CentOS 4.4 マシンで試してみると、dlopen は で終了しSIGFPE
ます。確かに、バイナリのフォーマットに何か問題があった場合dlopen
、エラーを処理する必要がありますか?
問題は次のとおりです。dlopen が SIGFPE を発行する原因となる問題は何ですか?
考えられる理由は次のとおりです。
GNU システムでの ELF 形式でのハッシュ生成に関する興味深い議論があります。ABIの不一致により、そのディストリビューション/システムで構築されていない DSO を組み合わせて一致させると、システムで SIGFPE が発生する可能性があります。
次を使用して、実行可能ファイルに対して GDB を実行します。
]$ gdb ./my_executable
(gdb) run
プログラムがクラッシュしたら、バックトレースを取得します
(gdb) bt
スタックが終了する場合do_lookup_x ()
は、同じ問題が発生している可能性が高く、ロードしようとしているシステムに対して DSO が正しいことを確認する必要があります...ただし、疑わしい起源があるため、問題はおそらく次のような ABI の問題です説明したもの。
疑いのないライブラリ/実行可能ファイルを入手してください! ;)
幸運を