Errori di memoria con Ubuntu ma non con MemTest86 +


8

Ho avuto alcuni errori btrfs ed ext4. Dopo aver deciso di testare la mia RAM ho avuto i seguenti errori ripetuti con memtester. Ottengo sempre errori simili dopo un po 'di esecuzione di memtester. Di solito in un'ora, ma ci sono volute 4-5 ore in una volta.

La RAM del mio computer è saldata. Ho uno slot vuoto aggiuntivo. Non ci sono impostazioni nel BIOS per disabilitare la RAM integrata.

Ho corso:

  • Memtest86 + per 8 passaggi (~ 8 ore)
  • MemTest86 per 18 passaggi (~ 9 ore)
  • memtestere stressapptestsu Fedora 27 di default, installato su una chiavetta USB (~ 10 ore)
  • memtestere stressapptestsu Ubuntu 17.10 Live predefinito (~ 2 ore)
  • memtestere stressapptestsu Ubuntu 17.10 su chiavetta USB (~ 8 ore)
  • # debsums --changed l'unico file modificato era un'immagine di un tema.

Non hanno stampato alcun errore.

Sto usando Ubuntu 17.10 (aggiornato dalla 17.04) con il kernel predefinito. Il kernel non è contaminato. È un laptop ASUS con Intel Haswell i3.

  • Testato anche con Linux 4.14.13 e 4.15.0-rc3, rc4, mainline.
  • Testato anche con pacchetto micro-codice Intel eliminato.

L'errore è riproducibile o Nouveau è disabilitato o abilitato, non vengono caricati driver binari nvidia.

Nella lista nera i seguenti moduli: mtd intel_spi_platform intel_spiperché non si caricano sull'installazione predefinita di Fedora 27 e sembrano murare alcuni laptop Lenova. Gli errori non si sono fermati.

uname -al 'output

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

# lsmodl 'output

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

L' # lsmoduscita di Fedora 27

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

Situazione attuale

Ho inserito il mio HDD in un laptop (laptop di backup) che ho saputo essere buono e ho eseguito i test lì. Ho ricevuto gli errori. Ora sono abbastanza sicuro che si tratti di un problema software. Non sono mai stato in grado di innescare gli errori sul mio laptop con un nuovo Ubuntu né con una Fedora che ci provava molte ore.

Cosa dovrei fare?

Un esempio degli errori:

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

Un errore simile con entrambi gli slot RAM è pieno:

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

Un errore di 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

Sospetto in qualche modo che la colpa di questi errori sia la configurazione di Ubuntu combinata con l'hardware del mio laptop. Quasi sempre in confezioni da otto.

Informazioni non importanti e vagamente correlate di seguito

Informazioni sugli errori btrfs; Stavo usando 17.04. Ho chiesto in giro in irc di btrfs. Mi è stato detto che potrebbe essere un errore hardware o in qualche modo un errore di gestione della memoria. Una parte della pagina dei metadati di btrfs si è riempita di zeri, proprio come ho sperimentato ora. Ho eseguito memtester solo pochi passaggi, sono passato a ext4 e ho dato la colpa al driver binario nvidia.

I comandi e i loro parametri che utilizzo:

# stressapptest -M 10000 -s 1800

