Portál AbcLinuxu, 21. května 2025 11:21

Debian 9 a data corruption s detektivní zápletkou

26.1.2018 19:01 | Přečteno: 1336× | všechno možny | poslední úprava: 26.1.2018 19:10

Přišel jsem na to náhodou. Stáhnul jsem z internetu cca 4GB instalační .iso soubor a neseděl mi SHA1 hash. Stáhnul jsem jej tedy znovu a to již bylo SHA1 v pořádku. Zkusil jsem pro zajímavost oba soubory porovnat pomocí 'cmp -l' a najednou byly oba dva shodné, SHA1 logicky také. Druhý den jsem je porovnal opět a už byly opět každý jiný. Lišily se v 64 po sobě jdoucích bytech. Výpis 'cmp -l' (osmičková soustava):
2440921089 164 361
2440921090 167 151
2440921091   0  14
2440921092   0  66
2440921093   0 344
2440921094   0 204
2440921095   0 137
2440921096   0 166
2440921097 305 177
2440921098 231 212
2440921099   0 265
2440921100   0  33
2440921101   0 311
2440921102   0 320
2440921103   0 223
2440921104   0  11
2440921105   0 122
2440921106   0 311
2440921107   0 101
2440921108   0 345
2440921109   0 103
2440921110   0 112
2440921111   0  30
2440921112   0 174
2440921113   0 341
2440921114   0 164
2440921115   0 141
2440921116   0 204
2440921117   0 245
2440921118   0 253
2440921119   0  20
2440921120   0 212
2440921121   0 266
2440921122   0 100
2440921123   0  32
2440921124   0  42
2440921125   0 333
2440921126   0 176
2440921127   0 313
2440921128   0 225
2440921129 251 306
2440921130 223 146
2440921131   0 315
2440921132   0 177
2440921133   0 341
2440921134   0 176
2440921135   0 320
2440921136   0 245
2440921137  11 241
2440921138   6 333
2440921139   0 233
2440921140   0 342
2440921141   0 312
2440921142   0  24
2440921143   0 364
2440921144   0 246
2440921145  23 226
2440921146   0 121
2440921147   0 154
2440921148   0 304
2440921149   0 326
2440921150   0 325
2440921151   0 166
2440921152   0 116
To vypadalo na hardwarovou chybu RAM, podloženou navíc tím, že jsem nedávno upgradoval z 1x 4GB DDR3 na 2x 4GB DDR3. Zkusil jsem tedy 'memtest' tří různých verzí (včetně té od PassMarku), nechal je jet několik hodin (i přes noc), ale žádná chyba se neprojevila. Uvědomil jsem si ale, že jsem již na podobně poškozený soubor narazil ještě před upgradem paměti a že mi ještě dříve, po výměně bezproblémového Debianu 8 za Debian 9, začal velmi často padat Firefox. Tam by mohla být souvislost.

