Pokrenete klijenta, terminal ispiše Segmentation fault (core dumped), a sljedeći sat ode na ponovno flešovanje kartice. Ta poruka opisuje kako je jedan proces umro u jednom trenutku. Ne kaže da je ploča oštećena i ne oslobađa napajanje, pohranu ni sliku od sumnje.

Krenite od reda koji je shell ispisao natrag prema procesu iza njega. Korisne činjenice su koja je izvršna datoteka pala, u kojem okruženju i u kojoj fazi veze.

Pođite od reda koji je shell ispisao

Ime u vašoj naredbi često je omotač ili pokretač koji pokreće drugu binarnu datoteku, pa potvrdite koju je izvršnu datoteku kernel stvarno prekinuo. Zapišite punu putanju, verziju paketa i aplikacije, arhitekturu, izdanje OS-a i kernela, račun koji ju je pokrenuo i točno vrijeme. Shell naredba nazvana po VPN-u lako može pokrenuti pomoćni proces, a zapis će imenovati taj pomoćni proces. Kopiranje verzije iz paketa instaliranog prošlog mjeseca ne govori ništa o tome što je radilo.

Zabilježite šta je neposredno prethodilo padu: pokretanje, parsiranje profila, autentifikacija ili sesija koja je već propuštala promet. Te četiri faze sužavaju pretragu mnogo više od riječi segfault. Sačuvajte kratki prozor loga oko tog događaja i ostavite nagađanja o tome koja je nedavna promjena uzrokovala pad dok zapis to ne kaže.

Provjerite postoji li slika memorije

Referenca za core datoteku opisuje dump kao sliku memorije procesa zapisanu pri prekidu i navodi uslove koji to pisanje sprječavaju. Ti uslovi uključuju nulti limit resursa i core obrazac koji dump usmjerava izvan radnog direktorija. Nedostatak datoteke pod imenom core stoga ne dokazuje ništa o tome je li došlo do pada. Provjerite konfigurirani obrazac i limit prije nego zaključite da sistem nije proizveo dokaz.

Na sistemu koji koristi systemd kolektor, podržani prikaz povezuje sačuvani zapis s izvršnom datotekom i vremenom. Zapis u journalu i čitljiva slika memorije dva su različita artefakta: politika zadržavanja i dozvole mogu vam ostaviti jedno bez drugoga. Pitajte distribuciju ili održavaoca aplikacije za dijagnostički tok rada koji podržavaju, jer trace iz drugog builda ili drugog skupa biblioteka obično troši njihovo vrijeme.

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

Ponovite ta čitanja na mašini koja je stvarno pala. Raditi ih na svježoj instalaciji odgovara na pitanje koje niko nije postavio.

Tretirajte dump kao materijal koji nosi tajne

Memorija procesa može sadržavati akreditive, sesijske ključeve i sadržaj profila, što dump čini osjetljivijim od tekstualnog loga pored njega. Redaktiranje loga ne čini ništa za neprozirnu sliku memorije, a obični issue tracker-i čuvaju priloge mnogo duže nego što traje nit podrške. Premjestite datoteku privatnim kanalom koji vendor ili održavalac pruža. Objavljivanje sirovog dumpa u javnom issue-u izlaže sve što je bilo u memoriji kad je proces umro, a ne možete znati šta je to bilo dok neko ne pregleda.

Ako održavalac traži trace, pitajte iz koje izvršne datoteke i kojih biblioteka ga žele. Backtrace čiji se okviri ne poklapaju s prijavljenim buildom teško je povjerovati i lako pogrešno pročitati.

Provjerite porijeklo prije nego bilo šta zamijenite

Provjerite porijeklo paketa i integritet datoteka kod onoga koji posjeduje instalaciju i sačuvajte konfiguraciju i identitetski materijal prije svake kontrolirane popravke. Ne prebrišite jedinu kopiju dokaza samo da vidite pokreće li se čista instalacija. Svježa slika koja se podiže kaže da se nova slika podiže. Ne kaže je li stara sadržavala korumpiran paket, karticu koja otkazuje ili binarnu datoteku koja je uvijek trebala pasti na ovoj arhitekturi.

Ako i nepovezani programi padaju, ili sistem loguje greške pohrane, napajanja ili kernela, sačuvajte ta zapažanja za istragu platforme. Ona proširuju obim; ne dokazuju da svaki segfault dolazi od RAM-a koji otkazuje ili korumpirane slike.

Nakon ciljane popravke ponovite isto odobreno pokretanje i istu VPN operaciju na istom hardveru. Recite koja je greška prestala i pod kojom verzijom. Čisto podizanje samo po sebi ni ne identifikuje neispravnu komponentu ni ne predviđa sljedeći hardverski kvar.

Povezani članci