Segfault кліента VPN на Pi? Спачатку зафіксуйце працэс
Абалонка друкуе segmentation fault, і карта перапрашываецца. Зафіксуйце выканальны файл, версію і запіс аб збоі, перш чым мяняць абсталяванне.
Вы запускаеце кліент, тэрмінал друкуе Segmentation fault (core dumped), і наступная гадзіна ідзе на перапрашыўку карты. Гэтае паведамленне апісвае, як адзін працэс памёр у адзін момант. Яно не кажа, што плата пашкоджана, і не выключае праблемы з сілкаваннем, носьбітам або вобразам.
Ідзіце ад радка, які надрукавала абалонка, назад да працэсу за ім. Карысныя факты — які выканальны файл збоіў, у якім асяроддзі і на якой стадыі злучэння.
Пачніце з радка, які надрукавала абалонка
Імя ў вашай камандзе часта ёсць абгорткай або запускальнікам, які запускае іншы бінарны файл, таму ўдакладніце, які выканальны файл ядро фактычна спыніла. Запішыце поўны шлях, версію пакета і праграмы, архітэктуру, версію АС і ядра, уліковы запіс, які яго запусціў, і дакладны час. Каманда абалонкі з імем VPN можа лёгка запусціць дапаможны працэс, і запіс назаве гэты дапаможны працэс. Капіраванне радка версіі з пакета, усталяванага ў мінулым месяцы, нічога не кажа пра тое, што працавала.
Адзначце, што непасрэдна папярэднічала збою: запуск, разбор профілю, аўтэнтыфікацыя або сеанс, які ўжо прапускаў трафік. Гэтыя чатыры стадыі звужаюць пошук значна мацней за слова segfault. Трымайце кароткае акно журнала вакол гэтай падзеі і пакіньце здагадкі пра тое, якое нядаўняе змяненне выклікала збой, пакуль запіс не скажа гэтага.
Высветліце, ці існуе вобраз памяці
Даведка пра core-файл апісвае дамп як вобраз памяці працэсу, запісаны пры спыненні, і таксама пералічвае ўмовы, якія перашкаджаюць гэтаму запісу. Сярод гэтых умоў — нулявы ліміт рэсурсаў і core-шаблон, які накіроўвае дамп не ў працоўны каталог. Таму адсутнасць файла з імем core нічога не даказвае пра тое, ці быў збой. Праверце наладжаны шаблон і ліміт, перш чым рабіць выснову, што сістэма не стварыла доказаў.
На сістэме з калектарам systemd падтрымоўваны прадстаўленне звязвае захаваны запіс з выканальным файлам і часам. Запіс у журнале і чытэльны вобраз памяці — два розныя артэфакты: палітыка захавання і правы могуць пакінуць вам адзін без другога. Спытайце дыстрыбутыў або суправаджальніка праграмы пра дыягнастычны працэс, які яны падтрымліваюць, бо траса, зробленая з іншага білда або іншага набору бібліятэк, звычайна марнуе іх час.
sysctl kernel.core_pattern
ulimit -c
coredumpctl list --since "1 hour ago" --no-pager
coredumpctl info /usr/sbin/openvpn
Паўтарыце гэтыя чытанні на машыне, якая сапраўды ўпала. Рабіць іх на свежай усталёўцы — адказваць на пытанне, якога ніхто не задаваў.
Абыходзьцеся з дампам як з матэрыялам, які нясе сакрэты
Памяць працэсу можа змяшчаць уліковыя даныя, ключы сеансаў і змест профілю, што робіць дамп больш адчувальным, чым тэкставы журнал побач. Рэдагаванне журнала нічога не робіць для непразрыстага вобраза памяці, а звычайныя трэкеры праблем захоўваюць прымацаваныя файлы значна даўжэй, чым доўжыцца тэма падтрымкі. Перанясіце файл праз прыватны канал, які прадастаўляе пастаўшчык або суправаджальнік. Публікацыя сырога дампа ў публічнай праблеме выкрывае ўсё, што было ў памяці, калі працэс памёр, і вы не можаце ведаць, што гэта было, пакуль хтосьці не праверыць.
Калі суправаджальнік просіць трасу, спытайце, з якога выканальнага файла і якіх бібліятэк ён патрэбны. Backtrace, рамкі якога не адпавядаюць заяўленаму білду, цяжка даверыць і лёгка прачытаць няправільна.
Праверце паходжанне, перш чым нешта замяняць
Праверце паходжанне пакета і цэласнасць файлаў праз таго, хто валодае ўсталёўкай, і захавайце канфігурацыю і матэрыялы ідэнтычнасці перад любым кантраляваным рамонтам. Не перазапісвайце адзіную копію доказаў толькі дзеля таго, каб убачыць, ці запускаецца чыстая ўсталёўка. Свежы вобраз, які загружаецца, кажа, што новы вобраз загружаецца. Ён не кажа, ці стары змяшчаў пашкоджаны пакет, збойную карту або бінарны файл, які заўсёды павінен быў збоіць на гэтай архітэктуры.
Калі няроднасныя праграмы таксама збояць, або сістэма піша ў журнал памылкі носьбіта, сілкавання ці ядра, захавайце гэтыя назіранні для расследавання платформы. Яны пашыраюць абсяг; яны не даказваюць, што кожны segfault паходзіць ад збойнай RAM або сапсаванага вобраза.
Пасля мэтанакіраванага выпраўлення паўтарыце той жа дазволены запуск і тую ж аперацыю VPN на тым жа абсталяванні. Скажыце, які збой спыніўся і пры якой версіі. Чыстая загрузка сама па сабе не вызначае дэфектны кампанент і не прадказвае наступную паломку абсталявання.