Du starter klienten, terminalen skriver Segmentation fault (core dumped), og den neste timen går med til å flashe kortet på nytt. Meldingen beskriver hvordan én prosess døde i ett øyeblikk. Den sier ikke at kortet er skadet, og den frikjenner heller ikke strømforsyningen, lagringen eller image-filen.

Arbeid fra linjen skallet skrev ut og tilbake til prosessen bak den. De nyttige faktaene er hvilken kjørbar fil som feilet, i hvilket miljø og i hvilken fase av tilkoblingen.

Start med linjen skallet skrev ut

Navnet i kommandoen din er ofte en wrapper eller en starter som starter en annen binærfil, så bekreft hvilken kjørbar fil kjernen faktisk avsluttet. Skriv ned full sti, pakke- og programversjon, arkitektur, OS- og kjernelversjon, kontoen som startet den, og det nøyaktige tidspunktet. En skallkommando oppkalt etter en VPN kan lett starte en hjelpeprosess, og loggen vil navngi den hjelperen. Å kopiere versjonsstrengen fra en pakke du installerte forrige måned sier ingenting om hva som faktisk kjørte.

Noter hva som skjedde rett før krasjet: oppstart, profilparsing, autentisering eller en økt som allerede sendte trafikk. Disse fire fasene snevrer inn søket mye mer enn ordet segfault. Ta vare på det korte loggvinduet rundt hendelsen, og legg bort gjettingen om hvilken nylig endring som forårsaket det til loggen sier det.

Finn ut om det finnes et minnebilde

Referansen for core-filen beskriver en dump som et bilde av prosessminnet som skrives ved avslutning, og den lister også vilkårene som hindrer skrivingen. Disse vilkårene omfatter en ressursgrense på null og et core-mønster som sender dumpen et annet sted enn arbeidskatalogen. En manglende fil med navnet core beviser derfor ingenting om hvorvidt det skjedde et krasj. Kontroller det konfigurerte mønsteret og grensen før du konkluderer med at systemet ikke produserte bevis.

På et system som bruker systemd-innsamleren, korrelerer den støttede visningen en lagret logg med en kjørbar fil og et tidspunkt. En journaloppføring og et lesbart minnebilde er to forskjellige artefakter: oppbevaringspolicy og tillatelser kan etterlate deg med det ene og ikke det andre. Spør distribusjonen eller vedlikeholderen av programmet om diagnostikkflyten de støtter, fordi en trace fra en annen build eller et annet bibliotekssett vanligvis kaster bort tiden deres.

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

Gjenta disse lesingene på maskinen som faktisk krasjet. Å gjøre dem på en fersk installasjon svarer på et spørsmål ingen stilte.

Behandle dumpen som materiale som bærer hemmeligheter

Prosessminne kan inneholde påloggingsinformasjon, øktnøkler og profilinnhold, noe som gjør en dump mer følsom enn tekstloggen ved siden av. Å redigere loggen gjør ingenting for et ugjennomsiktig minnebilde, og vanlige issue-trackere beholder vedlegg mye lenger enn en støttetråd varer. Flytt filen gjennom den private kanalen leverandøren eller vedlikeholderen tilbyr. Å legge ut en rå dump i et offentlig issue eksponerer alt som var i minnet da prosessen døde, og du kan ikke vite hva det var før noen undersøker det.

Hvis en vedlikeholder ber om en trace, spør hvilken kjørbar fil og hvilke biblioteker de vil ha den fra. En backtrace der rammene ikke samsvarer med den rapporterte builden, er vanskelig å stole på og lett å lese feil.

Kontroller opprinnelsen før du bytter ut noe

Verifiser pakkeopprinnelse og filintegritet gjennom den som eier installasjonen, og ta vare på konfigurasjon og identitetsmateriale før enhver kontrollert reparasjon. Ikke overskriv den eneste kopien av beviset bare for å se om en ren installasjon starter. Et ferskt image som starter, sier at det nye imaget starter. Det sier ikke om det gamle inneholdt en skadet pakke, et sviktende kort eller en binærfil som alltid ville feile på denne arkitekturen.

Hvis også urelaterte programmer feiler, eller systemet logger lagrings-, strøm- eller kjernelfeil, ta vare på observasjonene for plattformundersøkelsen. De utvider omfanget; de beviser ikke at hvert segfault kommer fra sviktende RAM eller et skadet image.

Etter en målrettet rettelse, gjenta den samme autoriserte oppstarten og den samme VPN-operasjonen på samme maskinvare. Si hvilken feil som stoppet, og under hvilken versjon. En ren oppstart alene identifiserer ikke en defekt komponent og forutsier heller ikke neste maskinvarefeil.

Relaterte artikler