Ви запускаєте клієнт, термінал виводить 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 на тому самому обладнанні. Скажіть, яка відмова припинилася і в якій версії. Чисте завантаження саме собою не виявляє несправний компонент і не передбачає наступну поломку обладнання.

Схожі статті