Segfault i VPN-klienten på en Pi? Fånga processen först
Skalet skriver ut segmentation fault och kortet flashas om. Registrera den körbara filen, versionen och kraschloggen innan du byter någon hårdvara.
Du startar klienten, terminalen skriver Segmentation fault (core dumped), och nästa timme går åt till att flasha om kortet. Det meddelandet beskriver hur en process dog i ett ögonblick. Det säger inte att kortet är skadat, och det friar varken strömförsörjningen, lagringen eller avbilden.
Arbeta från raden skalet skrev ut och tillbaka till processen bakom den. De användbara fakta är vilken körbar fil som misslyckades, i vilken miljö och i vilket skede av anslutningen.
Börja med raden skalet skrev ut
Namnet i ditt kommando är ofta ett omslag eller en startare som startar en annan binärfil, så bekräfta vilken körbar fil kärnan faktiskt avslutade. Skriv ned full sökväg, paket- och programversion, arkitektur, OS- och kärnversion, kontot som startade den och den exakta tiden. Ett skalkommando uppkallat efter en VPN startar lätt en hjälpprocess, och loggen kommer att namnge den hjälparen. Att kopiera versionssträngen från ett paket du installerade förra månaden säger ingenting om vad som faktiskt kördes.
Notera vad som hände precis före kraschen: uppstart, profilparsning, autentisering eller en session som redan skickade trafik. Dessa fyra skeden begränsar sökningen mycket mer än ordet segfault. Spara det korta loggfönstret kring händelsen och lämna gissningarna om vilken nylig ändring som orsakade den tills loggen säger det.
Ta reda på om det finns en minnesbild
Referensen för core-filen beskriver en dump som en bild av processminnet som skrivs vid avslut, och den listar också villkoren som hindrar den skrivningen. Dessa villkor omfattar en resursgräns på noll och ett core-mönster som skickar dumpen någon annanstans än arbetskatalogen. En saknad fil med namnet core bevisar därför ingenting om huruvida en krasch inträffade. Kontrollera det konfigurerade mönstret och gränsen innan du drar slutsatsen att systemet inte producerade något bevis.
På ett system som använder systemd-insamlaren korrelerar den stödda vyn en lagrad logg med en körbar fil och en tidpunkt. En journalpost och en läsbar minnesbild är två olika artefakter: bevarandepolicy och behörigheter kan lämna dig med den ena men inte den andra. Fråga distributionen eller programmets ansvariga om det diagnostikflöde de stöder, eftersom en trace från ett annat bygge eller en annan biblioteksuppsättning vanligtvis slösar bort deras tid.
sysctl kernel.core_pattern
ulimit -c
coredumpctl list --since "1 hour ago" --no-pager
coredumpctl info /usr/sbin/openvpn
Upprepa dessa läsningar på maskinen som faktiskt kraschade. Att göra dem på en färsk installation besvarar en fråga som ingen ställde.
Behandla dumpen som material som bär hemligheter
Processminne kan innehålla inloggningsuppgifter, sessionsnycklar och profilinnehåll, vilket gör en dump känsligare än textloggen bredvid. Att redigera loggen gör ingenting för en ogenomtränglig minnesbild, och vanliga issue-trackers behåller bilagor mycket längre än en supporttråd varar. Flytta filen genom den privata kanal som leverantören eller den ansvariga erbjuder. Att lägga ut en rå dump i ett offentligt issue exponerar allt som fanns i minnet när processen dog, och du kan inte veta vad det var förrän någon undersöker det.
Om en ansvarig begär en trace, fråga från vilken körbar fil och vilka bibliotek de vill ha den. En backtrace vars ramar inte matchar det rapporterade bygget är svår att lita på och lätt att läsa fel.
Kontrollera ursprunget innan du byter ut något
Verifiera paketets ursprung och filintegritet hos den som äger installationen, och bevara konfiguration och identitetsmaterial före varje kontrollerad reparation. Skriv inte över den enda kopian av beviset bara för att se om en ren installation startar. En färsk avbild som startar säger att den nya avbilden startar. Det säger inte om den gamla innehöll ett skadat paket, ett sviktande kort eller en binärfil som alltid skulle fallera på denna arkitektur.
Om även orelaterade program misslyckas, eller systemet loggar lagrings-, ström- eller kärnfela, spara de observationerna för plattformsutredningen. De vidgar omfånget; de bevisar inte att varje segfault kommer från sviktande RAM eller en skadad avbild.
Efter en riktad rättelse, upprepa samma auktoriserade start och samma VPN-operation på samma hårdvara. Säg vilket fel som upphörde och under vilken version. En ren start ensam identifierar inte en defekt komponent och förutsäger inte nästa hårdvarufel.