私はビジョンプロジェクトに取り組んでおり、JNIのJavaでC++ライブラリを使用しています。
OS:Ubuntu 12.04
私のプロジェクトでは、乱数を生成するために boost ライブラリを使用しています。ただし、次のような例外が発生する場合があります。
Core dum140002367330048 also had an error]
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007f54f72a615a, pid=11979, tid=140002352568064
#
# JRE version: Java(TM) SE Runtime Environment (7.0_67-b01) (build 1.7.0_67-b01)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (24.65-b04 mixed mode linux-AMD64 compressed oops)
# Problematic frame:
# C [libCBIR.so+0x3215a] boost::random::mersenne_twister_engine<unsigned int, 32ul, 624ul, 397ul, 31ul, 2567483615u, 11ul, 4294967295u, 7ul, 2636928640u, 15ul, 4022730752u, 18ul, 1812433253u>::operator()()+0x3a
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
StackOverflowでこれを検索したところ、IDE(Eclipse)に関連する問題がいくつか見つかりました。アプリケーションはIDEから独立しています。したがって、ソリューションもIDEから独立している必要があります。何か案は?
同じ問題が発生していました。
として、エラー自体が示唆している-
コアダンプの書き込みに失敗しました。コアダンプは無効になっています。コアダンプを有効にするには、
ulimit -c unlimited
開始する前にJava再び
ulimit
は、ユーザー制限を取得および設定します。 ulimit doの詳細については-
man ulimit
したがって、ターミナルを開いて実行します-
ulimit -c unlimited
これで問題が解決するはずです。変更が成功したかどうかを確認するには、次を実行します-
ulimit -c -l
これにより、次のような出力が得られます。
core file size (blocks, -c) unlimited
max locked memory (kbytes, -l) 64
Jenkins内でこの問題が発生している場合(現状):Jenkinsからコアダンプを有効にするには、/ etc/init.d/jenkinsを編集し、$ DAEMON_ARGSに「--core」を追加します。シェルスクリプトから直接、または/etc/security/limits.confを介してulimitを設定しても機能しません。
コアダンプまたはクラッシュダンプは、実行中のプロセスのメモリスナップショットです。致命的または未処理のエラー(信号やシステム例外など)が発生すると、オペレーティングシステムによってコアダンプが自動的に作成されます。
詳細情報 https://docs.Oracle.com/javase/8/docs/technotes/guides/troubleshoot/bugreports004.html