Erros de memória no Ubuntu, mas não no MemTest86 +

8

Eu tenho alguns erros btrfs e ext4. Depois de decidir testar minha RAM, obtive os seguintes erros de repetição com memtester. Eu sempre recebo erros semelhantes depois de um pouco de executar o memtester. Geralmente em uma hora, mas levou 4-5 horas de uma vez.

A RAM do meu computador está soldada. Eu tenho um slot vazio adicional. Não há configurações no BIOS para desativar a RAM integrada.

Eu corri:

  • Memtest86 + para 8 passes (~ 8 horas)
  • MemTest86 para 18 passes (~ 9 horas)
  • memtestere stressapptestno padrão Fedora 27, instalado em um pendrive (~ 10 horas)
  • memtestere stressapptestno Ubuntu 17.10 Live padrão (~ 2 horas)
  • memtestere stressapptestno Ubuntu 17.10 no pendrive (~ 8 horas)
  • # debsums --changed o único arquivo alterado foi a imagem de um tema.

Eles não imprimiram nenhum erro.

Estou usando o Ubuntu 17.10 (atualizado a partir do 17.04) com o kernel padrão. O kernel não está contaminado. É um laptop ASUS com Intel Haswell i3.

  • Também testado com o Linux 4.14.13 e 4.15.0-rc3, rc4, linha principal.
  • Também testado com o pacote intel-microcode eliminado.

O erro é reproduzível, o Nouveau está desativado ou ativado, nenhum driver binário da nvidia é carregado.

Colocou na lista negra os seguintes módulos: mtd intel_spi_platform intel_spiporque eles não carregam na instalação padrão do Fedora 27 e parecem bloquear alguns laptops Lenova. Os erros não pararam.

uname -asaída de

Linux hostname 4.13.0-19-generic #22-Ubuntu SMP Mon Dec 4 11:58:07 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

# lsmodsaída de

https://paste.ubuntu.com/26222245/

# lsmodSaída do Fedora 27

https://paste.ubuntu.com/26226473/

Situação atual

Coloquei meu disco rígido em um laptop (laptop de backup) que eu sabia ser bom e fiz os testes lá. Eu entendi os erros. Agora tenho certeza que isso é um problema de software. Eu nunca fui capaz de acionar os erros no meu laptop com um Ubuntu novo nem com um Fedora tentando muitas horas.

O que devo fazer?

Uma amostra dos erros:

Loop 6:
  Stuck Address       : ok         
  Random Value        : ok
  Compare XOR         : ok
  Compare SUB         : ok
  Compare MUL         : ok
  Compare DIV         : ok
  Compare OR          : ok
  Compare AND         : ok
  Sequential Increment: ok
  Solid Bits          : ok         
  Block Sequential    : ok         
  Checkerboard        : ok         
  Bit Spread          : ok         
  Bit Flip            : testing 262
FAILURE: 0x00000000 != 0xfffffffeffffffff at offset 0x0ef94000.
FAILURE: 0x00000000 != 0x100000000 at offset 0x0ef94008.
FAILURE: 0x00000000 != 0xfffffffeffffffff at offset 0x0ef94010.
FAILURE: 0x00000000 != 0x100000000 at offset 0x0ef94018.
FAILURE: 0x00000000 != 0xfffffffeffffffff at offset 0x0ef94020.
FAILURE: 0x00000000 != 0x100000000 at offset 0x0ef94028.
FAILURE: 0x00000000 != 0xfffffffeffffffff at offset 0x0ef94030.
FAILURE: 0x00000000 != 0x100000000 at offset 0x0ef94038.
  Walking Ones        : ok         
  Walking Zeroes      : ok         
  8-bit Writes        : ok
  16-bit Writes       : ok

Um erro semelhante com os dois slots de RAM está cheio:

Loop 1:
  Stuck Address       : ok         
  Random Value        : ok
  Compare XOR         : ok
  Compare SUB         : ok
  Compare MUL         : ok
  Compare DIV         : ok
  Compare OR          : ok
  Compare AND         : ok
  Sequential Increment: ok
  Solid Bits          : ok         
  Block Sequential    : ok         
  Checkerboard        : ok         
  Bit Spread          : testing   4
