|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Slava Astashonok 2:5020/400 23 Aug 2005 10:41:19 To : Andrey Melnikoff Subject : Re: samba уже подзадолбала --------------------------------------------------------------------------------
Andrey Melnikoff wrote:
> SA> Hу, вот снова поймал: что-то приключилось (точнее в этом и есть проблема
> SA> - что-то приключается) с соединением с ldap-сервером. Именно в select()
> SA> висел процесс и не реагировал на SIGTERM. Жаль маску сигналов снять не
> SA> успел: зло смотрел на стоящий трейс, а он вдруг таки взял и дальше
> SA> пошёл...
> А это есть такое :( Под strace не всегда возможно получить ситуацию. Без
> strace - гонит, с strace - работает как по маслу. Hарод в LKML бодался по
> этому поводу.
Тут всё значительно проще оказалось. Это smbd перехватывает SIGTERM. В
обработчике выставляет соответсвующий флаг, который проверятся в основном
цикле. А висит smbd в libldap - крутится в while на EINTR:
select(1024, [8], [], NULL, NULL) = ? ERESTARTNOHAND (To be restarted)
- --- SIGTERM (Terminated) @ 0 (0) ---
write(23, "\1", 1) = 1
sigreturn() = ? (mask now [FPE USR2 PIPE RTMIN])
select(1024, [8], [], NULL, NULL) = ? ERESTARTNOHAND (To be restarted)
- --- SIGTERM (Terminated) @ 0 (0) ---
write(23, "\1", 1) = 1
sigreturn() = ? (mask now [FPE USR2 PIPE RTMIN])
Дальше как обычно:
select(1024, [8], [], NULL, NULL) = 1 (in [8])
read(8, "01\2\1\5e\7\n", 8) = 8
read(8, "0\202\4%\2\1\4d\202\4\36\4(xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 43) = 43
select(1024, [8], [], NULL, NULL) = 1 (in [8])
read(8, "0 \4\4xxxx", 8) = 8
read(8, "1\30\4\26xxxxxxxxxxxxxxxxxxxxxx", 26) = 26
select(1024, [8], [], NULL, NULL) = 1 (in [8])
read(8, "", 8) = 0
write(8, "0\5\2\1\7B\0", 7) = -1 EPIPE (Broken pipe)
shutdown(8, 2 /* send and receive */) = -1 ENOTCONN (Transport endpoint is
not connected)
close(8) = 0
time([1124700274]) = 1124700274
getpid() = 19472
rt_sigaction(SIGPIPE, {0x267a67a0, [], SA_RESTORER, 0x266156f8}, {SIG_IGN}, 8) =
0
Маски сигналов:
UID PID PENDING BLOCKED IGNORED
CAUGHT STAT TTY TIME COMMAND
0 19472 0000000000000000 0000000080001880 0000000000001000
0000000380014661 S ? 0:00 /usr/sbin/smbd -D
Как видно, обошлось без мистики. Только вылезли грабли незнакомым для меня
образом, что и привело к некоторому смятению.
Благодарю за участие. E.B.B. разумеется тоже.
--
BOFH excuse #223: The lines are all busy (busied out, that is -- why
let them in to begin with?).
--- ifmail v.2.15dev5.3
* Origin: Demos online service (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/6577ef540e41.html, оценка из 5, голосов 10
|