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

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

    <bug>
          <bug_id>34721</bug_id>
          
          <creation_ts>2018-03-27 22:00:09 +0300</creation_ts>
          <short_desc>Every Xvnc session leaks a file descriptor</short_desc>
          <delta_ts>2018-03-28 10:17:33 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>lightdm</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>major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Arseny Maslennikov">arseny</reporter>
          <assigned_to name="Arseny Maslennikov">arseny</assigned_to>
          <cc>george</cc>
    
    <cc>golubevan</cc>
    
    <cc>imz</cc>
    
    <cc>manowar</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>169943</commentid>
    <comment_count>0</comment_count>
    <who name="Arseny Maslennikov">arseny</who>
    <bug_when>2018-03-27 22:00:09 +0300</bug_when>
    <thetext>Если включить поддержку VNC-сервера в lightdm, то по каждому подключению деймон открывает файловый дескриптор (начиная с 13), смотрящий в сокет TCP-соединения, который (в рамках жизненного цикла деймона) не закрывается больше никогда.

Ошибка воспроизводится всегда.

В случае, когда сеанс завершается по инициативе X-сервера, утекает ещё и TCP-четвёрка (соединение никогда не выходит из CLOSE_WAIT).

http://git.altlinux.org/people/arseny/packages/?p=lightdm.git;a=commit;h=7830aa609bb4f0ec037fa8e540dd7a96b85868b0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169945</commentid>
    <comment_count>1</comment_count>
    <who name="Arseny Maslennikov">arseny</who>
    <bug_when>2018-03-27 22:22:19 +0300</bug_when>
    <thetext>Fixed in Sisyphus by task #203066</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169948</commentid>
    <comment_count>2</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2018-03-28 00:13:47 +0300</bug_when>
    <thetext>(In reply to comment #1)
&gt; Fixed in Sisyphus by task #203066

Спасибо!

gear-store-tags неудачно там сохранил значения: patches/advanced не включает последние изменения из alt18, в результате сгененрированный diff их отменяет.

Это можно видеть в патче на session-child.c в https://packages.altlinux.org/en/Sisyphus/srpms/lightdm/patches/lightdm-1.16.7-alt19-advanced.patch , строка 479:

@@ -811,7 +848,8 @@ session_child_run (int argc, char **argv)
         if (error)
             g_printerr (&quot;Error removing X authority: %s\n&quot;, error-&gt;message);
         g_clear_error (&amp;error);
-        /* Ignore this error, don&apos;t exit, continue closing the session. */
+        if (!result)
+            _exit (EXIT_FAILURE);
     }
 
     /* Close the Console Kit session */

Тут нужно придерживаться правило, чтобы patches/advanced всегда был наследником patches/alt-fixes, а также прошлого значения patches/advanced. К сожаленью, gear это не проверяет (аналогично сборочному коммиту), хотя смысл похожий.

Нужно переделать...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169949</commentid>
    <comment_count>3</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2018-03-28 00:21:58 +0300</bug_when>
    <thetext>Ещё лучше не совмещать несвязанные whitespace changes и исправления в одном коммите.

