В один момент на сервере выросло большое количество процессов “/usr/libexec/abrt-hook-ccpp” (более 300), которые никуда не девались и висели в непонятном зависшем состоянии. Это относится к инструменту abrt v 2.0.8, который делает дампы при возникновении креша с каким-либо прикладным ПО или ядром. Но в данной версии 2.0.8 процессы скапливаются из-за бага в abrt.
Можно запустить ps aux | grep ‘abrt-hook-ccpp’ и сделать трейс для PID любого процесса:
strace -f -p 317150
Выхлоп будет примерно таким:
Process 317150 attached
restart_syscall(<... resuming interrupted call ...>) = 0
symlinkat("317150", 5, ".lock") = -1 EEXIST (File exists)
readlinkat(5, ".lock", "4017", 15) = 4
access("/proc/4017", F_OK) = 0
nanosleep({0, 500000000}, NULL) = 0
symlinkat("317150", 5, ".lock") = -1 EEXIST (File exists)
readlinkat(5, ".lock", "4017", 15) = 4
access("/proc/4017", F_OK) = 0
nanosleep({0, 500000000}, NULL) = 0
symlinkat("317150", 5, ".lock") = -1 EEXIST (File exists)
readlinkat(5, ".lock", "4017", 15) = 4
access("/proc/4017", F_OK) = 0
nanosleep({0, 500000000}, NULL) = 0
Чекаем файловый дескриптор:
ls -l /proc/317150/fd
total 0
lr-x------. 1 root root 64 Nov 2 14:37 0 -> pipe:[1577878550]
lrwx------. 1 root root 64 Nov 2 14:37 1 -> /dev/null
lrwx------. 1 root root 64 Nov 2 14:37 2 -> /dev/null
lrwx------. 1 root root 64 Nov 2 14:37 3 -> socket:[1577881793]
lr-x------. 1 root root 64 Nov 2 14:37 4 -> /var/spool/abrt
lr-x------. 1 root root 64 Nov 2 14:37 5 -> /var/spool/abrt/ccpp-2015-10-05-15:04:14-262898
В директории /var/spool/abrt/ccpp-2015-10-05-15:04:14-262898 будет найден файл .lock:
ls -la /var/spool/abrt/ccpp-2015-10-05-15:04:14-262898
total 2024
drwxr-x---. 2 root abrt 41 Oct 5 15:06 .
drwxr-xr-x. 37 abrt abrt 4096 Oct 30 10:24 ..
lrwxrwxrwx. 1 root root 4 Oct 5 15:05 .lock -> 4017
-rw-------. 1 root root 2066788 Oct 5 15:06 sosreport.tar.xz
Он ссылается непонятно куда, потому процесс и завис. Если его удалить, то процесс отвисает. Данный баг описан на багтрекере шляпы и даже есть патчи.