Linux Labs

Система изнутри: ресурсы, ядро, процессы / Ступень 8 из 12

dmesg и журнал ядра

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 5 из 8 · теория · 4 мин

Строка segfault и важность

Оболочка написала Segmentation fault, ядро — подробности: какой процесс, куда он обратился и в каком коде.

Segmentation fault (segfault) значит, что программа обратилась к памяти, которая ей не принадлежит. Ядро завершает её сигналом SIGSEGV с номером 11, поэтому код — 128 + 11 = 139. В буфер идёт строка:

thumbgen[1046]: segfault at 0 ip 000070265979429d sp 00007fffc68d8478
  error 4 in libc.so.6[702659628000+188000]

thumbgen[1046] — имя и PID процесса, segfault at 0 — адрес, к которому он обратился (0 — пустой указатель, частая ошибка в коде), in libc.so.6 — библиотека, в коде которой это случилось. Чинят такую ошибку разработчики, а администратору строка говорит, какая программа упала, когда и повторяется ли падение.

У каждой строки ядра есть уровень важности — от emerg до debug. Ошибка ext4 пишется уровнем crit, убийство процесса OOM killer — err, а segfault — info: падение одной программы ядро считает её личным делом. dmesg -l отбирает строки по уровню.

Проверь себя 1 вопрос

Ты ищешь упавшие программы командой sudo dmesg -l err,crit. Попадёт ли в вывод строка thumbgen[…]: segfault at 0 …?

  • -T меняет вид времени в начале строки, а не отбор. Отбирает -l, и уровень у segfault — info.

  • Падение одной программы ядро пишет уровнем info. Строку найдёт sudo dmesg -l info | grep segfault или просто sudo dmesg | grep segfault.

Строка segfault — уровня info, и -l err,crit её отбрасывает. Ищи падения по слову: sudo dmesg -T | grep segfault.

Главное в шаге

  • segfault at … in … — процесс обратился к чужой памяти; ядро завершило его SIGSEGV, код 139.
  • В строке segfault — имя и PID процесса, адрес обращения и библиотека, где это случилось.
  • Уровень у segfault — info: dmesg -l err,crit его не покажет.
Ubuntu 24.04
Загрузка…