o processo funciona sob strace, mas normalmente não

o processo funciona sob strace, mas normalmente não

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 -CONTtrabalha 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?

informação relacionada