
У меня есть процесс — скрипт 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. Когда он просто запущен, он никогда не входит в pop-сервер. Как только он strace (через "strace -Ff -p cat /usr/local/gw/var/popdmn.pid
"), он работает безупречно.
В качестве обходного пути я запускаю screen на сервере с запущенным strace. Очевидно, что это неидеально.
Почему процесс так делает? Я никогда раньше такого не видел.
решение1
Кажется, меня укусил древний стрейс-клоп:
https://bugzilla.redhat.com/show_bug.cgi?id=64303
https://bugzilla.redhat.com/show_bug.cgi?id=75709
На этом ящике strace-4.4-4, так что, возможно, это тот баг. Похоже, что этот баг мы сами себе нанесли, так как мы занимались strace, пытаясь отладить его, и усугубили ситуацию.
kill -CONT
работы по возобновлению процесса.
Определеннопора обновить эту коробку.
решение2
Полагаю, самое большое отличие — это скорость и обработка сигнала.
Что касается скорости, если процесс многопоточный, то strace будет изменять время, что может изменить поведение в отношении условий гонки и т. д.иливременная информация, касающаяся поведения протокола.
Пример. Допустим, сервер POP был обновлен и теперь более тщательно следит за тем, чтобы одноранговый узел не отправлял несколько команд POP одновременно. Это более полезно для сервера SMTP в качестве средства предотвращения спама.
Соблюдает ли ваш процесс правильное поведение POP, то есть ждет ответа от сервера после каждой команды POP? Или он предполагает успех или ждет некоторое время между командами.
Если вы фиксируете фактический трафик протокола в случае прохождения и провала, есть ли какие-либо признаки нарушения протокола?