После недавнего обновления до systemd нет дампов памяти?

12

Когда я выполняю программу, над которой я работаю, происходит сбой со следующим сообщением:

...
Aborted (core dumped)

Однако дамп ядра не создается. Основные дампы были написаны ранее, и я не помню, чтобы я что-то изменил.

Когда я бегу, ulimit -aя возвращаюсь,

$ ulimit -a
core file size          (blocks, -c) unlimited
...

Другие моменты,

  • Я проверил, что мой пользователь может создавать файлы в текущем каталоге.
  • Я читал о /proc/sys/fs/suid_dumpable. В настоящее время он установлен на 0 на моей машине. Я пытался изменить его на 1 или 2, но без разницы.
  • Я также пытался запустить программу от имени пользователя root, но это тоже не имело значения.

К сожалению, я не помню, когда я смог произвести последний успешный дамп памяти.

Филипп Классен
источник

Ответы:

8

Из документов coredump.conf,

Чтобы отключить файл конфигурации, предоставленный поставщиком, рекомендуется поместить символическую ссылку /dev/nullв каталог конфигурации /etc/с тем же именем файла, что и файл конфигурации поставщика.

sudo ln -s /dev/null /etc/sysctl.d/coredump.conf
sudo systemd-sysctl 

Начиная с systemd, все управляется по-другому.

schaiba
источник
Вау, ты прав! Не так давно я перешел на systemd. sudo systemd-coredumpctlпоказывает все недостающие дампы ядра. Ваше решение сработало, но только после перезагрузки системы.
Филипп Классен
1
systemdОн systemd-sysctl.serviceпросто запускается sysctlв нужной точке загрузки и обрабатывает его вручную при изменениях. И не создавайте и не перезаписывайте файлы конфигурации, не изучая, для чего они предназначены, и их содержимого.
vonbrand
1
Кажется, файл переименован в 50-coredump.conf, чтобы применить настройки в текущей загрузке, мне пришлось запустить изменение настройки sysctl вручную, см. Stackoverflow.com/q/2065912/427545 .
Лекенштейн
2
Чтобы восстановить настройки по умолчанию, не устанавливайте пустую строку, используйте вместо этого:sysctl -w kernel.core_pattern="core"
Lekensteyn
2

Возможно, вы захотите использовать coredumpctlкоманду, чтобы либо получить дамп ядра, либо запустить на нем gdb. Это «одобренный systemd» метод борьбы с ними. : - /

В определенном смысле приятно, что systemd захватывает все эти вещи, потому что через некоторое время автоматически их стирает, а также облегчает загрузку аварийных дампов для отчетов об ошибках.

Но это было резкое изменение с небольшим количеством уведомлений или подсказок для людей, которые знали, как работает coredumps до того, как включился systemd. Даже удаление файла с именем 'core.pid.txt' с инструкциями по использованию coredumpctl для получения coredump, а также о том, как отключить создание .txtфайлов, было бы большой помощью, даже если бы они также засоряли Файловая система на некоторое время.

всевозможный
источник