Depurar hardware defeituoso

4

Minha irmã tem um laptop que sempre bateu nela durante o Windows (tela azul) (o hardware é relativamente novo e atualizado). Naquela época, ela enviou os arquivos de despejo do Windows para a Dell, que enviou um engenheiro que mudou a placa-mãe, mas ainda depois de instalar o Ubuntu em muitas versões diferentes usando muitos kernels diferentes, os pânicos não iriam embora.

Então eu decidi agir para encontrar a causa exata do problema, eu instalei e configurei o pacote linux-crashdump (kdump-tools) para iniciar automaticamente um kernel de travamento usando o kexec que gera um arquivo de despejo da memória e também armazena a saída dmesg. Eu também instalei o crash, o kernel-image-generic-dbgsym e o mcelog, para ter tudo para reunir o máximo de informações possível.

Então o Laptop caiu e o kernel crash gerou com sucesso um arquivo de dump e armazenou a saída do dmesg. Eu também verifiquei / var / log / mcelog mas o arquivo estava completamente vazio, embora o daemon estivesse rodando antes do travamento, o que é estranho, mas depois de tudo ainda temos a saída do dmesg, que diz:

[ 3933.364173] mce: [Hardware Error]: CPU 4: Machine Check Exception: 5 Bank 3: be00000000200135
[ 3933.364177] mce: [Hardware Error]: RIP !INEXACT! 10:<ffffffff8171d9c2> {_raw_spin_lock+0x12/0x50}
[ 3933.364182] mce: [Hardware Error]: TSC a0255fbd7f7 ADDR 42dd14480 MISC d62285 
[ 3933.364185] mce: [Hardware Error]: PROCESSOR 0:306a9 TIME 1398357146 SOCKET 0 APIC 1 microcode 15
[ 3933.364186] mce: [Hardware Error]: Run the above through 'mcelog --ascii'
[ 3933.364188] mce: [Hardware Error]: CPU 0: Machine Check Exception: 5 Bank 3: be00000000200135
[ 3933.364190] mce: [Hardware Error]: RIP !INEXACT! 33:<0000045a7992c1b5> 
[ 3933.364191] mce: [Hardware Error]: TSC a0255fbd7f0 ADDR 42dd14480 MISC d62285 
[ 3933.364194] mce: [Hardware Error]: PROCESSOR 0:306a9 TIME 1398357146 SOCKET 0 APIC 0 microcode 15
[ 3933.364195] mce: [Hardware Error]: Run the above through 'mcelog --ascii'
[ 3933.364196] mce: [Hardware Error]: Machine check: Processor context corrupt
[ 3933.364197] Kernel panic - not syncing: Fatal Machine check

Então minha primeira pergunta seria, sobre "Executar o acima através de 'mcelog --ascii'" ... o que exatamente devo executar lá e como? Eu tentei por exemplo:

[ 3933.364173] mce: [Hardware Error]: CPU 4: Machine Check Exception: 5 Bank 3: be00000000200135 | sudo mcelog --ascii

que simplesmente não retornou nada. Então, o que devo fazer aqui?

Eu também corri

crash  /usr/lib/debug/boot/vmlinux<kernelversion> /path/to/crashdump/file

que iniciou o programa, como esperado, e eu digitei bt para gerar um backtrace que me deu:

PID: 0      TASK: ffff8804177617f0  CPU: 6   COMMAND: "swapper/6"
 #0 [ffff88042dd89ca0] machine_kexec at ffffffff8104a732
 #1 [ffff88042dd89cf0] crash_kexec at ffffffff810e6ab3
 #2 [ffff88042dd89db8] panic at ffffffff8170ec6c
 #3 [ffff88042dd89e30] mce_panic at ffffffff8103687a
 #4 [ffff88042dd89e70] do_machine_check at ffffffff81038684
 #5 [ffff88042dd89f50] machine_check at ffffffff8171e25f
    [exception RIP: intel_idle+216]
    RIP: ffffffff813dfd78  RSP: ffff88041775de28  RFLAGS: 00000046
    RAX: 0000000000000001  RBX: 0000000000000002  RCX: 0000000000000001
    RDX: 0000000000000000  RSI: ffffffff81c93220  RDI: 0000000000000006
    RBP: ffff88041775de50   R8: ffff88042dd912d0   R9: 000000000000001c
    R10: 0000000000000320  R11: 0000000000000249  R12: 0000000000000002
    R13: 0000000000000001  R14: 0000000000000001  R15: ffffffff81c932e8
    ORIG_RAX: ffffffffffffffff  CS: 0010  SS: 0018
