Jogo de tela cheia inabalável

6

Durante a reprodução do Civilization V (mais recentemente) e de outros jogos e aplicativos (há mais tempo), ocasionalmente um deles não será encerrado, fazendo com que eu precise forçar a reinicialização do computador.

Depois de algum tempo jogando, às vezes o jogo trava. (Eu não posso sair para sair do jogo, nem posso interagir com o jogo com o teclado ou mouse, embora eu possa mover o ponteiro do mouse.) Eu então ssh de outro Mac para matar o jogo, e emitir um kill -9 para o PID do jogo. Eu então corro ps novamente para ver se ele foi morto (o jogo ainda está aparecendo na tela do meu laptop) e vejo o seguinte:

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

Na página ps , vejo que o "E" na coluna de status significa que o processo está sendo encerrado. Cinco minutos (ou mais) depois, o jogo ainda está ocupando a tela, congelado, mesmo que o processo tenha acabado. Eu então matei (-9 de cada vez) todos os outros processos de vapor associados, e então (em desespero) matei SystemUIServer e o Dock para tentar colocar algo em ação e, então, loginwindow para forçar um logout. Nada disso funcionou, então eu emiti um sudo shutdown -r now . Quinze minutos depois, ele não foi reiniciado, o Civ V ainda está congelado na minha tela, e eu não consigo acessar o sistema afetado (presumivelmente porque o desligamento parou o sshd).

Eu realmente prefiro não ter que reinicializar meu computador muitas vezes; Alguém tem alguma idéia de como realmente matar Civ?

Para que fique registrado, eu estou rodando o OS X Lion (versão point mais recente) em um i7 MacBook Air.

EDIT: Eu li esta outra questão semi-relacionada , mas matar o processo pai também não funcionou.

    
por CajunLuke 02.01.2012 / 22:32

2 respostas

2

Um processo não-faturável é geralmente causado por uma das duas coisas, ou o processo está sendo rastreado pelo depurador, ou (muito mais comumente) o processo tem uma solicitação de E / S pendente para algum dispositivo que está travado. No último caso, o culpado normalmente é um dispositivo de disco que está causando erros de leitura / gravação ou ficou em silêncio e o kernel ainda não desistiu disso. Mas pode ser qualquer coisa conectada ao barramento do sistema que esteja com problemas.

Para dispositivos USB e FireWire, a desconexão do periférico do sistema geralmente elimina um processo travado. Mas se o dispositivo preso for uma placa de vídeo ou qualquer outra coisa que não seja de conexão automática, uma reinicialização é sua única opção para limpar o processo.

    
por 30.01.2012 / 23:56
1

Observamos um comportamento semelhante ultimamente como resultado da execução do sistema a partir de mbufs. Você pode verificar se isso aconteceu com um comando "netstat -m". Se o número de alocações atrasadas for diferente de zero, você teve uma falta que pode ter causado um problema.

Quando executamos o sistema a partir do mbufs, estávamos executando um programa multithread que estava gravando em soquetes de domínio UNIX e conexões TCP muito mais rápido do que o outro lado poderia esperar, esperando ser controlado por fluxo até um nível razoável. Normalmente, 60-80 tópicos eram sobre onde estava sendo executado quando a piscina mbuf ficou seca (tanto no Snow Leopard quanto no Lion). Depois de várias dessas execuções, encontramos um processo como o Safari ou o Mail que era impossível de matar com o quit ou o kill normal, e tivemos que reinicializá-lo.

    
por 04.05.2012 / 01:14