アプリで websockets をサポートするためにlibwebsockets ( http://libwebsockets.org/trac/libwebsockets ) ライブラリを使用しようとしています。安全である必要があるので、https://github.com/x2on/OpenSSL-for-iPhone/blob/master/build-libssl.shスクリプトを使用して構築した openssl lib で構築しようとしています。CMake は libwebsockets プロジェクトを作成します。これを少し変更して、静的 openssl ライブラリを使用します。次に、このプロジェクトをワークスペースに追加してアプリをビルドします。アプリは問題なくビルドされています。それを起動して Websocket 接続を確立しようとすると、SSL_CTX_new() を使用して新しいコンテキストを作成しようとすると、SHA1_Final 関数でクラッシュします。
* thread #1: tid = 0x2503, 0x000fa47e MyApp`SHA1_Final + 22, queue = 'com.apple.main-thread, stop reason = EXC_BAD_ACCESS (code=1, address=0x22986341)
frame #0: 0x000fa47e MyApp`SHA1_Final + 22
frame #1: 0x00130a90 MyApp`EVP_DigestFinal_ex + 56
frame #2: 0x0012e45c MyApp`ssleay_rand_add + 492
frame #3: 0x0012f056 MyApp`RAND_poll + 614
frame #4: 0x0012e726 MyApp`ssleay_rand_bytes + 166
frame #5: 0x000ef49c MyApp`SSL_CTX_new + 464
frame #6: 0x00153218 MyApp`libwebsocket_create_context(info=0x2fda90bc) + 1364 at libwebsockets.c:1975
また、nss ライブラリ ( https://developer.mozilla.org/en-US/docs/NSS ) と、プロジェクトの他のライブラリに必要なその他のセキュリティ関連ファイルも多数あります。
1 つのビューで libwebsockets と openssl ライブラリのみを含む単純なテスト プロジェクトを作成しようとしましたが、そのプロジェクトでは openssl がクラッシュしません。
私が抱えている問題は、同じプロジェクト内に nss ライブラリと openssl ライブラリが存在するか、openssl と他のプロジェクトのコンパイル設定が異なる可能性があることに関連していると思います。(はい、チェックしました。libwebsockets lib は SSL_library_init() を呼び出します)。
なぜこれが起こるのか、どうすれば修正できるのか、ご意見をいただければ幸いです。