Segfault i VPN-klient på en Pi? Fang processen først
Skallen udskriver segmentation fault, og kortet bliver flashet igen. Registrér den eksekverbare fil, versionen og nedbrudsrapporten, før du udskifter hardware.
Du starter klienten, terminalen udskriver Segmentation fault (core dumped), og den næste time går med at flashe kortet igen. Beskeden beskriver, hvordan én proces døde på ét tidspunkt. Den siger ikke, at boardet er beskadiget, og den frikender heller ikke strømforsyningen, lageret eller imagefilen.
Arbejd fra den linje, skallen udskrev, tilbage til processen bag den. De nyttige fakta er, hvilken eksekverbar fil der fejlede, i hvilket miljø og på hvilket trin af forbindelsen.
Start ved den linje, skallen udskrev
Navnet i din kommando er ofte en wrapper eller en starter, der starter en anden binærfil, så bekræft, hvilken eksekverbar fil kernen faktisk afsluttede. Skriv den fulde sti, pakke- og programversion, arkitektur, OS- og kernelversion, den konto der startede den, og det præcise tidspunkt ned. En shell-kommando opkaldt efter en VPN kan nemt starte en hjælpeproces, og registreringen vil navngive hjælperen. At kopiere versionsstrengen fra en pakke, du installerede sidste måned, siger intet om, hvad der kørte.
Notér, hvad der umiddelbart gik forud for nedbruddet: opstart, profilparsing, godkendelse eller en session, der allerede sendte trafik. De fire trin indsnævrer søgningen langt mere end ordet segfault. Behold det korte logvindue omkring hændelsen, og lad gæt om, hvilken nylig ændring der forårsagede den, ligge, indtil registreringen siger det.
Find ud af, om der findes et hukommelsesbillede
Reference for core-filen beskriver et dump som et billede af proceshukommelsen skrevet ved afslutningen, og den oplister også de betingelser, der forhindrer skrivningen. Disse betingelser omfatter en ressourcegrænse på nul og et core-mønster, der sender dumpet et andet sted hen end arbejdsbiblioteket. En manglende fil ved navn core beviser derfor intet om, hvorvidt der skete et nedbrud. Kontrollér det konfigurerede mønster og grænsen, før du konkluderer, at systemet ikke producerede bevis.
På et system med systemd's indsamler korrelerer den understøttede visning en gemt registrering med en eksekverbar fil og et tidspunkt. En journalpost og et læsbart hukommelsesbillede er to forskellige artefakter: opbevaringspolitik og tilladelser kan efterlade dig med det ene og ikke det andet. Spørg distributionen eller programmets vedligeholder om den diagnostiske arbejdsgang, de understøtter, fordi et trace fra et andet build eller et andet bibliotekssæt som regel spilder deres tid.
sysctl kernel.core_pattern
ulimit -c
coredumpctl list --since "1 hour ago" --no-pager
coredumpctl info /usr/sbin/openvpn
Gentag de læsninger på den maskine, der faktisk styrtede ned. At gøre det på en frisk installation besvarer et spørgsmål, ingen stillede.
Behandl dumpet som materiale, der bærer hemmeligheder
Proceshukommelse kan indeholde legitimationsoplysninger, sessionsnøgler og profilindhold, hvilket gør et dump mere følsomt end tekstloggen ved siden af. At redigere loggen gør intet for et uigennemsigtigt hukommelsesbillede, og almindelige issue trackere beholder vedhæftninger meget længere, end en supporttråd varer. Flyt filen gennem den private kanal, som leverandøren eller vedligeholderen stiller til rådighed. At poste et råt dump i et offentligt issue blotlægger alt, hvad der var i hukommelsen, da processen døde, og du kan ikke vide hvad, før nogen undersøger det.
Hvis en vedligeholder beder om et trace, så spørg, hvilken eksekverbar fil og hvilke biblioteker de vil have det fra. Et backtrace, hvis rammer ikke matcher det rapporterede build, er svært at stole på og let at læse forkert.
Kontrollér oprindelsen, før du udskifter noget
Bekræft pakkens oprindelse og filintegritet gennem den, der ejer installationen, og bevar konfiguration og identitetsmateriale før enhver kontrolleret reparation. Overskriv ikke den eneste kopi af beviset bare for at se, om en ren installation starter. Et friskt image, der starter, fortæller, at det nye image starter. Det fortæller ikke, om det gamle indeholdt en beskadiget pakke, et svigtende kort eller en binærfil, der altid ville fejle på denne arkitektur.
Hvis også urelaterede programmer fejler, eller systemet logger lager-, strøm- eller kernelfejl, så gem de observationer til platformundersøgelsen. De udvider omfanget; de beviser ikke, at hvert segfault kommer fra svigtende RAM eller et beskadiget image.
Efter en målrettet rettelse gentages den samme autoriserede start og den samme VPN-operation på den samme hardware. Sig, hvilken fejl der stoppede, og under hvilken version. En ren opstart identificerer ikke i sig selv en defekt komponent og forudsiger heller ikke den næste hardwarefejl.