Paleidžiate klientą, terminalas išspausdina Segmentation fault (core dumped), ir kita valanda nueina plokštei perrašyti. Šis pranešimas aprašo, kaip vienas procesas mirė vienu momentu. Jis nesako, kad plokštė pažeista, ir neatmeta maitinimo, saugyklos ar atvaizdo kaltės.

Pradėkite nuo shell išspausdintos eilutės ir grįžkite prie už jos esančio proceso. Naudingi faktai yra tai, kuris vykdomasis failas nepavyko, kokioje aplinkoje ir kurioje prisijungimo stadijoje.

Pradėkite nuo shell išspausdintos eilutės

Jūsų komandos pavadinimas dažnai yra apvalkalas ar paleidiklis, paleidžiantis kitą dvejetainį failą, todėl patvirtinkite, kurį vykdomąjį failą branduolys iš tikrųjų užbaigė. Užsirašykite visą kelią, paketo ir programos versiją, architektūrą, OS ir branduolio leidimą, paskyrą, kuri jį paleido, ir tikslų laiką. Shell komanda VPN vardu gali lengvai paleisti pagalbinį procesą, ir įraše bus nurodytas tas pagalbinis procesas. Ankstesnį mėnesį įdiegto paketo versijos eilutės kopijavimas nieko nepasako apie tai, kas vyko.

Užsirašykite, kas buvo prieš pat avariją: paleidimas, profilio analizė, autentifikavimas ar sesija, kuri jau praleidinėjo srautą. Šios keturios stadijos susiaurina paiešką daug labiau nei žodis segfault. Išsaugokite trumpą žurnalo intervalą apie tą įvykį, o spėjimus, koks nesenas pakeitimas tai sukėlė, palikite, kol įrašas tai pasakys.

Išsiaiškinkite, ar yra atminties atvaizdas

core failo nuoroda aprašo dump kaip proceso atminties atvaizdą, įrašomą užbaigiant, ir taip pat išvardija sąlygas, kurios tam įrašymui trukdo. Šios sąlygos apima nulinį išteklių limitą ir core šabloną, nukreipiantį dump už darbo katalogo. Todėl trūkstamas failas pavadinimu core nieko neįrodo apie tai, ar avarija įvyko. Patikrinkite sukonfigūruotą šabloną ir limitą prieš darydami išvadą, kad sistema nepateikė įrodymų.

Sistemoje, naudojančioje systemd rinktuvą, palaikoma peržiūra susieja saugomą įrašą su vykdomuoju failu ir laiku. Žurnalo įrašas ir skaitomas atminties atvaizdas yra du skirtingi artefaktai: saugojimo politika ir teisės gali palikti vieną be kito. Paklauskite distribucijos ar programos prižiūrėtojo apie jų palaikomą diagnostikos darbo eigą, nes iš kito build ar kito bibliotekų rinkinio gautas trace paprastai eikvoja jų laiką.

sysctl kernel.core_pattern
ulimit -c
coredumpctl list --since "1 hour ago" --no-pager
coredumpctl info /usr/sbin/openvpn

Pakartokite tuos skaitymus mašinoje, kuri iš tikrųjų nulūžo. Atlikti juos naujame įdiegime reiškia atsakyti į klausimą, kurio niekas neuždavė.

Elkitės su dump kaip su paslaptis nešančia medžiaga

Proceso atmintis gali turėti prisijungimo duomenų, sesijos raktų ir profilio turinio, todėl dump yra jautresnis už šalia esantį tekstinį žurnalą. Žurnalo redagavimas nieko nepadaro nepermatomam atminties atvaizdui, o įprasti issue tracker'iai priedus saugo daug ilgiau, nei trunka palaikymo gija. Perkelkite failą privačiu kanalu, kurį suteikia tiekėjas ar prižiūrėtojas. Viešame issue paskelbtas neapdorotas dump atskleidžia viską, kas buvo atmintyje proceso mirties metu, ir negalite žinoti, kas tai buvo, kol kas nors nepatikrins.

Jei prižiūrėtojas prašo trace, paklauskite, iš kurio vykdomojo failo ir kokių bibliotekų jis nori. Backtrace, kurio kadrai neatitinka nurodyto build, sunku pasitikėti ir lengva neteisingai perskaityti.

Patikrinkite kilmę prieš ką nors keisdami

Patikrinkite paketo kilmę ir failų vientisumą per tą, kam priklauso įdiegimas, ir išsaugokite konfigūraciją bei tapatybės medžiagą prieš bet kokį kontroliuojamą remontą. Neperrašykite vienintelės įrodymo kopijos vien tam, kad pamatytumėte, ar švarus įdiegimas paleidžiamas. Naujas atvaizdas, kuris paleidžiamas, pasako, kad naujas atvaizdas paleidžiamas. Jis nepasako, ar senajame buvo sugadintas paketas, gendantis plokštė ar dvejetainis failas, kuris šioje architektūroje visada būtų nulūžęs.

Jei nesuseję programos taip pat nepavyksta, arba sistema registruoja saugyklos, maitinimo ar branduolio klaidas, išsaugokite tuos stebėjimus platformos tyrimui. Jie praplečia sritį; jie neįrodo, kad kiekvienas segfault kyla iš gendančios RAM ar sugadinto atvaizdo.

Po tikslingos pataisos pakartokite tą patį leidžiamą paleidimą ir tą pačią VPN operaciją toje pačioje aparatinėje įrangoje. Pasakykite, kuri nesėkmė sustojo ir kurioje versijoje. Švarus paleidimas pats savaime nei nustato sugedusią dalį, nei numato kitą aparatinės įrangos gedimą.

Susiję straipsniai