--- <MCE exception stack> ---
 #6 [ffff88041775de28] intel_idle at ffffffff813dfd78
 #7 [ffff88041775de58] cpuidle_enter_state at ffffffff815c9570
 #8 [ffff88041775de90] cpuidle_idle_call at ffffffff815c96a9
 #9 [ffff88041775ded0] arch_cpu_idle at ffffffff8101ceae
#10 [ffff88041775dee0] cpu_startup_entry at ffffffff810beb85
#11 [ffff88041775df30] start_secondary at ffffffff81040fc8

Para resumir, gostaria de saber como invocar mcelog na saída do dmesg e possivelmente quais outros passos você executaria para obter o máximo de informações sobre o problema / encontrar o componente defeituoso, para que eu possa entrar em contato com o fornecedor de hardware já tendo uma estimativa qualificada errada.

Eu sei como esse memcheck pode me ajudar a prever com alta probabilidade que o carneiro não é a causa.

EDIT: Descobri, como passar a saída para o mcelog corretamente: Coloque as linhas de saída antes de "Executar o acima através de 'mcelog --ascii'" em um arquivo e invoque mcelog com

sudo mcelog --ascii < file 

Pode-se ver que a mensagem "Executar o acima através de 'mcelog --ascii'" é impressa duas vezes no arquivo dmesg, então invoquei mcelog duas vezes começando com "CPU:" e terminando a linha antes da mensagem ( Deixei o material do dmesg como "[3933.364173] mce: [Erro de hardware]:" ausente ".

Então mcelog me diz:

Hardware event. This is not a software error.
CPU 4 BANK 3 TSC a0255fbd7f7 
RIP !INEXACT! 10:ffffffff8171d9c2
MISC d62285 ADDR 42dd14480 
TIME 1398357146 Thu Apr 24 18:32:26 2014
MCG status:RIPV MCIP 
MCi status:
Uncorrected error
Error enabled
MCi_MISC register valid
MCi_ADDR register valid
Processor context corrupt
MCA: Data CACHE Level-1 Data-Read Error
STATUS be00000000200135 MCGSTATUS 5
CPUID Vendor Intel Family 6 Model 58
RIP: _raw_spin_lock+0x12/0x50}                                                        
SOCKET 0 APIC 1 microcode 15 

e

Hardware event. This is not a software error.                                                                         
CPU 0 BANK 3 TSC a0255fbd7f0 
RIP !INEXACT! 33:45a7992c1b5
MISC d62285 ADDR 42dd14480 
TIME 1398357146 Thu Apr 24 18:32:26 2014
MCG status:RIPV MCIP 
MCi status:
Uncorrected error
Error enabled
MCi_MISC register valid
MCi_ADDR register valid
Processor context corrupt
MCA: Data CACHE Level-1 Data-Read Error
STATUS be00000000200135 MCGSTATUS 5
CPUID Vendor Intel Family 6 Model 58
SOCKET 0 APIC 0 microcode 15

assumindo assim que a placa-mãe está bem (como foi alterada) e se a RAM está bem, resta apenas o processador para ser o desordeiro, certo? Alguém está familiarizado com toda a saída dada?

    
por GEO 24.04.2014 / 22:38

1 resposta

2

Bom em você para a instrumentação escolhida, é exatamente como atropelar um problema como este.

crash dump precisa dos símbolos de depuração do linux, que são cerca de 600MB por kernel, e é por isso que eles não são instalados por padrão. Veja como instalar e invocar a falha usando os símbolos.

link

É um pouco tarde para eu fazer uma análise detalhada da sua verificação de máquina, mas a minha impressão inicial é que ou o cache na CPU ou na memória principal está comprometido.

Eu exigiria uma substituição total da garantia.

Se não for possível trocar o ram, que é um teste barato, e se o problema persistir, você pode estar razoavelmente seguro de que a CPU é a fonte. Nesse ponto, eu consideraria seriamente o compromisso de substituir a CPU pelo custo de um novo computador.

    
por ppetraki 02.05.2014 / 08:30