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

Недавно я сделал обновление apt-get , за которым последовало обновление apt-get на моем VPS-сервере Debian. Вдруг (по крайней мере) 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

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

Я проверил 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? Это рабочий сервер с живым трафиком.

Спасибо!

1
задан 28 January 2016 в 11:39
1 ответ

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

'/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 обновите списки пакетов и выполните команду там; он сообщит вам, какие пакеты являются кандидатами на переустановку.

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

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

2
ответ дан 3 December 2019 в 20:42

Теги

Похожие вопросы