Zdálo se tedy, že se chyba projevuje jen v běžícím systému. Provedl jsem tedy kontrolu integrity systému pomocí nástroje 'md5sums' (vše OK) a následně nainstaloval balíček 'memtester', který umí testovat paměť z běžícího systému. Z principu funkce sice nemůže otestovat celou RAM, ale přesto se v něm chyba poměrně rychle projevila:
FAILURE: 0xfffffffffff7ffff != 0x0000ee25 at offset 0x26f5f7f8.
FAILURE: 0xfffffffffff7ffff != 0x0001ab24 at offset 0x26f5f800.
FAILURE: 0xfffffffffff7ffff != 0x00000000 at offset 0x26f5f808.
FAILURE: 0xfffffffffff7ffff != 0x00000000 at offset 0x26f5f810.
FAILURE: 0xfffffffffff7ffff != 0x00000000 at offset 0x26f5f818.
FAILURE: 0xfffffffffff7ffff != 0x000185ef at offset 0x26f5f820.
FAILURE: 0xfffffffffff7ffff != 0x0000250a at offset 0x26f5f828.
FAILURE: 0xfffffffffff7ffff != 0x0000002b at offset 0x26f5f830.
Obdobná chyba se projevovala při různých testech (tahle je z Walking Ones), v rámci jednoho běhu memtesteru se neměnil offset, stále šlo o přepis přesně 64 bajtů a nová data měla stále stejnou strukturu zaplnění jednotlivých bytů. Tedy stejná místa s nulami, zbytek hodnot jiných, např. další průchod při stejném běhu (proto stejný offset), test Block Sequential, vypadal takto:
FAILURE: 0x1b1b1b1b1b1b1b1b != 0x000420e6 at offset 0x26f5f7f8.
FAILURE: 0x1b1b1b1b1b1b1b1b != 0x0010a507 at offset 0x26f5f800.
FAILURE: 0x1b1b1b1b1b1b1b1b != 0x00000000 at offset 0x26f5f808.
FAILURE: 0x1b1b1b1b1b1b1b1b != 0x00000000 at offset 0x26f5f810.
FAILURE: 0x1b1b1b1b1b1b1b1b != 0x00000000 at offset 0x26f5f818.
FAILURE: 0x1b1b1b1b1b1b1b1b != 0x00105991 at offset 0x26f5f820.
FAILURE: 0x1b1b1b1b1b1b1b1b != 0x00004b2e at offset 0x26f5f828.
FAILURE: 0x1b1b1b1b1b1b1b1b != 0x00000048 at offset 0x26f5f830.
Nastudoval jsem si, jak se dá s pomocí '/proc/PID/maps' a '/proc/PID/pagemap' přepočítat offset na fyzickou adresu modulu RAM, ale než jsem to použil, tak jsem zkusil spustit 'memtester' na systému s 4GB RAM. Nejprve pouze se starým modulem v prvním slotu, pak pouze s novým modulem v druhém slotu. Chyba se projevila v obou případech a opět vypadala úplně stejně! Tím jsem mohl vyloučit HW chybu obou modulů RAM. Zkusil jsem tedy (již opět s 2x 4GB) přepočet offsetu na fyzickou adresu RAM a po každém rebootu jsem dostal jiné místo v paměti (i když zrovna v tomto jsem mohl udělat chybu, protože výpočet je poměrně komplikovaný a není jej jak ověřit). To mi jen potvrdilo, že paměti jsou OK.

Dále jsem zkusil spustit 'memtester' v Debianu 8, který mám prozřetelně jen odsunutý na partiton na mechanickém disku. Běžel celou noc a žádná chyba se neprojevila. Na disku mám i Windows 7 kvůli několika málo hrám (paměť jsem upgradoval kvůli Flight Sim World) a ani v nich jsem nikdy nenarazil na nic, co by ukazovalo na chybu paměti.

Něco v Debianu 9 však těch 64 bajtů paměti neustále přepisovalo. Ale co a za jakých okolností? Možností, co může přepisovat paměť RAM je více, ale žádná není dostupná aplikacím. Může to být jen nějaký kernelový modul, neposlušný PCI hardware a nebo SMM.

Následovaly pokusy: Dál už mě napadlo jen zakazovat jednotlivá PCI zařízení v BIOSu (pokud jdou) a nebo zamezit nahrátí jejich modulů. Jako první na ráně byl on-board ethernet adaptér od nechvalně známého Realteku. Nejprve jsem zkusil síťovku shodit jen prostým 'ifdown enp4s0'. Po třech a půl hodinách a téměř osmi kompletních průchodech 6.5 GB RAM se chyba neprojevila. Jak že se ten její modul jmenuje?

Po týdnu pátrání, testování a googlování jsem do vyhledávaných slov přidal i "r8169" a okamžitě našel tohle:

Memory corruption with r8169 across several device revisions and kernels

Síťovka Realtek opět dostála své špatné pověsti. Dotyčnému nešťastníkovi zničila i nějaké BTRFS svazky, já zřejmě nakonec dopadl vcelku dobře. A mimochodem, s tím vypnutým 'gkrellm' to opravu mohlo vypadat lépe, ten totiž dělal to, co onen kernelový modul nesnáší - vyčítání statistiky.

Modul mám teď na blacklistu (pozor, musí se přegenerovat initramfs, jinak nepomůže ani jeho vymazání), k LAN jsem připojen pomocí USB Ethernet adaptéru a čekám na opravu. Memtester stále spouštím, ale věřím, že už nic nenajde...

Máte-li rádi svoje data, ověřte, zda také nepatříte mezi postižené, netýká se to jen Debianu!        

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