FAILURE: 0x00000000 != 0x00000050 at offset 0x7da80000.
FAILURE: 0x00000000 != 0xffffffffffffffaf at offset 0x7da80008.
FAILURE: 0x00000000 != 0x00000050 at offset 0x7da80010.
FAILURE: 0x00000000 != 0xffffffffffffffaf at offset 0x7da80018.
FAILURE: 0x00000000 != 0x00000050 at offset 0x7da80020.
FAILURE: 0x00000000 != 0xffffffffffffffaf at offset 0x7da80028.
FAILURE: 0x00000000 != 0x00000050 at offset 0x7da80030.
FAILURE: 0x00000000 != 0xffffffffffffffaf at offset 0x7da80038.
  Bit Flip            : setting 141

Um erro de stressapptest:

Report Error: miscompare : DIMM Unknown : 1 : 157s
Hardware Error: miscompare on CPU 2(0x2) at 0x7fcc0726e000(0xb0d18:DIMM Unknown): read:0x0000000000000000, reread:0x0000000000000000 expected:0x4a4a4a4a4a4a4a4a
Report Error: miscompare : DIMM Unknown : 1 : 157s
Hardware Error: miscompare on CPU 2(0x2) at 0x7fcc0726e008(0xb0d18:DIMM Unknown): read:0x0000000000000000, reread:0x0000000000000000 expected:0x4a4a4a4a4a4a4a4a
Report Error: miscompare : DIMM Unknown : 1 : 157s
Hardware Error: miscompare on CPU 2(0x2) at 0x7fcc0726e010(0xb0d18:DIMM Unknown): read:0x0000000000000000, reread:0x0000000000000000 expected:0x4a4a4a4a4a4a4a4a
Report Error: miscompare : DIMM Unknown : 1 : 157s
Hardware Error: miscompare on CPU 2(0x2) at 0x7fcc0726e018(0xb0d18:DIMM Unknown): read:0x0000000000000000, reread:0x0000000000000000 expected:0x4a4a4a4a4a4a4a4a
Report Error: miscompare : DIMM Unknown : 1 : 157s
Hardware Error: miscompare on CPU 2(0x2) at 0x7fcc0726e020(0xb0d18:DIMM Unknown): read:0x0000000000000000, reread:0x0000000000000000 expected:0x4a4a4a4a4a4a4a4a
Report Error: miscompare : DIMM Unknown : 1 : 157s
Hardware Error: miscompare on CPU 2(0x2) at 0x7fcc0726e028(0xb0d18:DIMM Unknown): read:0x0000000000000000, reread:0x0000000000000000 expected:0x4a4a4a4a4a4a4a4a
Report Error: miscompare : DIMM Unknown : 1 : 157s
Hardware Error: miscompare on CPU 2(0x2) at 0x7fcc0726e030(0xb0d18:DIMM Unknown): read:0x0000000000000000, reread:0x0000000000000000 expected:0x4a4a4a4a4a4a4a4a
Report Error: miscompare : DIMM Unknown : 1 : 157s
Hardware Error: miscompare on CPU 2(0x2) at 0x7fcc0726e038(0xb0d18:DIMM Unknown): read:0x0000000000000000, reread:0x0000000000000000 expected:0x4a4a4a4a4a4a4a4a

Eu suspeito que, de alguma forma, a configuração do Ubuntu combinada com o hardware do meu laptop seja a responsável por esses erros. Quase todas as vezes em pacotes de oito.

Informações sem importância e pouco relacionadas abaixo

Sobre os erros do btrfs; Eu estava usando 17.04. Eu perguntei no IRC da btrfs. Foi-me dito que poderia ser um erro de hardware ou de alguma forma um erro de gerenciamento de memória. Uma parte da página de metadados dos btrfs foi preenchida com zeros, exatamente como eu estou experimentando agora. Eu executei o memtester apenas algumas passagens, mudei para ext4 e coloquei a culpa no driver binário da nvidia.

Os comandos e seus parâmetros que eu uso:

# stressapptest -M 10000 -s 1800

