LINUX.ORG.RU

SIGSEGV


0

1

Есть некий запредельно глючный демон, которого время от времени прибивает ядро с криками в /var/log/messages типа такого:

Oct 12 13:03:22 host kernel: prog_name[17630]: segfault at 00002aaa00000001 rip 0000000000418a7a rsp 0000000046fec270 error 4

при этом если руками послать SIGSEGV программе, то в логах ничего не отображается.

вопрос: по какому принципу ядро пишет в лог инфу о подобном? только для тех сигналов которые должны породить core или еще по какому то принципу?

если я руками посылаю программе kill -SIGSEGV то ничего в логах не запоминается

★★★★

Наверное ядро пишет в лог те сегфолты, которые посылает приложению само (то есть в момент отправки).

creepnee
()
Ответ на: комментарий от creepnee

Какая программа в здравом уме сама себе шлёт SIGSEGV? :) Ядро это шлёт, ядро... После того, в процессе этой программы general protection fault проявляется, отлов которого, как известно, является прерогативой и святой обязанностью ядра.

mv ★★★★★
()
Ответ на: комментарий от mv

Я это и имел в виду, что ядро посылает сигнал. Просто написал коряво.

creepnee
()
Ответ на: комментарий от true_admin

я не то что бы удивлился но хотел бы четкого описания явления, вот скажем про kernel.print-fatal-signals я не знал, да и сейчас не совсем ясно что оно дает)

quest ★★★★
() автор топика

как SIGSEGV смоделировать ясно:

char *p = NULL;
*p = 0;

а как смоделировать SIGPIPE? SIGABRT?

quest ★★★★
() автор топика
Ответ на: комментарий от true_admin

понятно, включил теперь в лог все валится, спасибо

quest ★★★★
() автор топика
Ответ на: комментарий от mv

>Какая программа в здравом уме сама себе шлёт SIGSEGV? :)

Я видел одну, которая сама в себе имитирует сегфолт, получив... SIGQUIT (Вроде упр. передается на пустой указатель функции, как-то так. Может не доимплементили какой-то хэндлер, история умалчивает), а завершается, внезапно, по SIGALRM, при этом падает в кору в дебажной сборке, когда все уже вроде бы завершено (какие-то глобальные статики удаляются, вызывая разрыв мну у glibc) Чтоб сама себе слала - не видел :)

slackwarrior ★★★★★
()
Ответ на: комментарий от true_admin

>kill -PIPE/kill -ABRT :)

это я еще в первом сообщении описывал, это не ядро пошлет а я с помощью kill, я говорил о том чтобы смоделировать такую ситуацию когда ядро пошлет этот сигнал

quest ★★★★
() автор топика

причем если сигнал например SIGSEGV перехватить своим обработчиком то послав сигнал ядро не делает запись в лог

quest ★★★★
() автор топика
Ответ на: комментарий от quest

если ты перехваешь сигнал то ядро думает что это штатная фича твоего приложения, поэтому и не пишет :)

true_admin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.