Назад | Перейти на главную страницу

wget дает ошибку сегментации

Я недавно сделал apt-get update с последующим apt-get upgrade на моем сервере Debian VPS. Вдруг (по крайней мере) wget перестал работать с ошибкой Segmentation fault. Это даже не попытка что-то сделать. Итак, после некоторого поиска в Google я установил gdb и попытался отладить wget:

~# gdb wget
(gdb) run
Starting program: /usr/bin/wget
Error while mapping shared library sections:
'/lib/libc.so.5': not in executable format: File truncated
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
0x0000000000000000 in ?? ()

Смотря на /lib/ дает мне это:

~# ls -l /lib/
total 288
lrwxrwxrwx  1 root root    21 Oct 14 08:52 cpp -> /etc/alternatives/cpp
drwxr-xr-x  2 root root  4096 May  7  2015 discover
drwxr-xr-x  2 root root  4096 May  7  2015 ifupdown
drwxr-xr-x  2 root root  4096 May  7  2015 init
-rwxr-xr-x  1 root root 71416 Oct  5  2014 klibc-IpHGKKbZiB_yZ7GPagmQz2GwVAQ.so
-rwxr-xr-x  1 root root 23904 Jan 26 22:08 libc.so.5
lrwxrwxrwx  1 root root    17 Nov  8  2014 libip4tc.so.0 -> libip4tc.so.0.1.0
-rw-r--r--  1 root root 31416 Nov  8  2014 libip4tc.so.0.1.0
lrwxrwxrwx  1 root root    17 Nov  8  2014 libip6tc.so.0 -> libip6tc.so.0.1.0
-rw-r--r--  1 root root 31416 Nov  8  2014 libip6tc.so.0.1.0
lrwxrwxrwx  1 root root    15 Nov  8  2014 libipq.so.0 -> libipq.so.0.0.0
-rw-r--r--  1 root root 10544 Nov  8  2014 libipq.so.0.0.0
lrwxrwxrwx  1 root root    16 Nov  8  2014 libiptc.so.0 -> libiptc.so.0.0.0
-rw-r--r--  1 root root  5816 Nov  8  2014 libiptc.so.0.0.0
lrwxrwxrwx  1 root root    20 Nov  8  2014 libxtables.so.10 -> libxtables.so.10.0.0
-rw-r--r--  1 root root 51896 Nov  8  2014 libxtables.so.10.0.0
drwxr-xr-x  3 root root  4096 May  7  2015 lsb
drwxr-xr-x  2 root root  4096 May  7  2015 modprobe.d
drwxr-xr-x  3 root root  4096 May  7  2015 modules
drwxr-xr-x  2 root root  4096 May  7  2015 startpar
drwxr-xr-x  8 root root  4096 Jan 27 15:19 systemd
drwxr-xr-x 15 root root  4096 May  7  2015 terminfo
drwxr-xr-x  4 root root  4096 Jan 27 15:13 udev
drwxr-xr-x  4 root root 12288 Jan 27 15:20 x86_64-linux-gnu
drwxr-xr-x  2 root root  4096 May  7  2015 xtables

Как мы видим, 26 января с libc.so.5 «что-то случилось», но я не знаю, что именно.

Я проверил dmesg | grep "wget":

(truncated)
[247973.065698] wget[9959]: segfault at 0 ip           (null) sp 00007ffc31e37558 error 14 in wget[400000+63000]
[248272.905735] wget[10886]: segfault at 0 ip           (null) sp 00007ffcf3e14038 error 14 in wget[400000+63000]
[248572.716856] wget[11824]: segfault at 0 ip           (null) sp 00007fffdcc9e2d8 error 14 in wget[400000+63000]
[248873.509595] wget[12742]: segfault at 0 ip           (null) sp 00007ffd84ad95d8 error 14 in wget[400000+63000]
[249173.463737] wget[13689]: segfault at 0 ip           (null) sp 00007ffca87ba518 error 14 in wget[400000+63000]
[249472.948078] wget[14664]: segfault at 0 ip           (null) sp 00007ffe54fd32a8 error 14 in wget[400000+63000]
[249776.082815] wget[15640]: segfault at 0 ip           (null) sp 00007ffecc36c758 error 14 in wget[400000+63000]
[250072.819988] wget[16595]: segfault at 0 ip           (null) sp 00007fff07f4f9d8 error 14 in wget[400000+63000]
[250373.130105] wget[17570]: segfault at 0 ip           (null) sp 00007ffcec9c01d8 error 14 in wget[400000+63000]
[250672.640891] wget[18493]: segfault at 0 ip           (null) sp 00007ffe9f78cc08 error 14 in wget[400000+63000]
[250975.950585] wget[19412]: segfault at 0 ip           (null) sp 00007fff46300128 error 14 in wget[400000+63000]

Сервер - это VPS, работающий на Debian по адресу Wedos.com:

~# uname -a
Linux server1 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u3 (2016-01-17) x86_64 GNU/Linux

Может ли кто-нибудь помочь мне, что происходит и как исправить segfault? Это рабочий сервер с живым трафиком.

Спасибо!

Ключевым моментом здесь является линия

'/lib/libc.so.5': not in executable format: File truncated

Библиотека C - один из основных компонентов Unix-подобной системы, включая Linux. То, что он поврежден, означает, что практически ничего буду работать. Вам повезло, что ваша система хромает, но вполне возможно, что запуск или перезапуск чего-либо не удастся.

НЕ ПЕРЕЗАГРУЖАЙТЕ СИСТЕМУ. В его нынешнем состоянии он почти наверняка не вернется.

Особенно потому, что это VPS, и поскольку это произошло вместе с обновлением, мне интересно, может быть, у вас закончились ресурсы, такие как дисковое пространство или inodes. Я бы не стал ограничиваться чем-то вроде этого, чтобы сломать больше вещей в вашей системе, поэтому вам может потребоваться реализовать некоторую форму аварийного восстановления. Самым простым вариантом может быть восстановление самой последней резервной копии.

По крайней мере, вам придется переустановить библиотеку C. В моей системе Debian это обеспечивается libc6 семейство пакетов, в первую очередь libc6. Вы можете запустить dpkg -S libc.so чтобы перечислить все пакеты, которые предоставляют файлы с именами, содержащими подстроку libc.so. Если вы не можете запустить это на рассматриваемом VPS, настройте отдельную систему (где-то может быть виртуальная машина с низким уровнем подготовки; это не имеет большого значения) с тем же выпуском Debian, обновите списки пакетов и запустите команда там; он сообщит вам, какие пакеты можно переустановить.

Когда вы вернетесь к основам работы, вы можете попробовать Как проверить, соответствуют ли файлы, установленные пакетом, оригиналам? как проверить, что (по крайней мере, в большинстве случаев) больше ничего не было повреждено.

Лично, особенно с учетом того, что, по-видимому, это важная система (поскольку вы утверждаете, что это «рабочий сервер с живым трафиком»), я, вероятно, предпочел бы просто инициировать любые имеющиеся у вас планы аварийного восстановления. Скорее всего, это будет проще и быстрее, чем пытаться исправить что-то на месте и никогда не знать, какие ошибки вы могли пропустить. На самом деле это просто вариация нужно ядерное оружие с орбиты, чтобы быть уверенным.