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 на том же оборудовании. Скажите, какой отказ прекратился и в какой версии. Чистая загрузка сама по себе не выявляет неисправный компонент и не предсказывает следующую поломку оборудования.