6

Во время игры в Civilization V (последняя версия) и других играх и приложениях (более поздняя версия) иногда не удается выйти, что приводит к принудительному перезапуску компьютера.

После некоторого времени игры иногда игра зависает. (Я не могу выйти из игры и вообще не могу взаимодействовать с игрой с помощью клавиатуры или мыши, хотя могу перемещать указатель мыши.) Затем я запускаю ssh с другого Mac, чтобы убить игру, и выдаю kill -9 для PID игры. Затем я снова запускаю ps чтобы посмотреть, была ли она убита (игра все еще отображается на экране моего ноутбука), и я вижу ниже:

PID   TT  STAT      TIME COMMAND
468   ??  ?E     0:00.00 (Civilization V)

Из справочной страницы ps я вижу, что "E" в столбце состояния означает, что процесс завершается. Спустя пять минут (или около того) игра все еще занимает экран, замороженная, хотя процесс уже завершен. Затем я убил (-9 каждый раз) все другие связанные процессы Steam , а затем (в отчаянии) убил SystemUIServer и док-станцию, чтобы попытаться запустить что-то, а затем loginwindow в систему для принудительного выхода из системы. Ничего из этого не сработало, поэтому я выдал sudo shutdown -r now . Пятнадцать минут спустя, он не перезагрузился, Civ V все еще завис на моем экране, и я не могу подключиться к ssh в уязвимую систему (предположительно, потому что отключение остановило sshd).

Я действительно предпочел бы не перезагружать мой компьютер слишком много раз; У кого-нибудь есть идеи, как на самом деле убить Цив?

Для справки, я использую OS X Lion (последняя версия) на i7 MacBook Air.

РЕДАКТИРОВАТЬ: я прочитал этот другой полу-связанный вопрос, но убийство родительского процесса тоже не сработало.

2 ответа2

2

Неубиваемый процесс обычно вызывается одной из двух причин: либо процесс отслеживается отладчиком, либо (гораздо чаще) процесс имеет ожидающий запрос ввода-вывода на какое-то застрявшее устройство. В последнем случае виновником, как правило, является дисковое устройство, которое выдает жесткие ошибки чтения / записи или отключается, и ядро еще не отказалось от него. Но это может быть все, что связано с системной шиной, которая имеет проблемы.

Для устройств USB и FireWire отключение периферийного устройства от системы часто устраняет застрявший процесс. Но если застрявшее устройство - это видеокарта или что-то еще, не поддерживающее «горячее» подключение, перезагрузка - ваш единственный способ очистить процесс.

1

В последнее время мы наблюдали подобное поведение в результате запуска системы из mbufs. Вы можете проверить, произошло ли это с помощью команды "netstat -m". Если количество отложенных выделений не равно нулю, у вас возник дефицит, который мог вызвать проблему.

Когда мы запускали систему из mbufs, мы запускали многопоточную программу, которая писала на доменных сокетах UNIX и TCP-соединениях намного быстрее, чем другой конец мог ее перевести, ожидая, что поток будет контролироваться до приемлемого уровня. 60-80 потоков, как правило, находились там, где он работал, когда пул mbuf высыхал (как на Snow Leopard, так и на Lion). После ряда таких запусков мы нашли такой процесс, как Safari или Mail, который невозможно было отключить обычным способом: выйти или убить, и пришлось перезагрузить.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .