Не удалось записать дамп ядра. Основные дампы были отключены
Я работал над проектом vision и использую некоторые библиотеки C++ на Java от JNI.
ОС: Ubuntu 12.04
В моем проекте я использую библиотеку повышения для генерации случайного числа. Но иногда я получаю исключение следующим образом:
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
Когда я искал это в Stackru, я обнаружил некоторые проблемы, связанные с IDE (Eclipse). Приложение не зависит от IDE. Таким образом, решение также должно быть независимым от IDE. Есть идеи?
4 ответа
Я испытывал ту же проблему.
Как говорит сама ошибка -
Не удалось записать дамп ядра. Основные дампы были отключены. Чтобы включить дамп ядра, попробуйте
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
Если проблема не устраняется, обратитесь к этому и этому от askUbuntu.
Дамп ядра или аварийный дамп - это снимок памяти запущенного процесса. Дамп ядра может автоматически создаваться операционной системой при возникновении фатальной или необработанной ошибки (например, сигнала или системного исключения).
для получения дополнительной информации https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/bugreports004.html
В моем случае эта ошибка возникла из-за того, что я использовал неправильную версию Java для своего проекта. Я должен был использовать Java 11, а вместо этого использовал Java 8.
Для тех, кто видит эту проблему изнутри Jenkins (как и мы): чтобы включить дамп ядра от jenkins, отредактируйте /etc/init.d/jenkins и добавьте "--core" в $DAEMON_ARGS. Установка ulimit напрямую из сценария оболочки или через /etc/security/limits.conf не работает.