Процесс Zomb ie в solaris 10 даже с ожиданием - PullRequest
0 голосов
/ 12 июля 2020

Я работаю над запуском Redis на Solaris 10, и есть несколько тестов интеграции, которые не работают. Тест, который я рассматриваю, работает следующим образом:

  • Запуск Redis
  • Он разветвляется, и дочерний элемент начинает сбрасывать базу данных в файл резервной копии (RDB)
    • На самом деле происходят отношения родитель / ребенок / внук, в которых внук становится зомбом ie, но я заметил это всего за несколько минут до того, как мне пришлось отправиться домой.
  • Через короткое время тестовый скрипт отправляет SIGTERM дочернему элементу
  • Ребенок улавливает сигнал и корректно завершает работу
  • Родитель вызывает wait3 ()

Несмотря на вызов wait3(), ребенок оказывается в состоянии зомба ie.

Тест терпит неудачу примерно в 90% случаев, когда я его запускаю. Как только он попадает в неисправное состояние, он никогда не восстанавливается. Я попытался изменить тест, чтобы он ждал значительно дольше, и, хотя он, кажется, вызывает wait3 () много раз после выхода из процесса, он остается в этом состоянии до тех пор, пока родительский процесс (-ы) не будут убиты.

К сожалению, я выиграл Я не смогу поработать над этим снова до следующей недели, поэтому исследую это дома. В большинстве случаев я искал в Google только документацию или "почему процессы становятся зомби?" введите вопросы.

Эта ветка групп Google из середины 90-х может помочь, хотя в основном речь идет о более старых версиях Solaris / SunOS.

1 Ответ

0 голосов
/ 14 июля 2020

Я ошибся. Похоже, что главный узел не видит, что его дочерний узел вышел из строя, поэтому не wait.

...