Zaženete odjemalca, terminal izpiše Segmentation fault (core dumped) in naslednja ura gre za ponovno pisanje kartice. To sporočilo opisuje, kako je en proces umrl v enem trenutku. Ne pravi, da je plošča poškodovana, in ne oprošča napajanja, shrambe ali slike.

Začnite pri vrstici, ki jo je izpisala lupina, in se vrnite k procesu za njo. Koristna dejstva so, katera izvršljiva datoteka je odpovedala, v kakšnem okolju in v kateri fazi povezave.

Začnite pri vrstici, ki jo je izpisala lupina

Ime v vašem ukazu je pogosto ovoj ali zaganjalnik, ki zažene drugo binarno datoteko, zato potrdite, katero izvršljivo datoteko je jedro dejansko končalo. Zapišite polno pot, različico paketa in aplikacije, arhitekturo, izdajo OS in jedra, račun, ki ga je zagnal, in točen čas. Ukaz lupine z imenom VPN lahko zlahka zažene pomožni proces in zapis bo imenoval tega pomočnika. Kopiranje različice iz paketa, nameščenega prejšnji mesec, ne pove ničesar o tem, kaj je teklo.

Zabeležite, kaj je neposredno predhodilo sesutju: zagon, razčlenjevanje profila, preverjanje pristnosti ali seja, ki je že prenašala promet. Te štiri faze zožijo iskanje veliko bolj kot beseda segfault. Shranite kratko okno dnevnikov okoli dogodka in ugibanja o tem, katera nedavna sprememba ga je povzročila, pustite, dokler zapis tega ne pove.

Ugotovite, ali obstaja slika pomnilnika

Referenca za datoteko core opisuje dump kot sliko pomnilnika procesa, zapisano ob koncu, in navaja tudi pogoje, ki tej zapisovanju preprečujejo. Ti pogoji vključujejo ničelno omejitev virov in vzorec core, ki dump usmeri drugam kot v delovno mapo. Zato manjkajoča datoteka z imenom core ne dokazuje ničesar o tem, ali je do sesutja prišlo. Preverite nastavljeni vzorec in omejitev, preden sklepate, da sistem ni ustvaril dokaza.

V sistemu z zbiralnikom systemd podprti pogled poveže shranjeni zapis z izvršljivo datoteko in časom. Vnos v dnevniku in berljiva slika pomnilnika sta dva različna artefakta: politika hrambe in dovoljenja vas lahko pustijo z enim brez drugega. Vprašajte distribucijo ali vzdrževalca aplikacije za diagnostični potek, ki ga podpirajo, ker sled, ustvarjena iz druge gradnje ali drugega nabora knjižnic, običajno zapravi njihov čas.

sysctl kernel.core_pattern
ulimit -c
coredumpctl list --since "1 hour ago" --no-pager
coredumpctl info /usr/sbin/openvpn

Te odčitke ponovite na stroju, ki je resnično sesul. Izvajanje na sveži namestitvi odgovarja na vprašanje, ki ga nihče ni postavil.

Obravnavajte dump kot gradivo, ki nosi skrivnosti

Pomnilnik procesa lahko vsebuje poverilnice, sejne ključe in vsebino profila, zaradi česar je dump občutljivejši od besedilnega dnevnika ob njem. Redigiranje dnevnika ne pomaga pri nepregledni sliki pomnilnika, običajni sledilniki težav pa hranijo priloge veliko dlje, kot traja nit za podporo. Premaknite datoteko po zasebnem kanalu, ki ga ponuja dobavitelj ali vzdrževalec. Objava surovega dumpa v javni težavi razkrije vse, kar je bilo v pomnilniku ob smrti procesa, in ne morete vedeti, kaj je to bilo, dokler tega nekdo ne pregleda.

Če vzdrževalec zahteva sled, vprašajte, iz katere izvršljive datoteke in katerih knjižnic jo želi. Backtrace, katerega okviri se ne ujemajo z navedeno gradnjo, je težko zaupati in lahko napačno prebrati.

Preverite izvor, preden karkoli zamenjate

Preverite izvor paketa in celovitost datotek pri tistem, ki ima v lasti namestitev, in pred vsakim nadzorovanim popravilom ohranite konfiguracijo in gradivo identitete. Ne prepišite edine kopije dokaza samo zato, da vidite, ali se čista namestitev zažene. Sveža slika, ki se zažene, pravi, da se nova slika zažene. Ne pravi, ali je stara vsebovala poškodovan paket, odpovedujočo kartico ali binarno datoteko, ki bi na tej arhitekturi vedno padla.

Če odpovedo tudi nepovezani programi ali sistem beleži napake shrambe, napajanja ali jedra, te ugotovitve ohranite za preiskavo platforme. Širijo obseg; ne dokazujejo, da vsak segfault izhaja iz odpovedujočega RAM ali poškodovane slike.

Po ciljnem popravku ponovite isti dovoljeni zagon in isto operacijo VPN na isti strojni opremi. Povejte, katera napaka se je ustavila in pod katero različico. Čist zagon sam po sebi ne prepozna okvarjenega dela niti ne predvidi naslednje okvare strojne opreme.

Sorodni članki