26.1.2018 19:30 Lenny_ | skóre: 10 | blog: lenny | Brno
Rozbalit Rozbalit vše Re: Debian 9 a data corruption s detektivní zápletkou
Odpovědět | Sbalit | Link | Blokovat | Admin
Zkusil bych použít r8168 (https://packages.debian.org/sid/kernel/r8168-dkms), je obvykle o dost méně bugový.
26.1.2018 19:45 disorder | blog: weblog
Rozbalit Rozbalit vše Re: Debian 9 a data corruption s detektivní zápletkou
Odpovědět | Sbalit | Link | Blokovat | Admin
Ja mam podivne nevysvetlitelne SATA vypadky na systeme s touto sietovkou a r8169 modulom. SMART nehlasi chybu, vymena kablov nic neriesi. Vzdy to len vypnem a opravim mirrory.
26.1.2018 19:48 disorder | blog: weblog
Rozbalit Rozbalit vše Re: Debian 9 a data corruption s detektivní zápletkou
Vlastne od poslednej vymeny kabla to padlo zatial len raz. Na nejaky corrupted file som uz tiez narazil. Neviem co si o tom mysliet, rev 06 sedi, ale kernel je uz starsi nez v tom linku.
26.1.2018 20:11 chrono
Rozbalit Rozbalit vše Re: Debian 9 a data corruption s detektivní zápletkou
Odpovědět | Sbalit | Link | Blokovat | Admin
Presne takto sa u mňa začal prejavovať problém pred tým, ako zdroj v PC kompletne zlyhal. Ak sa napr. nejaký súbor zle načítal, tak stačilo reštartovať PC a súbor bol opäť v poriadku.
26.1.2018 22:08 R
Rozbalit Rozbalit vše Re: Debian 9 a data corruption s detektivní zápletkou
Odpovědět | Sbalit | Link | Blokovat | Admin
Pekny bug. Dokonca aj patch tam je.
Jendа avatar 26.1.2018 23:18 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Debian 9 a data corruption s detektivní zápletkou
Odpovědět | Sbalit | Link | Blokovat | Admin
Já jsem dvakrát přišel o btrfs na notebooku, ale memtest86 i memtester procházejí. Takže se bojím, že to bude něco podobného (nemám realtek) nebo třeba pomalý refresh během uspání či špatný kontakt při přenášení uspaného do RAM. Ach jo.

No a nejlepší je když několik dní debuguješ náhodně se poškozující in-memory datovou strukturu v multithread programu a pak zjistíš, že to byla RAM. Škoda, že se nevyrábějí ECC notebooky a ani u desktopů (vč. Rýženu) není ECC standard.
30.1.2018 15:07 luky
Rozbalit Rozbalit vše Re: Debian 9 a data corruption s detektivní zápletkou
Nektery thinkpady maj ECC.
the.max avatar 27.1.2018 01:11 the.max | skóre: 46 | blog: Smetiště
Rozbalit Rozbalit vše Re: Debian 9 a data corruption s detektivní zápletkou
Odpovědět | Sbalit | Link | Blokovat | Admin
Realtek? Odstup satane!

Říkám to už mnoho let. Realtek není síťovka, ale jen hodně nepovedená parodie na síťovku. Tak nějak už z principu nevěřím ani samotnému PHY od Realteku, byť ethernet adaptér je součástí čipsetu a říká si třeba Intel.
KERNEL ULTRAS Fan Team || Sabaton - nejlepší učitel dějepisu || Gentoo - dokud nás systemd nerozdělí.
Jendа avatar 27.1.2018 03:58 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Debian 9 a data corruption s detektivní zápletkou
Já nevím, tobě přijde, že ta chyba je způsobená něčím realtek-specific?
27.1.2018 03:04 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Debian 9 a data corruption s detektivní zápletkou
Odpovědět | Sbalit | Link | Blokovat | Admin
Divný, mám rovnou tři a zatím se mi nic nepoškodilo :-D.
Intel meltdown a = arr[x[0]&1]; karma | 帮帮我,我被锁在中国房
Max avatar 29.1.2018 07:50 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Debian 9 a data corruption s detektivní zápletkou
Odpovědět | Sbalit | Link | Blokovat | Admin
Pěkná detektivka.
Zdar Max
Měl jsem sen ... :(
Migi avatar 29.1.2018 13:41 Migi | skóre: 59 | blog: Mig_Alley
Rozbalit Rozbalit vše Re: Debian 9 a data corruption s detektivní zápletkou
Odpovědět | Sbalit | Link | Blokovat | Admin
Kam se hrabe Hercule Poirot.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.