Советую также предложить upstream-у на https://github.com/CanonicalLtd/lightdm/pulls?q=is%3Apr+is%3Aclosed ; мою поправку смёрджили.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169950</commentid>
    <comment_count>4</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2018-03-28 00:46:52 +0300</bug_when>
    <thetext>(In reply to comment #3)

&gt; Советую также предложить upstream-у на
&gt; https://github.com/CanonicalLtd/lightdm/pulls?q=is%3Apr+is%3Aclosed ; мою
&gt; поправку смёрджили.

Я, кстати, ради простоты создания pull request-а сделал свой патч не очередным коммитом в линейно тянувшейся ветке patches/alt-fixes, а взял за основу upstream-ный коммит соответствующего релиза, а потом свой коммит смёрджил (&quot;параллельно&quot;) в patches/alt-fixes.

gear-схеме с diff-ами не противоречит.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169953</commentid>
    <comment_count>5</comment_count>
    <who name="Arseny Maslennikov">arseny</who>
    <bug_when>2018-03-28 02:55:21 +0300</bug_when>
    <thetext>(In reply to comment #3)
&gt; Ещё лучше не совмещать несвязанные whitespace changes и исправления в одном
&gt; коммите.
&gt; 
&gt; Советую также предложить upstream-у на
&gt; https://github.com/CanonicalLtd/lightdm/pulls?q=is%3Apr+is%3Aclosed ; мою
&gt; поправку смёрджили.

Взглянул на глазок. Где-то значительно после 1.16 код, связанный с vnc-сеансами, был существенно переработан; у них это, наверное, уже исправлено.
Однако я 1.26 не собирал и ручаться не буду. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169954</commentid>
    <comment_count>6</comment_count>
    <who name="Arseny Maslennikov">arseny</who>
    <bug_when>2018-03-28 03:03:24 +0300</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #1)
&gt; &gt; Fixed in Sisyphus by task #203066
&gt; 
&gt; Спасибо!
&gt; 
&gt; gear-store-tags неудачно там сохранил значения: patches/advanced не включает
&gt; последние изменения из alt18, в результате сгененрированный diff их отменяет.
&gt; 
&gt; Это можно видеть в патче на session-child.c в
&gt; https://packages.altlinux.org/en/Sisyphus/srpms/lightdm/patches/lightdm-1.16.7-alt19-advanced.patch
&gt; , строка 479:
&gt; 
&gt; @@ -811,7 +848,8 @@ session_child_run (int argc, char **argv)
&gt;          if (error)
&gt;              g_printerr (&quot;Error removing X authority: %s\n&quot;, error-&gt;message);
&gt;          g_clear_error (&amp;error);
&gt; -        /* Ignore this error, don&apos;t exit, continue closing the session. */
&gt; +        if (!result)
&gt; +            _exit (EXIT_FAILURE);
&gt;      }
&gt; 
&gt;      /* Close the Console Kit session */
&gt; 
&gt; Тут нужно придерживаться правило, чтобы patches/advanced всегда был наследником
&gt; patches/alt-fixes, а также прошлого значения patches/advanced. К сожаленью,
&gt; gear это не проверяет (аналогично сборочному коммиту), хотя смысл похожий.
&gt; 
&gt; Нужно переделать...

Торопыжка был голодный, проглотил утюг холодный...

Переделал в alt20.
Глазами проверил генерируемый %nvr-advanced.patch, вроде всё хорошо.
Кстати, так и не понятно до сих пор, зачем аж две ветки с патчами?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169955</commentid>
    <comment_count>7</comment_count>
    <who name="Arseny Maslennikov">arseny</who>
    <bug_when>2018-03-28 03:13:43 +0300</bug_when>
    <thetext>(In reply to comment #5)
&gt; Взглянул на глазок. Где-то значительно после 1.16 код, связанный с
&gt; vnc-сеансами, был существенно переработан; у них это, наверное, уже исправлено.

https://github.com/CanonicalLtd/lightdm/blob/master/src/seat-xvnc.c#L112

&gt; Однако я 1.26 не собирал и ручаться не буду. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169958</commentid>
    <comment_count>8</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2018-03-28 10:16:16 +0300</bug_when>
    <thetext>(In reply to comment #6)

&gt; Переделал в alt20.
&gt; Глазами проверил генерируемый %nvr-advanced.patch, вроде всё хорошо.

Спасибо!

&gt; Кстати, так и не понятно до сих пор, зачем аж две ветки с патчами?

Не знаю, по-моему, если и разделять, то лучше на отдельные, логически независимые ветки-патчи, а одну ветку в другую мёрджить, есди они логически зависимы.

Но по отдельной ветке на патч -- больше мороки. Я так практиковался делать в https://www.altlinux.org/%D0%97%D0%BD%D0%B0%D0%BA%D0%BE%D0%BC%D1%81%D1%82%D0%B2%D0%BE_%D1%81%D0%BE_%D1%81%D1%85%D0%B5%D0%BC%D0%BE%D0%B9_%D1%83%D0%BF%D0%B0%D0%BA%D0%BE%D0%B2%D0%BA%D0%B8_pam-pkcs11 .

Либо уж просто последовательность коммитов-патчей в одной ветке. 

Если это для удобства мейнтейнера (две ветки), то всё равно непонятно, зачем генерировать два diff-а, а не один. (Это бы от таких ошибок избавило.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169959</commentid>
    <comment_count>9</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2018-03-28 10:17:33 +0300</bug_when>
    <thetext>(In reply to comment #8)

&gt; Если это для удобства мейнтейнера (две ветки), то всё равно непонятно, зачем
&gt; генерировать два diff-а, а не один. (Это бы от таких ошибок избавило.)

Ну не избавило бы, но сделало бы их менее вероятными.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>