10000 é a memória disponível que posso testar. Eu entendi via free -m-s` é segundos.

# memtester 4096

A CPU do laptop possui 2 núcleos, então geralmente inicio duas instâncias. 4096 é metade da memória disponível atualmente viafree -m

Artyom
fonte
1
Eu substituiria RAM ruim, mas não sei se é possível com chips de RAM soldados. O computador é novo o suficiente para ser substituído dentro da garantia?
sudodus 5/12
@sudodus Sim, sua garantia ainda não expirou. Vou fazer RMA se não encontrar uma solução. Descobri que, embora não exista uma maneira oficial, as pessoas descobriram maneiras de desativar os arames soldados em alguns laptops, saltando em alguns pontos de teste.
Artyom
Para ter mais certeza, tente memtest86+em qualquer LiveCD de instalação do Ubuntu.
N0rbert
@ N0rbert Fiz alguns testes com o memtest86 - o propiciatório - com resultados negativos. Mas eles foram curtos -4 repetições-, vou fazer um teste noturno hoje à noite.
Artyom
2
@sudodus, acredito que o memtest86 + pode testar sua própria memória, mas isso não deve ser um problema. Sim, eu reparei minha partição ext4 algumas vezes, pois ela provavelmente quebrou devido a erros relacionados à memória. Infelizmente, não pude reparar minha partição btrfs porque os metadados de alguma forma foram corrompidos antes de serem gravados no disco e minha partição btrfs provavelmente a espalhou com o scrub btrfs e corrompeu alguns deles.
Artyom

Respostas:

1

A resposta excluída foi fechada

Uma resposta foi excluída nesta sessão de perguntas e respostas:

Você já tentou reinstalar o ubuntu porque parece uma falha no gerenciamento de memória no nível do sistema operacional

Minha resposta é semelhante, pois envolve gerenciamento de memória de nível muito baixo; KASLR no nível do Kernel.

O que o KASLR faz

KASLR significa K ernel A ddress S ritmo L ayout R andomization. Eu nunca ouvi falar em voz alta, mas na minha opinião eu o declaro "Casler". Pense fantasma amigável na máquina. KASLR é uma medida de segurança para randomizar quais módulos de kernel dos locais de memória residem. A teoria é que o kernel é mais difícil de invadir quando você não pode confiar no mesmo pedaço de código sempre no mesmo local de memória.

A operação KASLR pode ser considerada um oposto dos testadores de memória que repetidamente lêem e gravam nos mesmos locais de memória, esperando SEM MUDANÇAS. Por serem opostos, isso me atraiu (o idioma notou), a fazer uma pesquisa no Google sobre KASLR e erros de memória. Um em particular aparentemente não relacionado pode merecer uma mensagem no github vinculando a estas perguntas e respostas. A razão é que eles pensam que são os únicos afetados pela troca de endereço de memória (se eu estiver lendo o thread corretamente). Os três primeiros hits são do RedHat, com os quais eu não gosto de criar links porque seus sites são posts parciais para acessar os robôs de busca do Google e, então, eles fazem você pagar para ler.

Existem problemas conhecidos quando o KASLR carrega "coisas" do kernel no meio do mapa de memória, o que não deveria ser feito. Infelizmente, não me lembro do link que encontrei na semana passada para incluir na resposta desta noite. O link tinha um patch / solução alternativa para direcionar o KASLR para não usar locais de memória específicos.

Após confirmar problemas conhecidos com o KASLR e os locais de memória, comentei a questão para desativá-lo e executar novamente os testes de memória. Uma resposta afirmou que parece ter êxito, por isso estou publicando esta resposta.

Como desativar o KASLR

Embora eu esteja usando a opção de linha de comando do kernel do grub "kaslr" há alguns anos, ela se tornou o padrão do kernel desde pelo menos a versão 4.12 . Para eliminar o KASLR do carregamento, use edite /etc/default/grube altere esta linha:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nokaslr"

Você pode ter outras opções além de "quiet" e "splash". O passo importante é adicionar "nokaslr" e deixar as outras opções no lugar.

Salve o arquivo e execute:

sudo update-grub

É claro que outra maneira de desabilitar o KASLR é simplesmente usar um Kernel mais antigo como 4.4.0 no Ubuntu 16.04.1 quando o KASLR não foi incluído automaticamente.

WinEunuuchs2Unix
fonte
0

O problema parece muito com uma corrupção aleatória da RAM. Na minha experiência, o MemTest86 é um teste "fácil demais" para o hardware. Ele encontrará memória realmente ruim, mas problemas leves muitas vezes passam despercebidos.

Se você quiser saber se sua memória está boa, tente executar o Prime95 no modo de autoteste / tortura configurado para usar o máximo de RAM possível.

Outro bom teste é executar o teste do martelo de dupla face por algumas horas.

Acredito que, se o Prime95 e o martelo de dupla face não encontrarem problemas com sua memória, provavelmente funcionará corretamente. No entanto, simplesmente executando o MemTest86, compilando programas, instalando o SO, jogando jogos pode parecer funcionar mesmo que sua memória esteja um pouco ruim (já estive lá, fiz isso - e obtive dados corrompidos a longo prazo).

Mikko Rantalainen
fonte