
Eu tenho um processo - um script perl - que faz:
while true
check a POP account on a server on the lan
process any email found
write logs - messages found, actions taken, errors
sleep for 15 seconds
Ele está rodando em um servidor redhat 7.3 (eu herdei, não estou feliz com a idade dessa caixa). O /etc/inittab acabou como:
spop:2345:respawn:/usr/local/gw/bin/popdmn
Se morrer, o init o reinicia.
Nos últimos dias, o processo não funcionará maisa menos queestá rastreado. Quando está em execução, ele nunca faz login no servidor pop. Assim que for rastreado (via "strace -Ff -p cat /usr/local/gw/var/popdmn.pid
"), ele funcionará perfeitamente.
Como solução alternativa, estou executando screen no servidor com um strace em execução. Obviamente, isso está aquém do ideal.
Por que um processo faria isso? Eu nunca vi isso acontecer antes.
Responder1
Acho que fui mordido por um bug antigo:
https://bugzilla.redhat.com/show_bug.cgi?id=64303
https://bugzilla.redhat.com/show_bug.cgi?id=75709
Esta caixa contém strace-4.4-4, então parece possível que seja esse bug. Parece que este é auto-infligido, pois estávamos stracing enquanto tentávamos depurar - e pioramos as coisas.
kill -CONT
trabalha para retomar o processo.
Definitivamentehora de atualizar esta caixa.
Responder2
O maior ponto de diferença é a velocidade e o tratamento do sinal, suponho.
Em relação à velocidade, se o processo for multithread, então o strace estará alterando o tempo, o que pode alterar o comportamento em relação às condições de corrida, etc.ouinformações de tempo relacionadas ao comportamento do protocolo.
Exemplo. Digamos que o servidor POP foi atualizado e agora é mais cuidadoso para garantir que um peer não envie vários comandos POP ao mesmo tempo. Isso é mais útil em um servidor SMTP como meio de prevenção de spam.
O seu processo observa o comportamento correto do POP, na medida em que aguarda uma resposta do servidor após cada comando POP? Ou assume sucesso ou espera algum período de tempo entre os comandos.
Se você capturar o tráfego real do protocolo em um caso de aprovação e falha, há algum sinal de violação do protocolo?