Mam kilka błędów btrfs i ext4. Po podjęciu decyzji o przetestowaniu pamięci RAM wystąpiły następujące powtarzające się błędy memtester
. Zawsze pojawiają się podobne błędy po krótkim uruchomieniu memtester
. Zwykle za godzinę, ale jednorazowo zajęło 4-5 godzin.
Pamięć RAM mojego komputera jest przylutowana. Mam dodatkowe puste miejsce. W systemie BIOS nie ma ustawień wyłączających wbudowaną pamięć RAM.
Uruchomiłem:
- Memtest86 + na 8 karnetów (~ 8 godzin)
- MemTest86 na 18 podań (~ 9 godzin)
memtester
istressapptest
na Fedorze 27 domyślnie, zainstalowany na pamięci USB (~ 10 godzin)memtester
istressapptest
na Ubuntu 17.10 Live domyślnie (~ 2 godziny)memtester
istressapptest
na Ubuntu 17.10 na pamięci USB (~ 8 godzin)# debsums --changed
jedynym zmienionym plikiem był obraz motywu.
Nie wydrukowali żadnych błędów.
Używam Ubuntu 17.10 (uaktualnionego z 17.04) z domyślnym jądrem. Jądro nie jest skażone. To laptop ASUS z Intel Haswell i3.
- Testowany również z Linuksem 4.14.13 i 4.15.0-rc3, rc4, mainline.
- Testowany również z oczyszczonym pakietem intel-microcode.
Błąd jest powtarzalny, albo Nouveau jest wyłączone lub włączone, nie są ładowane żadne sterowniki binarne nvidia.
Umieszczono na czarnej liście następujące moduły: mtd
intel_spi_platform
intel_spi
ponieważ nie ładują się przy domyślnej instalacji Fedory 27 i wydają się blokować niektóre laptopy Lenova. Błędy nie ustały.
uname -a
wyjście
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
# lsmod
wyjście
https://paste.ubuntu.com/26222245/
Dane # lsmod
wyjściowe Fedory 27
https://paste.ubuntu.com/26226473/
Obecna sytuacja
Włożyłem dysk twardy do laptopa (zapasowego), o którym wiedziałem, że jest dobry, i przeprowadziłem tam testy. Mam błędy. Teraz jestem całkiem pewien, że jest to problem z oprogramowaniem. Nigdy nie byłem w stanie wyzwolić błędów na moim laptopie ze świeżym Ubuntu ani z Fedorą próbującą wielu godzin.
Co powinienem zrobić?
Próbka błędów:
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
Podobny błąd w obu gniazdach pamięci RAM jest pełny:
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
Błąd 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
Podejrzewam, że w jakiś sposób konfiguracja Ubuntu w połączeniu ze sprzętem mojego laptopa jest winna za te błędy. Prawie za każdym razem w paczkach po osiem.
Nieważne, luźno powiązane informacje poniżej
Informacje o błędach btrfs; Korzystałem z 17.04. Pytałem w irc btrfs. Powiedziano mi, że może to być błąd sprzętowy lub błąd zarządzania pamięcią. Część strony metadanych plików btrfs została wypełniona zerami, tak jak teraz. Przebiegłem memtestera tylko kilka przejść, przestawiłem się na ext4 i zrzuciłem winę na binarny sterownik nvidii.
Polecenia i ich parametry, których używam:
# stressapptest -M 10000 -s 1800
10000 to dostępna pamięć, którą mogę przetestować. Dostaję to przez free -m
-s` to sekundy.
# memtester 4096
Procesor laptopa ma 2 rdzenie, więc zwykle uruchamiam dwa wystąpienia. 4096 to połowa bieżącej dostępnej pamięci za pośrednictwemfree -m
źródło
memtest86+
z dowolnej LiveCD z instalacją Ubuntu.Odpowiedzi:
Usunięta odpowiedź była blisko
Odpowiedź na to pytanie została usunięta:
Moja odpowiedź jest podobna, ponieważ dotyczy zarządzania bardzo niskim poziomem pamięci; KASLR na poziomie jądra.
Co robi KASLR
KASLR oznacza K ernel DRES S tempo L ayout R andomization. Nigdy nie słyszałem, żeby mówiono na głos, ale w mojej głowie wymawiam to „Casler”. Pomyśl o przyjaznym duchu w maszynie. KASLR to środek bezpieczeństwa służący do losowej lokalizacji modułów pamięci jądra. Teoria jest taka, że jądro jest trudniejsze do zhakowania, gdy nie można polegać na tym, że ten sam fragment kodu zawsze znajduje się w tym samym miejscu pamięci.
Operację KASLR można uznać za przeciwieństwo testerów pamięci, które powtarzalnie odczytują i zapisują w tych samych lokalizacjach pamięci, nie oczekując żadnych ZMIAN. To są przeciwieństwa, co przyciągnęło mnie (zauważyłem idiom), do wyszukiwania go w KASLR i błędów pamięci. Jeden w szczególności pozornie niepowiązany mógłby zasłużyć na wiadomość dotyczącą linków github do tego pytania i odpowiedzi. Powodem jest to, że uważają, że tylko one mają wpływ na zmianę adresów pamięci (jeśli poprawnie czytam ich wątek). Pierwsze trzy trafienia pochodzą od RedHata, do którego nie chcę linkować, ponieważ ich strony internetowe są częściowymi postami, które można znaleźć w robotach wyszukiwania Google, a następnie każą płacić za czytanie.
Znane są problemy, gdy KASLR ładuje „rzeczy” jądra do środka mapy pamięci, czego nie powinien robić. Niestety nie mogę przypomnieć sobie linku, który znalazłem w zeszłym tygodniu w dzisiejszej odpowiedzi. Łącze zawierało łatkę / obejście, które nakazuje KASLR, aby nie używał określonych lokalizacji pamięci.
Po potwierdzeniu znanych problemów z KASLR i lokalizacjami pamięci skomentowałem pod pytaniem, aby wyłączyć KASLR i ponownie uruchomić testy pamięci. W odpowiedzi stwierdzono, że wydaje się ona być skuteczna, więc zamieszczam tę odpowiedź.
Jak wyłączyć KASLR
Chociaż od kilku lat używam opcji wiersza polecenia grub kernel „kaslr”, stał się domyślnym jądrem od wersji co najmniej 4.12 . Aby wyeliminować ładowanie KASLR, użyj edycji
/etc/default/grub
i zmień ten wiersz:Możesz mieć inne opcje niż „cichy” i „plusk”. Ważnym krokiem jest dodanie „nokaslr” i pozostawienie pozostałych opcji na miejscu.
Następnie zapisz plik i uruchom:
Oczywiście innym sposobem wyłączenia KASLR jest po prostu użycie starszego jądra, takiego jak 4.4.0 pod Ubuntu 16.04.1, gdy KASLR nie został automatycznie dołączony.
źródło
Problem bardzo przypomina losowe uszkodzenie pamięci RAM. Z mojego doświadczenia wynika, że MemTest86 jest „zbyt łatwym” testem sprzętu. Znajduje naprawdę złą pamięć, ale drobne problemy często pozostają niezauważone.
Jeśli chcesz się dowiedzieć, czy masz dobrą pamięć, spróbuj uruchomić Prime95 w trybie autotestu / tortur skonfigurowanym tak, aby zużywał jak najwięcej pamięci RAM.
Kolejnym dobrym testem jest przeprowadzenie testu dwustronnego młota szeregowego przez kilka godzin.
Wierzę, że jeśli Prime95 i młot dwustronny nie mogą znaleźć problemów z pamięcią, prawdopodobnie działa poprawnie. Jednak po prostu uruchamianie MemTest86, kompilowanie programów, instalowanie systemu operacyjnego, granie w gry może wydawać się działać, nawet jeśli twoja pamięć jest nieco zła (byłeś tam, zrobiłeś to - i na dłuższą metę dostałem uszkodzone dane).
źródło