<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>30355</bug_id>
          
          <creation_ts>2014-09-26 16:20:31 +0400</creation_ts>
          <short_desc>Зависает со 100% CPU при изменении статуса линка</short_desc>
          <delta_ts>2014-10-22 22:48:39 +0400</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>dhcpcd</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>30369</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Vitaly Lipatov">lav</reporter>
          <assigned_to name="Mikhail Efremov">sem</assigned_to>
          <cc>anton</cc>
    
    <cc>glebfm</cc>
    
    <cc>mike</cc>
    
    <cc>pv</cc>
    
    <cc>rider</cc>
    
    <cc>sem</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>147915</commentid>
    <comment_count>0</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2014-09-26 16:20:31 +0400</bug_when>
    <thetext>Мигал свет и перегружался коммутатор:
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&lt;socket:[266225440]&gt;, events=POLLIN}, {fd=8, events=POLLIN}, {fd=6&lt;socket:[11925]&gt;, events=POLLIN}, {fd=5&lt;socket:[10413]&gt;, events=POLLIN}], 4, {9707, 349083000}, [], 8) = 1 ([{fd=8, revents=POLLNVAL}], left {9707, 349079089})
ppoll([{fd=7&lt;socket:[266225440]&gt;, events=POLLIN}, {fd=8, events=POLLIN}, {fd=6&lt;socket:[11925]&gt;, events=POLLIN}, {fd=5&lt;socket:[10413]&gt;, 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=&lt;optimized out&gt;, __nfds=&lt;optimized out&gt;, __fds=&lt;optimized out&gt;)
    at /usr/include/bits/poll2.h:77
#2  eloop_start (dctx=dctx@entry=0x7fffd14b1f90) at eloop.c:374</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147916</commentid>
    <comment_count>1</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2014-09-26 16:43:29 +0400</bug_when>
    <thetext>Версия последняя из Сизифа: 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 -&gt; /dev/null
lrwx------ 1 root root 64 сен 26 16:35 1 -&gt; /dev/null
lrwx------ 1 root root 64 сен 26 16:35 2 -&gt; /dev/null
l-wx------ 1 root root 64 сен 26 16:35 3 -&gt; /var/run/dhcpcd-eth0.pid
lrwx------ 1 root root 64 сен 26 16:35 4 -&gt; socket:[10412]
lrwx------ 1 root root 64 сен 26 16:35 5 -&gt; socket:[10413]
lrwx------ 1 root root 64 сен 26 16:35 6 -&gt; socket:[11925]
lrwx------ 1 root root 64 сен 26 16:35 7 -&gt; socket:[266225440]


Я не смог понять, с кем этот сокет, почему на нём бесконечно событие (мы его не забираем?).
Подозреваю, что с кем-то, кто управляет dhcpcd (systemd?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147917</commentid>
    <comment_count>2</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2014-09-26 17:08:21 +0400</bug_when>
    <thetext>тоже заметил странности с dhcpcd на Sisyphus, с чем связано непонятно, но часто не берёт адрес с WiFI, приходится пинать его через dhcpcd -n &lt;интерфейс&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147930</commentid>
    <comment_count>3</comment_count>
    <who name="Mikhail Efremov">sem</who>
    <bug_when>2014-09-28 19:26:16 +0400</bug_when>
    <thetext>Для начала надо попробовать последнюю версию dhcpcd, может там проблема уже исправлена. Но для этого потребуются изменения в etcnet (апстрим dhcpcd легко и непринужденно изменил реакцию на сигналы). Я подготовлю патч для etcnet в ближайшее время.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147976</commentid>
    <comment_count>4</comment_count>
    <who name="Mikhail Efremov">sem</who>
    <bug_when>2014-10-02 18:48:50 +0400</bug_when>
    <thetext>Просьба проверить с dhcpcd-6.4.7-alt1, у меня вроде больше не воспризводится.
Со старым dhcpcd этот баг после link down/up я видел, но не понял как 100% его воспроизвести.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148085</commentid>
    <comment_count>5</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2014-10-11 20:15:53 +0400</bug_when>
    <thetext>пакет dhcpcd-6.4.7-alt1
вынул-вставил кабель, всё зависло как и раньше :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148086</commentid>
    <comment_count>6</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2014-10-11 20:21:10 +0400</bug_when>
    <thetext>(В ответ на комментарий №5)
&gt; пакет dhcpcd-6.4.7-alt1
&gt; вынул-вставил кабель, всё зависло как и раньше :(

Думаю, не был перезапущен dhcpcd после обновления. Убил зависший, перезапустил network,теперь всё работает отлично: при потере линка убирает все адреса и маршруты, с ним связанные. Не уверен, что я этого ожидал. Но не виснет.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148090</commentid>
    <comment_count>7</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2014-10-12 18:54:15 +0400</bug_when>
    <thetext>а при восстановлении линка возвращает всё обратно ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148190</commentid>
    <comment_count>8</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2014-10-22 22:48:39 +0400</bug_when>
    <thetext>(В ответ на комментарий №7)
&gt; а при восстановлении линка возвращает всё обратно ?
Заново запрашивает и выставляет, что получит.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>