Мигал свет и перегружался коммутатор: Sep 26 15:44:13 lav kernel: [660207.010735] r8169 0000:02:00.0 eth0: link down Sep 26 15:44:18 lav kernel: [660212.234747] r8169 0000:02:00.0 eth0: link up Sep 26 15:44:23 lav kernel: [660216.922534] r8169 0000:02:00.0 eth0: link down Sep 26 15:44:28 lav kernel: [660222.146580] r8169 0000:02:00.0 eth0: link up Sep 26 15:44:36 lav kernel: [660230.121731] r8169 0000:02:00.0 eth0: link down Sep 26 15:44:38 lav kernel: [660232.206778] r8169 0000:02:00.0 eth0: link up После этого процесс зацикливается, при подключении через strace видны бесконечные ppoll([{fd=7<socket:[266225440]>, events=POLLIN}, {fd=8, events=POLLIN}, {fd=6<socket:[11925]>, events=POLLIN}, {fd=5<socket:[10413]>, events=POLLIN}], 4, {9707, 349083000}, [], 8) = 1 ([{fd=8, revents=POLLNVAL}], left {9707, 349079089}) ppoll([{fd=7<socket:[266225440]>, events=POLLIN}, {fd=8, events=POLLIN}, {fd=6<socket:[11925]>, events=POLLIN}, {fd=5<socket:[10413]>, events=POLLIN}], 4, {9707, 349009000}, [], 8^C) = 1 ([{fd=8, revents=POLLNVAL}], left {9707, 349005089}) backtrace из gdb: 0x0000003d204de721 in __GI_ppoll (fds=0x63a8c0, nfds=4, timeout=0x7fffd14b1d10, sigmask=sigmask@entry=0x7fffd14b1f90) at ../sysdeps/unix/sysv/linux/ppoll.c:51 51 result = INLINE_SYSCALL (ppoll, 5, fds, nfds, timeout, sigmask, _NSIG / 8); (gdb) bt #0 0x0000003d204de721 in __GI_ppoll (fds=0x63a8c0, nfds=4, timeout=0x7fffd14b1d10, sigmask=sigmask@entry=0x7fffd14b1f90) at ../sysdeps/unix/sysv/linux/ppoll.c:51 #1 0x0000000000406e17 in ppoll (__ss=0x7fffd14b1f90, __timeout=<optimized out>, __nfds=<optimized out>, __fds=<optimized out>) at /usr/include/bits/poll2.h:77 #2 eloop_start (dctx=dctx@entry=0x7fffd14b1f90) at eloop.c:374
Версия последняя из Сизифа: dhcpcd-6.3.1-alt2 При сборке: Testing for pollts ... no Testing for ppoll ... yes В этом режиме в configure POLLTS=ppoll и применяется #define pollts ppoll Таким образом вызывается в бесконечном цикле ppoll, который возвращает 1 # ls -l /proc/1732/fd/ итого 0 lrwx------ 1 root root 64 сен 26 16:35 0 -> /dev/null lrwx------ 1 root root 64 сен 26 16:35 1 -> /dev/null lrwx------ 1 root root 64 сен 26 16:35 2 -> /dev/null l-wx------ 1 root root 64 сен 26 16:35 3 -> /var/run/dhcpcd-eth0.pid lrwx------ 1 root root 64 сен 26 16:35 4 -> socket:[10412] lrwx------ 1 root root 64 сен 26 16:35 5 -> socket:[10413] lrwx------ 1 root root 64 сен 26 16:35 6 -> socket:[11925] lrwx------ 1 root root 64 сен 26 16:35 7 -> socket:[266225440] Я не смог понять, с кем этот сокет, почему на нём бесконечно событие (мы его не забираем?). Подозреваю, что с кем-то, кто управляет dhcpcd (systemd?)
тоже заметил странности с dhcpcd на Sisyphus, с чем связано непонятно, но часто не берёт адрес с WiFI, приходится пинать его через dhcpcd -n <интерфейс>
Для начала надо попробовать последнюю версию dhcpcd, может там проблема уже исправлена. Но для этого потребуются изменения в etcnet (апстрим dhcpcd легко и непринужденно изменил реакцию на сигналы). Я подготовлю патч для etcnet в ближайшее время.
Просьба проверить с dhcpcd-6.4.7-alt1, у меня вроде больше не воспризводится. Со старым dhcpcd этот баг после link down/up я видел, но не понял как 100% его воспроизвести.
пакет dhcpcd-6.4.7-alt1 вынул-вставил кабель, всё зависло как и раньше :(
(В ответ на комментарий №5) > пакет dhcpcd-6.4.7-alt1 > вынул-вставил кабель, всё зависло как и раньше :( Думаю, не был перезапущен dhcpcd после обновления. Убил зависший, перезапустил network,теперь всё работает отлично: при потере линка убирает все адреса и маршруты, с ним связанные. Не уверен, что я этого ожидал. Но не виснет.
а при восстановлении линка возвращает всё обратно ?
(В ответ на комментарий №7) > а при восстановлении линка возвращает всё обратно ? Заново запрашивает и выставляет, что получит.