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

12

Espero receber sugestões baseadas em experiência sobre como depurar o problema de suspensão para RAM. Conselhos específicos para minha situação (detalhados abaixo) seriam ótimos, mas também estou interessado em conselhos gerais sobre como depurar tais questões.

O problema:

Muitas vezes, quando tento suspender minha máquina, ela fica presa em um estado "não suspenso, mas não acordado". Muitas vezes, a tela ficará completamente preta, mas às vezes ela terá a seguinte mensagem de erro:

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

Além disso, este estado também será acompanhado pelos fãs que estão em alta velocidade. A única maneira de tirá-lo deste estado é desligando manualmente o laptop.

Algumas informações

$ 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

Eu dei uma olhada em /var/log/dmesg e /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
    
por Steven D 19.10.2010 / 04:48

4 respostas

3

Você tem um chipset gráfico Intel? Eu estava recebendo o que soa como o mesmo problema no meu ThinkPad X200s rodando o Ubuntu 10.10, e esta solução alternativa (de 2008!) Corrigiu para mim: link

    
por 04.11.2010 / 23:11
6

PM_DEBUG e PM_TRACE são aparentemente os recursos de depuração mais profundos que existem atualmente. Quando você não está obtendo nada significativo dos logs de nível mais alto, o AFAIK é o único mecanismo a ser usado quando se depara com o temido sintoma de "tela misteriosa em branco no currículo". Na maioria das vezes, estamos lidando com um driver de dispositivo quebrado, muitas vezes sutilmente. Você também pode dar uma olhada na minha saga de depuração do driver Broadcom brcmsmac sem fio no erro do kernel 34682 para quais desenvolvedores de kernel sugerir e procurar.

    
por 06.09.2011 / 16:08
1

Suspeito que o problema pode estar relacionado ao fato de o BIOS não informar corretamente sobre o que ele realmente usa.

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

memory_corruption_check_size=64K

Você pode tentar configurá-lo para valores maiores para fazer com que o verificador de corrupção de memória examine uma parte maior da memória baixa.

Procure por "memory_corruption_check_size" em

etc.

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

    
por 28.10.2010 / 22:31
0

Minha experiência em trabalhar nessa á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 com a funcionalidade do sistema operacional. Além disso, sua conexão de monitoramento pode (por exemplo, se o problema estiver relacionado a tempo) alterar o resultado.

As ferramentas de preferência começam com uma conexão de depurador C / C ++ para o sistema operacional na extremidade alta e no nível muito baixo enviando dados para uma porta serial / códigos POST ou em um depurador JTAG não-X86 de hardware ou equivalentes. O resultado final é 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. Mantenha boas notas e faça uma alteração de cada vez.

Demorou 6 semanas para identificar o problema de ativação que tivemos com o Windows CE. Nós tínhamos uma placa processadora PC104 que poderíamos desligar por 10 ou 60 segundos e ligar sem problemas. No entanto, se a energia foi removida por 25 segundos, ela não ligaria. Descobrimos que tínhamos capacitância suficiente para manter o conteúdo da DRAM intacto, sem energia por cerca de 20 segundos, portanto, em um ciclo de desligamento curto, o Windows CE achou que estava retomando de um estado suspenso. Quando toda a memória foi preservada, seria bem sucedida a execução de um currículo, quando a memória estava parcialmente corrompida, ficaria bastante confuso durante o currículo.

Boa sorte.

    
por 03.11.2010 / 17:42