Segfault i VPN-klienten på ein Pi? Fang prosessen først
Skalet skriv ut segmentation fault, og kortet blir flasht på nytt. Registrer kjørbar fil, versjon og krasjlogg før du byter noko maskinvare.
Du startar klienten, terminalen skriv Segmentation fault (core dumped), og den neste timen går med til å flashe kortet på nytt. Meldinga skildrar korleis éin prosess døydde i eitt augneblink. Ho seier ikkje at kortet er skadd, og ho frikjenner heller ikkje straumforsyninga, lagringa eller image-fila.
Arbeid frå linja skalet skreiv ut og attende til prosessen bak henne. Dei nyttige fakta er kva kjørbar fil som feila, i kva miljø og i kva fase av tilkoplinga.
Start med linja skalet skreiv ut
Namnet i kommandoen din er ofte ein wrapper eller ein startar som startar ei anna binærfil, så stadfest kva kjørbar fil kjernen faktisk avslutta. Skriv ned full sti, pakke- og programversjon, arkitektur, OS- og kjerneversjon, kontoen som starta henne, og det nøyaktige tidspunktet. Ein skal kommando kalla opp etter ein VPN kan lett starte ein hjelpeprosess, og loggen vil namngje den hjelparen. Å kopiere versjonsstrengen frå ein pakke du installerte førre månad seier ingenting om kva som faktisk køyrde.
Noter kva som skjedde rett før krasjet: oppstart, profilparsing, autentisering eller ei økt som allereie sende trafikk. Desse fire fasane snevrar inn søket mykje meir enn ordet segfault. Ta vare på det korte loggvindauget rundt hendinga, og legg bort gjettinga om kva nyleg endring som årsaka det til loggen seier det.
Finn ut om det finst eit minnebilete
Referansen for core-fila skildrar ein dump som eit bilete av prosessminnet som blir skrive ved avslutning, og han listar også vilkåra som hindrar skrivinga. Desse vilkåra omfattar ei ressursgrense på null og eit core-mønster som sender dumpen ein annan stad enn arbeidskatalogen. Ei manglande fil med namnet core beviser derfor ingenting om korvidt det skjedde eit krasj. Kontroller det konfigurerte mønsteret og grensa før du konkluderer med at systemet ikkje produserte bevis.
På eit system som brukar systemd-innsamlaren, korrelerer den støtta visinga ein lagra logg med ei kjørbar fil og eit tidspunkt. Ei journaloppføring og eit lesbart minnebilete er to ulike artefaktar: oppbevaringspolicy og løyve kan etterlate deg med det eine og ikkje det andre. Spør distribusjonen eller vedlikehaldaren av programmet om diagnostikkflyten dei støttar, fordi ein trace frå ein annan build eller eit anna bibliotekssett vanlegvis kastar bort tida deira.
sysctl kernel.core_pattern
ulimit -c
coredumpctl list --since "1 hour ago" --no-pager
coredumpctl info /usr/sbin/openvpn
Gjenta desse lesingane på maskina som faktisk krasja. Å gjere dei på ein fersk installasjon svarar på eit spørsmål ingen stilte.
Handsam dumpen som materiale som ber hemmelegheiter
Prosessminne kan innehalde påloggingsinformasjon, øktnøklar og profilinnhald, noko som gjer ein dump meir følsam enn tekstloggen ved sida av. Å redigere loggen gjer ingenting for eit ugjennomsiktig minnebilete, og vanlege issue-trackarar held vedlegg mykje lengre enn ein støttetråd varer. Flytt fila gjennom den private kanalen leverandøren eller vedlikehaldaren tilbyr. Å leggje ut ein rå dump i eit offentleg issue eksponerer alt som var i minnet då prosessen døydde, og du kan ikkje vite kva det var før nokon undersøkjer det.
Viss ein vedlikehaldar ber om ein trace, spør kva kjørbar fil og kva bibliotek dei vil ha han frå. Ein backtrace der rammene ikkje samsvarar med den rapporterte builden, er vanskeleg å stole på og lett å lese feil.
Kontroller opphavet før du byter ut noko
Verifiser pakkeopphav og filintegritet gjennom den som eig installasjonen, og ta vare på konfigurasjon og identitetsmateriale før kvar kontrollert reparasjon. Ikkje skriv over den einaste kopien av beviset berre for å sjå om ein rein installasjon startar. Eit ferskt image som startar, seier at det nye imaget startar. Det seier ikkje om det gamle inneheldt ein skadd pakke, eit sviktande kort eller ei binærfil som alltid ville feile på denne arkitekturen.
Viss også urelaterte program feilar, eller systemet loggar lagrings-, straum- eller kjernefeil, ta vare på observasjonane for plattformundersøkinga. Dei utvidar omfanget; dei beviser ikkje at kvar segfault kjem frå sviktande RAM eller eit skadd image.
Etter ein målretta retting, gjenta den same autoriserte oppstarten og den same VPN-operasjonen på same maskinvare. Sei kva feil som stoppa, og under kva versjon. Ein rein oppstart åleine identifiserer ikkje ein defekt komponent og føreseier heller ikkje neste maskinvarefeil.