프로세스는 strace에서 작동하지만 일반적으로 작동하지 않습니다.

프로세스는 strace에서 작동하지만 일반적으로 작동하지 않습니다.

나는 다음을 수행하는 프로세스(perl 스크립트)를 가지고 있습니다.

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

Redhat 7.3 서버에서 실행되고 있습니다. (저는 그것을 상속받았습니다. 그 상자의 나이가 마음에 들지 않습니다.) 다음과 같이 /etc/inittab이 부족합니다.

spop:2345:respawn:/usr/local/gw/bin/popdmn 

죽으면 init가 다시 시작합니다.

지난 며칠 동안 프로세스가 더 이상 작동하지 않습니다.~하지 않는 한그것은 추적됩니다. 방금 실행 중일 때는 팝 서버에 로그인하지 않습니다. ("strace -Ff -p "를 통해) strace가 완료되자마자 cat /usr/local/gw/var/popdmn.pid완벽하게 작동합니다.

해결 방법으로 strace가 실행되는 서버에서 screen을 실행하고 있습니다. 분명히 이것은 이상적이지 않습니다.

프로세스가 왜 이런 일을 할까요? 나는 전에 이런 일이 일어나는 것을 본 적이 없습니다.

답변1

내 생각엔 고대의 추적 버그에 물린 것 같아요.

https://bugzilla.redhat.com/show_bug.cgi?id=64303

https://bugzilla.redhat.com/show_bug.cgi?id=75709

이 상자에는 strace-4.4-4가 있으므로 해당 버그일 가능성이 있는 것 같습니다. 디버깅을 시도하는 동안 추적을 하다가 상황이 더욱 악화되었기 때문에 이는 자해인 것처럼 들립니다.

kill -CONT프로세스를 재개하기 위해 노력합니다.

분명히이 상자를 업그레이드할 시간입니다.

답변2

가장 큰 차이점은 속도와 신호 처리라고 생각합니다.

속도와 관련하여 프로세스가 다중 스레드인 경우 strace는 타이밍을 변경하여 경쟁 조건 등에 관한 동작을 변경합니다.또는프로토콜 동작과 관련된 타이밍 정보.

예. POP 서버가 업그레이드되어 이제 피어가 한 번에 여러 POP 명령을 보내지 않도록 더욱 주의를 기울이고 있다고 가정해 보겠습니다. 이는 스팸 방지 수단으로 SMTP 서버에서 더 유용합니다.

귀하의 프로세스는 각각의 모든 POP 명령 후에 서버의 응답을 기다린다는 점에서 올바른 POP 동작을 관찰합니까? 아니면 성공을 가정하거나 명령 사이에 일정 시간을 기다립니다.

합격 및 불합격 사례에서 실제 프로토콜 트래픽을 캡처하는 경우 프로토콜 위반 징후가 있습니까?

관련 정보