Como depurar um problema de suspensão na RAM no Linux?

15

Espero obter sugestões baseadas na experiência sobre como depurar o problema de suspensão na RAM. Um conselho específico para minha situação (detalhado abaixo) seria ótimo, mas também estou interessado em conselhos gerais sobre como depurar esses problemas.

O problema:

Freqüentemente, quando tento suspender minha máquina, ela fica presa no estado "não suspensa, mas não desperta". Freqüentemente, a tela fica completamente preta, mas às vezes possui a seguinte mensagem de erro:

GLib-WARNING **: getpwuid_r(): failed due to unknown user id (0) 

Além disso, esse estado também será acompanhado pelos fãs em alta velocidade. A única maneira de tirá-lo desse estado é desligar manualmente o laptop.

Alguma informação

$ uname -a
Linux baltar 2.6.35-22-generic #34-Ubuntu SMP Sun Oct 10 09:26:05 UTC 2010 x86_64 GNU/Linux

$ lsb_release -a
Distributor ID:    Ubuntu
Description:    Ubuntu 10.10
Release:    10.10
Codename:    maverick

Dei uma olhada /var/log/dmesge /var/log/pm-suspend.log, mas não sei o que estou procurando e nada se destaca. Não tenho certeza se está relacionado, mas encontrei muitos dos seguintes itens em /var/log/kern.log:

EXT4-fs (dm-0): re-mounted. Opts: errors=remount-ro,commit=600
Steven D
fonte
1
Se você acredita que está sendo mordido pelo bug específico que mencionei aqui, não poste uma resposta "eu também" - já que realmente não é uma resposta. Sinta-se à vontade para votar novamente nesta pergunta e incentivar outras pessoas a responder a ela. No final, uma boa resposta forneceria não apenas conselhos para resolver esse problema específico, mas conselhos para depurar esses tipos de problemas.
Steven D
Excluído após esclarecimentos no Lounge dos Professores. As únicas informações potencialmente valiosas são No LSB modules are available.exibidas logo após lsb_release -a.
Maciej Piechotka 26/10/10
Marquei uma resposta "trabalhei para mim", mas ainda acho que uma resposta mais geral "como depurar suspensão a ram" seria realmente útil aqui.
Steven D

Respostas:

6

PM_DEBUG e PM_TRACE são aparentemente os recursos de depuração mais profundos que existem no momento. Quando você não obtém nada significativo dos logs de nível superior, o AFAIK é o único mecanismo para recorrer ao encontrar o temido sintoma "misteriosa tela em branco ao retomar". Na maioria das vezes, estamos lidando com um driver de dispositivo quebrado, sutil e com bastante freqüência. Você também pode dar uma olhada na minha saga de depuração de driver sem fio Broadcom brcmsmac no bug 34682 do kernel para saber o que os desenvolvedores do kernel sugerem e procuram.

lkraav
fonte
1

Suspeito que o problema possa estar relacionado ao fato de o BIOS não estar relatando corretamente o que ele realmente usa.

Por padrão, esta opção está em vigor:

memory_corruption_check_size=64K

Você pode tentar definir valores maiores para fazer com que o scanner de corrupção de memória examine um pedaço maior de lowmem.

Procure por "memory_corruption_check_size" em

etc.

Eu estaria interessado em saber o que você encontra, se houver.


fonte
0

Minha experiência em trabalhar nesta área foi no Windows CE, e não no Linux.

Durante o ciclo de suspensão / retomada, o sistema operacional desligará progressivamente a funcionalidade do sistema operacional, restringindo sua capacidade de obter informações confiáveis ​​e precisas sobre o que está acontecendo usando a funcionalidade do sistema operacional. Além disso, sua conexão de monitoramento pode (por exemplo, se o problema estiver relacionado ao tempo) alterar o resultado.

As ferramentas preferenciais começam com uma conexão do depurador C / C ++ com o SO na extremidade alta e no nível muito baixo enviando dados por uma porta serial / códigos POST ou pelo depurador JTAG sem hardware X86 ou equivalentes. O resultado final são longas horas trabalhando no fluxo do código e encontrando o ponto em que ele se comporta de maneira diferente do comportamento normal. Nesse ponto, a correção geralmente é óbvia. Faça boas anotações e faça uma alteração de cada vez.

Demorou 6 semanas para identificar o problema de inicialização que tivemos no Windows CE. Tínhamos uma placa de processador PC104 que podia ser desligada por 10 ou 60 segundos e ligada sem problemas. No entanto, se a energia fosse removida por 25 segundos, ela não ligaria. Descobrimos que tínhamos capacitância suficiente para manter intacto o conteúdo da DRAM sem energia por cerca de 20 segundos; portanto, em um curto ciclo de desligamento, o Windows CE pensou que estava voltando de um estado suspenso. Quando toda a memória era preservada, ela realmente conseguia executar um resumo, quando a memória estava parcialmente corrompida, ficava bastante confusa durante o resumo.

Boa sorte.

Michael Shaw
fonte