poderia getaddrinfo ou connect call obter um processo em D (estado ininterrupto)

1

Aconteceu alguns dias seguidos que um dos nossos processos não poderia ser morto por "kill -9". O kill -9 costumava ser capaz de matar este processo na base diária de forma confiável por mais de 2 anos. Este processo tem tentado se conectar a um servidor remoto (que estava em baixo da noite) via getaddrinfo e conectar uma vez a cada 1 segundo.

Depois que eu notei que o kill -9 falhou em matá-lo, (alguns minutos depois), o comando "ps aux" mostra que está em "S". Então, estritamente falando, seu estado poderia estar em estado "D" quando "kill -9" era executado.

Então, aqui veio a minha pergunta: é possível que getaddrinfo ou connect call coloque esse processo em estado "D"? getaddrinfo envolve consulta DNS, o que pode levar algum tempo.

Aqui está a informação strace (eu substituí o endereço IP com um falso), a seguinte seqüência repita uma vez a cada 1 segundo:

$ strace -p 3634009
Process 3634009 attached - interrupt to quit
restart_syscall(<... resuming interrupted call ...>) = 0
write(2, "Tue Dec  5 23:01:46 2017 INFO  f"..., 74) = 74
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 4
socket(PF_NETLINK, SOCK_RAW, 0)         = 6
bind(6, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
getsockname(6, {sa_family=AF_NETLINK, pid=3634009, groups=00000000}, [12]) = 0
sendto(6, "
$ strace -p 3634009
Process 3634009 attached - interrupt to quit
restart_syscall(<... resuming interrupted call ...>) = 0
write(2, "Tue Dec  5 23:01:46 2017 INFO  f"..., 74) = 74
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 4
socket(PF_NETLINK, SOCK_RAW, 0)         = 6
bind(6, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
getsockname(6, {sa_family=AF_NETLINK, pid=3634009, groups=00000000}, [12]) = 0
sendto(6, "%pre%%pre%%pre%%pre%2k'Z%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%", 20, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 20
recvmsg(6, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"0%pre%%pre%%pre%%pre%%pre%2k'ZYs7%pre%06%pre%%pre%%pre%%pre%%pre%7%pre%%pre%"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 108
recvmsg(6, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"%pre%%pre%%pre%%pre%%pre%2k'ZYs7%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%7%pre%%pre%"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 20
close(6)                                = 0
connect(4, {sa_family=AF_INET, sin_port=htons(20458), sin_addr=inet_addr("161.161.161.161")}, 16) = -1 ECONNREFUSED (Connection refused)
write(2, "Tue Dec  5 23:01:46 2017 INFO  ."..., 126) = 126
close(4)                                = 0
write(2, "Tue Dec  5 23:01:46 2017 INFO  f"..., 146) = 146
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
nanosleep({1, 0}, 0x7fffe56288c0)       = 0
**** start of next cycle ****
write(2, "Tue Dec  5 23:01:47 2017 INFO  f"..., 74) = 74
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 4
socket(PF_NETLINK, SOCK_RAW, 0)         = 6
....
%pre%%pre%%pre%2k'Z%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%", 20, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 20 recvmsg(6, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"0%pre%%pre%%pre%%pre%%pre%2k'ZYs7%pre%06%pre%%pre%%pre%%pre%%pre%7%pre%%pre%"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 108 recvmsg(6, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"%pre%%pre%%pre%%pre%%pre%2k'ZYs7%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%7%pre%%pre%"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 20 close(6) = 0 connect(4, {sa_family=AF_INET, sin_port=htons(20458), sin_addr=inet_addr("161.161.161.161")}, 16) = -1 ECONNREFUSED (Connection refused) write(2, "Tue Dec 5 23:01:46 2017 INFO ."..., 126) = 126 close(4) = 0 write(2, "Tue Dec 5 23:01:46 2017 INFO f"..., 146) = 146 rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0 rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 nanosleep({1, 0}, 0x7fffe56288c0) = 0 **** start of next cycle **** write(2, "Tue Dec 5 23:01:47 2017 INFO f"..., 74) = 74 socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 4 socket(PF_NETLINK, SOCK_RAW, 0) = 6 ....
    
por GoodToLearn 05.12.2017 / 21:07

0 respostas