VPN-asiakasohjelman segfault Pi:llä? Tallenna prosessi ensin
Kuori tulostaa segmentation fault ja kortti kirjoitetaan uudelleen. Tallenna suoritettava tiedosto, versio ja kaatumistietue ennen kuin vaihdat mitään laitteistoa.
Käynnistät asiakasohjelman, pääte tulostaa Segmentation fault (core dumped) ja seuraava tunti menee kortin uudelleen kirjoittamiseen. Tuo viesti kuvaa, miten yksi prosessi kuoli yhdellä hetkellä. Se ei kerro, että levy on vaurioitunut, eikä se vapauta virtalähdettä, tallennustilaa tai levykuvaa epäilyksistä.
Aloita kuoren tulostamasta rivistä ja palaa sen takana olevaan prosessiin. Hyödyllisiä ovat tiedot siitä, mikä suoritettava tiedosto epäonnistui, missä ympäristössä ja missä yhteyden vaiheessa.
Aloita kuoren tulostamasta rivistä
Komennon nimi on usein kääre tai käynnistin, joka käynnistää toisen binääritiedoston, joten varmista, minkä suoritettavan tiedoston ydin todella lopetti. Kirjaa koko polku, paketin ja sovelluksen versio, arkkitehtuuri, käyttöjärjestelmän ja ytimen versio, käynnistänyt tili ja tarkka aika. VPN:n mukaan nimetty kuorikomento käynnistää helposti apuprosessin, ja tietue nimeää juuri sen apuprosessin. Viime kuussa asennetun paketin versiomerkkijonon kopioiminen ei kerro mitään siitä, mitä oikeasti ajettiin.
Kirjaa, mitä kaatumista välittömästi edelsi: käynnistys, profiilin jäsennys, todennus tai istunto, joka välitti jo liikennettä. Nuo neljä vaihetta rajaavat hakua paljon enemmän kuin sana segfault. Säilytä tapahtuman ympäriltä lyhyt loki-ikkuna ja jätä pois arvailut siitä, mikä viimeaikainen muutos sen aiheutti, kunnes tietue kertoo sen.
Selvitä, onko muistikuvasta olemassa
core-tiedoston viite kuvaa dumpin prosessin muistin kuvaksi, joka kirjoitetaan lopetettaessa, ja luettelee myös ne ehdot, jotka estävät kirjoituksen. Niihin kuuluvat nollaresurssiraja ja core-kaava, joka ohjaa dumpin muualle kuin työhakemistoon. Puuttuva core-niminen tiedosto ei siis todista mitään siitä, tapahtuiko kaatuminen. Tarkista määritetty kaava ja raja ennen kuin päättelet, ettei järjestelmä tuottanut todisteita.
Järjestelmässä, joka käyttää systemd:n kerääjää, tuettu näkymä yhdistää tallennetun tietueen suoritettavaan tiedostoon ja aikaan. Lokimerkintä ja luettava muistikuva ovat kaksi eri artefaktia: säilytyskäytäntö ja käyttöoikeudet voivat jättää sinulle toisen ilman toista. Kysy jakelulta tai sovelluksen ylläpitäjältä heidän tukemaansa diagnostiikkatyönkulkua, sillä toisesta buildista tai toisesta kirjastojoukosta tehty jäljitys yleensä tuhlaa heidän aikaansa.
sysctl kernel.core_pattern
ulimit -c
coredumpctl list --since "1 hour ago" --no-pager
coredumpctl info /usr/sbin/openvpn
Toista nuo luvut koneella, joka todella kaatui. Niiden tekeminen puhtaalle asennukselle vastaa kysymykseen, jota kukaan ei esittänyt.
Käsittele dumpia salaisuuksia kantavana aineistona
Prosessin muisti voi sisältää tunnuksia, istuntoavaimia ja profiilin sisältöä, mikä tekee dumpista arkaluontoisemman kuin vieressä oleva tekstiloki. Lokin sensurointi ei tee mitään läpinäkymättömälle muistikkuvalle, ja tavalliset issue-trackerit säilyttävät liitteitä paljon kauemmin kuin tukiketju kestää. Siirrä tiedosto yksityistä kanavaa pitkin, jonka toimittaja tai ylläpitäjä tarjoaa. Raakan dumpin lähettäminen julkiseen issueen paljastaa kaiken, mitä muistissa oli prosessin kuollessa, etkä voi tietää mitä se oli ennen kuin joku tutkii sen.
Jos ylläpitäjä pyytää jäljitystä, kysy, mistä suoritettavasta tiedostosta ja mitkä kirjastot he haluavat siihen. Backtrace, jonka kehykset eivät vastaa ilmoitettua buildia, on vaikea uskoa ja helppo lukea väärin.
Tarkista alkuperä ennen kuin vaihdat mitään
Varmista paketin alkuperä ja tiedostojen eheys siltä, joka omistaa asennuksen, ja säilytä kokoonpano ja identiteettimateriaali ennen mitään hallittua korjausta. Älä kirjoita todisteen ainoan kopion yli vain nähdäksesi, käynnistyykö puhdas asennus. Uusi käynnistyvä levykuva kertoo, että uusi levykuva käynnistyy. Se ei kerro, sisälsikö vanha vioittuneen paketin, vikaantuvan kortin vai binääritiedoston, joka olisi aina kaatunut tällä arkkitehtuurilla.
Jos myös riippumattomat ohjelmat epäonnistuvat tai järjestelmä kirjaa tallennus-, virta- tai ydinvirheitä, säilytä ne havainnot alustan tutkintaa varten. Ne laajentavat alaa; ne eivät todista, että jokainen segfault tulee viallisesta RAM-muistista tai vioittuneesta levykuvasta.
Kohdennetun korjauksen jälkeen toista sama valtuutettu käynnistys ja sama VPN-toiminto samalla laitteistolla. Kerro, mikä vika loppui ja minkä version alla. Puhdas käynnistys yksinään ei tunnista viallista komponenttia eikä ennusta seuraavaa laitevikaa.