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

2022-09-22 Пенетрантность edo888
"limits -P " открыл мои глаза, спасибо большое!

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,295263,295278#msg-295278

___
nginx-ru mailing list -- nginx-ru@nginx.org
To unsubscribe send an email to nginx-ru-le...@nginx.org


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

2022-09-21 Пенетрантность Maxim Dounin
Hello!

On Wed, Sep 21, 2022 at 07:27:11PM -0400, edo888 wrote:

> Спасибо за ответ. Вы правильно отметили, я сам добавил "(core not dumped)"
> во время отладки.
> 
> У меня больше 100 ГБ места. В сообщениях у меня только это:
> kernel: pid NNN (nginx), jid 0, uid 80: exited on signal 11
> 
> Не знаю, что мне еще сделать.

Если при этом core-файл создаётся, но каких-либо сообщений об 
ошибках записи дампа нет - то стоит ещё раз посмотреть на лимит 
RLIMIT_CORE.  Судя по kern/kern_sig.c и kern/imgact_elf.c - 
превышение (ненулевого) лимита это примерно единственный случай, 
когда файл будет создан, но ничего не будет записано и при этом не 
будет ошибок.

Проверьте размеры рабочих процессов, и поднимите лимит 
worker_rlimit_core до значения, перекрывающего размеры рабочих 
процессов с запасом.  Ну и не забудьте перезагрузить конфигурацию 
и/или перезапустить nginx.  (Just in case, текущие лимиты рабочих 
процессов можно посмотреть или поменять с помощью команды
"limits -P ").

И лучше после этого протестировать работу дампа явно руками, 
послав что-нибудь вроде сигнала 6 (abort) одному из рабочих 
процессов.  При реальном падении размер рабочего процесса 
непосредственно перед падением может резко вырасти, скажем, если у 
вас там какой-нибудь код, который сначала выделяет много памяти, и 
только потом падает.

-- 
Maxim Dounin
http://mdounin.ru/
___
nginx-ru mailing list -- nginx-ru@nginx.org
To unsubscribe send an email to nginx-ru-le...@nginx.org


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

2022-09-21 Пенетрантность edo888
Спасибо за ответ. Вы правильно отметили, я сам добавил "(core not dumped)"
во время отладки.

У меня больше 100 ГБ места. В сообщениях у меня только это:
kernel: pid NNN (nginx), jid 0, uid 80: exited on signal 11

Не знаю, что мне еще сделать.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,295263,295267#msg-295267

___
nginx-ru mailing list -- nginx-ru@nginx.org
To unsubscribe send an email to nginx-ru-le...@nginx.org


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

2022-09-21 Пенетрантность Maxim Dounin
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 mailing list -- nginx-ru@nginx.org
To unsubscribe send an email to nginx-ru-le...@nginx.org


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

2022-09-21 Пенетрантность edo888
У меня есть --with-debug в аргументах конфигурации nginx. Да, я выполнил
шаги, описанные в этой статье.

Спасибо!

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,295263,295265#msg-295265

___
nginx-ru mailing list -- nginx-ru@nginx.org
To unsubscribe send an email to nginx-ru-le...@nginx.org


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

2022-09-21 Пенетрантность Илья Шипицин
можете показать вывод "nginx -V" ?

под руками нет freebsd, чтобы проверить, применимо ли вот это к
freebsd Debugging
NGINX | NGINX Plus


ср, 21 сент. 2022 г. в 23:32, edo888 :

> Здравствуйте,
>
> Очень редко у меня в журнале ошибок появляется "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)");
>
> Это означает, что WCOREDUMP(11) равен 0 и дамп создаваться не будет. Так
> что
> не знаю, что мне делать.
>
> Я также попытался включить дампы ядра через ОС, установив sysctl
> kern.sugid_coredump=1 и sysctl kern.corefile=/home/coredump/%N.core.%P, а
> для ulimit установлено значение unlimited. После этого я вижу, что дампы
> имеют размер 0.
>
> Можете подсказать, как включить дампы для сигнала 11?
>
> Спасибо!
>
> Posted at Nginx Forum:
> https://forum.nginx.org/read.php?21,295263,295263#msg-295263
>
> ___
> nginx-ru mailing list -- nginx-ru@nginx.org
> To unsubscribe send an email to nginx-ru-le...@nginx.org
>
___
nginx-ru mailing list -- nginx-ru@nginx.org
To unsubscribe send an email to nginx-ru-le...@nginx.org