OpenSSL(正確には暗号化ライブラリlibeay32.lib/crypto.lib)の関数にファイルポインタやBIOオブジェクトを渡すとハングアップすることがあります。
例えばこんな関数
PEM_write_RSAPrivateKey()
PEM_wite_RSA_PUBKEY()
PEM_write_bio_RSAPrivateKey()
PEM_wite_bio_RSA_PUBKEY()
i2d_RSAPrivateKey_fp()
i2d_RSAPublicKey_fp()
i2d_RSA_PUBKEY_fp()
これらの関数をコールした瞬間、ハングアップ&強制終了することがあります。
スポンサーリンク
原因と対策
原因と対策はこちらを見てください。
DLL内の関数にファイルポインタを渡すとハングアップする そんな時の原因と対策
簡単に言うと、
- アプリとOpenSSLライブラリの両方を同じコンパイラ、同じバージョンでビルドする
- OpenSSLライブラリをスタティックリンクする
のどちらかでOKです。
こんな厄介な現象、多分Windowsだけですかね。Linuxではどうなんでしょう?