Segfault in VPN-client op een Pi? Leg eerst het proces vast
De shell drukt segmentation fault af en de kaart wordt opnieuw geflasht. Leg het uitvoerbare bestand, de versie en het crashrecord vast voordat je hardware vervangt.
Je start de client, de terminal drukt Segmentation fault (core dumped) af en het volgende uur gaat op aan het opnieuw flashen van de kaart. Dat bericht beschrijft hoe één proces op één moment stierf. Het zegt niet dat de kaart beschadigd is, en het vrijwaart ook de voeding, de opslag of de image niet.
Werk vanaf de regel die de shell afdrukte terug naar het proces erachter. De bruikbare feiten zijn welk uitvoerbaar bestand faalde, in welke omgeving en in welke fase van de verbinding.
Begin bij de regel die de shell afdrukte
De naam in je commando is vaak een wrapper of een starter die een ander binair bestand start, dus bevestig welk uitvoerbaar bestand de kernel werkelijk beëindigde. Schrijf het volledige pad, de pakket- en applicatieversie, de architectuur, de OS- en kernelversie, het account dat het startte en het exacte tijdstip op. Een shellcommando met de naam van een VPN start gemakkelijk een hulpproces, en het record zal dat hulpproces noemen. De versiestring van een vorige maand geïnstalleerd pakket overnemen zegt niets over wat er liep.
Noteer wat direct aan de crash voorafging: opstart, profielparsing, authenticatie of een sessie die al verkeer doorliet. Die vier fasen vernauwen de zoektocht veel meer dan het woord segfault. Bewaar het korte logvenster rond die gebeurtenis en laat gissingen over welke recente wijziging het veroorzaakte weg tot het record dat zegt.
Zoek uit of er een geheugenbeeld bestaat
De referentie voor het core-bestand beschrijft een dump als een beeld van het procesgeheugen dat bij beëindiging wordt geschreven, en noemt ook de voorwaarden die dat schrijven verhinderen. Die voorwaarden omvatten een resourcelimiet van nul en een core-patroon dat de dump ergens anders dan de werkmap aflevert. Een ontbrekend bestand met de naam core bewijst dus niets over of er een crash was. Controleer het geconfigureerde patroon en de limiet voordat je concludeert dat het systeem geen bewijs produceerde.
Op een systeem met de collector van systemd koppelt de ondersteunde weergave een opgeslagen record aan een uitvoerbaar bestand en een tijdstip. Een journaalregel en een leesbaar geheugenbeeld zijn twee verschillende artefacten: bewaarbeleid en rechten kunnen je met het ene achterlaten zonder het andere. Vraag de distributie of de beheerder van de applicatie naar de diagnostische werkwijze die zij ondersteunen, want een trace uit een andere build of een andere bibliotheekset kost meestal hun tijd.
sysctl kernel.core_pattern
ulimit -c
coredumpctl list --since "1 hour ago" --no-pager
coredumpctl info /usr/sbin/openvpn
Herhaal die uitlezingen op de machine die daadwerkelijk crashte. Ze op een verse installatie doen beantwoordt een vraag die niemand stelde.
Behandel de dump als materiaal dat geheimen bevat
Procesgeheugen kan inloggegevens, sessiesleutels en profielinhoud bevatten, waardoor een dump gevoeliger is dan het tekstlog ernaast. Het log redigeren doet niets voor een ondoorzichtig geheugenbeeld, en gewone issue-trackers bewaren bijlagen veel langer dan een supportthread duurt. Verplaats het bestand via het privékanaal dat de leverancier of beheerder biedt. Een ruwe dump in een openbaar issue plaatsen legt alles bloot wat in het geheugen zat toen het proces stierf, en je kunt niet weten wat dat was tot iemand het onderzoekt.
Als een beheerder een trace vraagt, vraag dan uit welk uitvoerbaar bestand en welke bibliotheken hij die wil. Een backtrace waarvan de frames niet bij de gemelde build passen is moeilijk te vertrouwen en gemakkelijk verkeerd te lezen.
Controleer de herkomst voordat je iets vervangt
Verifieer de pakkethkomst en bestandsintegriteit via degene die de installatie bezit, en bewaar configuratie en identiteitsmateriaal vóór elke gecontroleerde reparatie. Overschrijf niet de enige kopie van het bewijs alleen om te zien of een schone installatie start. Een verse image die start, zegt dat de nieuwe image start. Het zegt niet of de oude een beschadigd pakket, een falende kaart of een binair bestand bevatte dat op deze architectuur altijd zou falen.
Als ook ongerelateerde programma's falen, of het systeem logt opslag-, stroom- of kernelfouten, bewaar die observaties voor het platformonderzoek. Ze verbreden de scope; ze bewijzen niet dat elke segfault van falend RAM of een beschadigde image komt.
Herhaal na een gerichte correctie dezelfde geautoriseerde start en dezelfde VPN-operatie op dezelfde hardware. Zeg welke fout stopte en onder welke versie. Een schone start identificeert op zichzelf geen defect onderdeel en voorspelt ook niet de volgende hardwarefout.