Пустой coredump для сигнала 11

Maxim Dounin mdounin на mdounin.ru
Ср Сен 21 22:39:47 UTC 2022


Hello!

On Wed, Sep 21, 2022 at 02:31:42PM -0400, edo888 wrote:

> Здравствуйте,
> 
> Очень редко у меня в журнале ошибок появляется "worker process NNN exited on
> signal 11 (core not dumped)"
> 
> Я пытаюсь создать дамп, но что бы я ни делал, он не создается или его размер
> равен 0.
> 
> Я использую FreeBSD, и первое, что я попытался сделать, это разрешить nginx
> создавать дампы, но независимо от того, насколько большой я установил
> worker_rlimit_core, дампы не создаются. Я проверил исходный код и вижу
> следующее:
> 
> /usr/include/sys/signal.h:
> #define SIGSEGV 11 /* segmentation violation */
> 
> /usr/include/sys/wait.h:
> #define WCOREFLAG 0200
> #define _W_INT(i) (i)
> #define WCOREDUMP(x) (_W_INT(x) & WCOREFLAG)
> 
> nginx/src/os/unix/ngx_process.c:
> ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, 0, "%s %P exited on signal
> %d%s", process, pid, WTERMSIG(status), WCOREDUMP(status) ? " (core dumped)"
> : " (core not dumped)");

В nginx'е такого кода нет, там вместо "(core not dumped)" стоит 
пустая строка.  Это вы сами правили для наглядности, или где-то 
взяли версию со сторонними патчами?  Если второе - то лучше взять 
из портов или с nginx.org версию без сторонних изменений.

> Это означает, что WCOREDUMP(11) равен 0 и дамп создаваться не будет. Так что
> не знаю, что мне делать.
> 
> Я также попытался включить дампы ядра через ОС, установив sysctl
> kern.sugid_coredump=1 и sysctl kern.corefile=/home/coredump/%N.core.%P, а
> для ulimit установлено значение unlimited. После этого я вижу, что дампы
> имеют размер 0.
> 
> Можете подсказать, как включить дампы для сигнала 11?

Убедиться, что стоит kern.sugid_coredump, стоит kern.corefile, рабочий 
процесс nginx'а имеет права на запись в указанный в kern.corefile 
каталог, и на соответствующем диске хватает места.

Если файл создаётся, но при этом нулевого размера - скорее всего 
дело в отсутствии места на диске.  Где-то в /var/log/messages 
система будет плакать как-то так:

Sep 22 01:33:34 vm-bsd kernel: pid 10513 (nginx), uid 65534 inumber 429133 on /: filesystem full
Sep 22 01:33:34 vm-bsd kernel: Failed to write core file for process nginx (error 28)
Sep 22 01:33:34 vm-bsd kernel: pid 10513 (nginx), jid 0, uid 65534: exited on signal 6

Успехов в разборках, если что - приходите с вопросами, FreeBSD тут 
многие знают хорошо.  Но лучше напрямую в mailing list, а не через 
гейт на форуме.

-- 
Maxim Dounin
http://mdounin.ru/



Подробная информация о списке рассылки nginx-ru