10000 è la memoria disponibile che posso testare. Lo capisco via free -m-s` è secondi.

# memtester 4096

La CPU del laptop ha 2 core, quindi di solito avvio due istanze. 4096 è la metà della memoria disponibile corrente viafree -m


1
Sostituirei RAM difettosa, ma non so se sia possibile con chip RAM saldati. Il computer è abbastanza nuovo per essere sostituito dalla garanzia?
sudodus,

@sudodus Sì, la sua garanzia non è ancora scaduta. Lo farò se non riuscissi a trovare una soluzione. Ho scoperto che anche se non esiste un modo ufficiale, le persone hanno trovato il modo di disabilitare gli arieti saldati su alcuni laptop saltando alcuni punti di prova.
Artyom,

Per essere più sicuri, provare memtest86+da qualsiasi LiveCD di installazione di Ubuntu.
N0rbert,

@ N0rbert Ho fatto alcuni test con memtest86, quello propiziatorio, con risultati negativi. Ma erano brevi -4 ripetizioni-, farò un test durante la notte stasera.
Artyom,

2
@sudodus, credo che memtest86 + possa testare la propria memoria, tuttavia non dovrebbe essere un grosso problema. Sì, ho riparato alcune volte la mia partizione ext4 perché probabilmente si è rotta a causa di errori relativi alla memoria. Sfortunatamente non sono riuscito a riparare la mia partizione btrfs poiché i metadati in qualche modo sono stati danneggiati prima che fosse scritta sul disco e la mia partizione btrfs probabilmente lo ha diffuso con scrub btrfs e ne ha danneggiato alcuni.
Artyom,

Risposte:


1

La risposta eliminata era vicina

È stata eliminata una risposta a queste domande e risposte:

Hai già provato a reinstallare Ubuntu perché sembra un errore di gestione della memoria a livello di sistema operativo

La mia risposta è simile in quanto implica una gestione della memoria di livello molto basso; KASLR a livello di kernel.

Cosa fa KASLR

KASLR sta per K kernel A indirizzo S pace L ayout R andomizzazione. Non l'ho mai sentito parlare ad alta voce, ma nella mia mente lo pronuncio "Casler". Pensa al fantasma amichevole nella macchina. KASLR è una misura di sicurezza per randomizzare le posizioni di memoria dei moduli del kernel. La teoria è che il kernel è più difficile da hackerare quando non puoi fare affidamento sullo stesso bit di codice che si trova sempre nello stesso punto di memoria.

L'operazione KASLR potrebbe essere considerata un contrario dei tester di memoria che leggono e scrivono ripetutamente nelle stesse posizioni di memoria senza aspettarsi NESSUN CAMBIAMENTO. Essendo questi opposti, mi ha attirato (idioma notato), fare una ricerca su Google su KASLR ed errori di memoria. Uno in particolare apparentemente non correlato potrebbe meritare un messaggio su github che si collega a queste domande e risposte. Il motivo è che pensano di essere gli unici ad essere modificati spostando gli indirizzi di memoria (se sto leggendo correttamente il loro thread). I primi tre successi provengono da RedHat, a cui detesto fare il link perché i loro siti Web sono post parziali per accedere ai robot di ricerca di Google e quindi ti fanno pagare per leggere.

Ci sono problemi noti quando KASLR carica "roba" del kernel nel mezzo della mappa di memoria, cosa che non dovrebbe fare. Purtroppo non ricordo il link che ho trovato la settimana scorsa da includere nella risposta di stasera. Il collegamento aveva una patch / soluzione alternativa per dire a KASLR di non usare posizioni di memoria specifiche.

Dopo aver confermato i problemi noti con KASLR e le posizioni di memoria, ho commentato sotto la domanda per disabilitarlo KASLR e ripetere i test di memoria. Una risposta ha dichiarato che sembra avere successo, quindi sto postando questa risposta.

Come disabilitare KASLR

Anche se sto usando l'opzione da riga di comando "kaslr" di grub kernel per un paio d'anni, è diventato il default del kernel almeno dalla versione 4.12 . Per eliminare KASLR dal caricamento, usa modifica /etc/default/grube modifica questa riga:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nokaslr"

Potresti avere altre opzioni oltre a "quiet" e "splash". Il passaggio importante è aggiungere "nokaslr" e lasciare in posizione le altre opzioni.

Quindi salva il file ed esegui:

sudo update-grub

Naturalmente un altro modo di disabilitare KASLR è semplicemente usare un kernel più vecchio come 4.4.0 sotto Ubuntu 16.04.1 quando KASLR non è stato incluso automaticamente.


0

Il problema sembra molto un danneggiamento casuale della RAM. Nella mia esperienza, MemTest86 è un test "troppo semplice" per l'hardware. Troverà davvero una brutta memoria, ma i piccoli problemi spesso passano inosservati.

Se vuoi sapere se la tua memoria è buona, prova a eseguire Prime95 in modalità autotest / tortura configurata per utilizzare quanta più RAM possibile.

Un altro buon test è quello di eseguire il test del martello pneumatico su due lati per alcune ore.

Credo che se Prime95 e il martello a due punte non riescono a trovare alcun problema con la memoria, probabilmente funziona correttamente. Tuttavia, semplicemente eseguendo MemTest86, compilando programmi, installando SO, giocando, potrebbe sembrare che funzioni anche se la memoria è leggermente danneggiata (è stata lì, l'ha fatto - e ha ottenuto dati corrotti a lungo termine).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.