Подтвердить что ты не робот

Не удалось записать основной дамп. Отбросы ядра отключены

Я работаю над проектом видения и использую некоторые библиотеки С++ в Java JNI.

ОС: 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. Любые идеи?

4b9b3361

Ответ 1

У меня возникла одна и та же проблема.

Как и сама ошибка, -

Не удалось записать основной дамп. Сброс ядра отключен. Чтобы включить сброс ядра, попробуйте 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

Если проблема не устранена, обратитесь к this и этим из askUbuntu.

Ответ 2

Дамп ядра или дамп сбоя - это моментальный снимок памяти текущего процесса. Сценарий ядра может автоматически создаваться операционной системой, когда происходит фатальная или необработанная ошибка (например, сигнал или системное исключение).

для получения дополнительной информации https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/bugreports004.html

Ответ 3

Для тех, кто видит эту проблему из Jenkins (как мы): чтобы включить дампы ядра из jenkins, отредактируйте /etc/init.d/jenkins и добавьте "--core" в $ DAEMON_ARGS. Установка ulimit непосредственно из сценария оболочки или через /etc/security/limits.conf не будет работать.