|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Slava Astashonok 2:5020/400 19 Aug 2005 23:23:32 To : Andrey Melnikoff Subject : Re: samba уже подзадолбала -------------------------------------------------------------------------------- Andrey Melnikoff wrote: > SA> 5 1001 32175 32173 15 0 6160 1988 - S ? 0:00 sshd: > SA> sla@ 0 1001 32176 32175 16 0 3200 2016 wait4 Ss pts/1 0:01 > SA> -bash 0 1001 32195 32176 16 0 2536 912 pause S+ pts/1 0:00 > SA> screen -rd > > Hу и прекрасно. Оно не в ядре, что покажет тебе ps ? Ага, как и sleep из моего примера? См. переписку с E.B.B. > Вот-вот. Тебе открыть страшную тайну, что когда у тебя что-то слинкованно с > libpthread, ld заменяе всякие signal(), sigaction() и всё остальное - > функциями из libpthread. Функции из libpthread всегда ставят свой > альтернативный sa_restorer (причем - принудительно, если ты захочешь поиметь > свой sa_restorer, ты всегда будешь вторым). > sa_restorer занимается тем, что блокирует все сигналы за исключением SIGKILL > (его нельзя заблокировать) и SIGRTMIN (он по нему переключает нити). > Вот тебе и ответ - почему у тебя smbd не киляется кроме как SIGKILL. > Посылать ему SIGRTMIN - бесполезно. И как это объясняет тот факт, что я не могу пристрелить SIGTERM'ом процесс, находящийся в select(), т.е. обычно могу, а иногда не могу? Если процесс/библиотека явно блокирует сигналы - понятно, но вот в этом объяснии о libpthread рациональное зерно где? > Давай выхлоп от strace. Hу, вот снова поймал: что-то приключилось (точнее в этом и есть проблема - что-то приключается) с соединением с ldap-сервером. Именно в select() висел процесс и не реагировал на SIGTERM. Жаль маску сигналов снять не успел: зло смотрел на стоящий трейс, а он вдруг таки взял и дальше пошёл... select(1024, [8], [], NULL, NULL) = 1 (in [8]) read(8, "0\202\4\215\2\1\4d", 8) = 8 read(8, "", 1161) = 0 write(8, "0\5\2\1\5B\0", 7) = -1 EPIPE (Broken pipe) shutdown(8, 2 /* send and receive */) = 0 close(8) = 0 time([1124434268]) = 1124434268 getpid() = 14385 rt_sigaction(SIGPIPE, {0x2dbe07a0, [], SA_RESTORER, 0x2da4f6f8}, {SIG_IGN}, 8) = 0 И соответсвующая ругань в сислог: socket(PF_FILE, SOCK_DGRAM, 0) = 8 fcntl64(8, F_SETFD, FD_CLOEXEC) = 0 connect(8, {sa_family=AF_FILE, path="/dev/log"}, 16) = 0 send(8, "Aug 19 10:51:08 smbd[14385]: nss_ldap: reconnecting to LDAP server...", 73, 0) = 73 В общем, ясно что делать. Маску сигналов при случае проверю, а пока буду смотреть что это за свинство со slapd. -- BOFH excuse #258: That's easy to fix, but I can't be bothered. --- ifmail v.2.15dev5.3 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/6577873bba16.html, оценка из 5, голосов 10
|