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

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

    <bug>
          <bug_id>37050</bug_id>
          
          <creation_ts>2019-07-22 15:22:57 +0300</creation_ts>
          <short_desc>инсталятор падает в альтераторе после установки пакетов на настройке сети</short_desc>
          <delta_ts>2019-11-28 15:26:23 +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>alterator-pkg</component>
          <version>unstable</version>
          <rep_platform>e2k</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>regression</keywords>
          <priority>P3</priority>
          <bug_severity>blocker</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Shigorin">mike</reporter>
          <assigned_to name="manowar@altlinux.org">manowar</assigned_to>
          <cc>aen</cc>
    
    <cc>antohami</cc>
    
    <cc>boyarsh</cc>
    
    <cc>imz</cc>
    
    <cc>inger</cc>
    
    <cc>iv</cc>
    
    <cc>klark</cc>
    
    <cc>manowar</cc>
    
    <cc>nbr</cc>
    
    <cc>sem</cc>
    
    <cc>shaba</cc>
    
    <cc>zerg</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>183191</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2019-07-22 15:22:57 +0300</bug_when>
    <thetext>Наткнулся на проблему работы инсталятора в части альтератора на sisyphus_e2k
(alterator 5.4-alt1, alterator-pkg 2.7.2-alt1, installer 1.9.0-alt1); падает сразу после успешно прошедшей установки пакетов, хвост /tmp/install2.log выглядит так:

Errors from xkbcomp are not fatal to the X server
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;;       or pass the --no-auto-compile argument to disable.
;;; compiling /usr/sbin/alterator-wizard
;;; compiled /tmp/.cache/guile/ccache/2.0-LE-8-2.0/usr/sbin/alterator-wizard.go
WARNING: (alterator session state): imported module (alterator algo) overrides core binding `call-with-current-continuation&apos;
WARNING: (alterator lookout evaluation): imported module (alterator presentation events) overrides core binding `when&apos;
frame:on-next is deprecated, use wizard-bind instead
frame:next-activity is deprecated, use wizard-update-activity instead
frame:next-activity is deprecated, use wizard-update-activity instead
frame:on-next is deprecated, use wizard-bind instead
frame:on-back is deprecated, use wizard-bind instead
frame:on-next is deprecated, use wizard-bind instead
frame:back-activity is deprecated, use wizard-update-activity instead
frame:on-next is deprecated, use wizard-bind instead
frame:on-back is deprecated, use wizard-bind instead
frame:back-activity is deprecated, use wizard-update-activity instead
frame:next-activity is deprecated, use wizard-update-activity instead
frame:on-back is deprecated, use wizard-bind instead
frame:next-activity is deprecated, use wizard-update-activity instead
frame:back-activity is deprecated, use wizard-update-activity instead
frame:next-activity is deprecated, use wizard-update-activity instead
frame:back-activity is deprecated, use wizard-update-activity instead
frame:on-back is deprecated, use wizard-bind instead
frame:on-next is deprecated, use wizard-bind instead
Backtrace:
In interfaces/guile/transport/pipe-channel.scm:
  13: 19 [process-incoming #&lt;procedure b42c40 at interfaces/guile/telegraph.scm:21:7 (cmd)&gt; ...]
In interfaces/guile/lookout.scm:
  96: 18 [#&lt;procedure b3a330 at interfaces/guile/lookout.scm:94:2 (cmds next)&gt; # ...]
  84: 17 [lookout-main # ...]
  61: 16 [mailbox-request #&lt;procedure b42460 at interfaces/guile/object.scm:79:3 args&gt; ...]
In srfi/srfi-1.scm:
 616: 15 [for-each #&lt;procedure 1009ae0 at interfaces/guile/mailbox.scm:28:3 (info)&gt; ...]
In interfaces/guile/mailbox.scm:
  37: 14 [#&lt;procedure 1009ae0 at interfaces/guile/mailbox.scm:28:3 (info)&gt; #]
In ice-9/eval.scm:
 432: 13 [eval # #]
In interfaces/guile/lookout/goto.scm:
  66: 12 [document:replace-in-widget #&lt;procedure c4fb00 at interfaces/guile/object.scm:79:3 args&gt; ...]
  32: 11 [clean-widget #&lt;procedure c4fb00 at interfaces/guile/object.scm:79:3 args&gt; ...]
In interfaces/guile/presentation/container.scm:
 212: 10 [#&lt;procedure c4fbe0 (self thunk)&gt; #&lt;procedure c4fb00 at interfaces/guile/object.scm:79:3 args&gt; ...]
In ice-9/eval.scm:
 432: 9 [eval # #]
 432: 8 [eval # #]
 411: 7 [eval # #]
In interfaces/guile/logfile.scm:
  37: 6 [#&lt;procedure b3f120 at interfaces/guile/logfile.scm:34:4 (cmds next)&gt; # ...]
In interfaces/guile/d.scm:
 162: 5 [#&lt;procedure aa1c00 at interfaces/guile/d.scm:161:2 (cmds next)&gt; # ...]
In srfi/srfi-1.scm:
 643: 4 [append-map #&lt;procedure d-query (cmd)&gt; (#)]
 575: 3 [map #&lt;procedure d-query (cmd)&gt; ((&quot;/net-eth/avail_ipv&quot; language # ...))]
In unknown file:
   ?: 2 [request-unix-server &quot;/var/run/alteratord/.socket&quot; ...]
In ice-9/boot-9.scm:
 105: 1 [#&lt;procedure b3e700 at ice-9/boot-9.scm:100:6 (thrown-k . args)&gt; woo-error ...]
 109: 0 [#&lt;procedure b3e700 at ice-9/boot-9.scm:100:6 (thrown-k . args)&gt; woo-error ...]

ice-9/boot-9.scm:109:20: In procedure #&lt;procedure b3e700 at ice-9/boot-9.scm:100:6 (thrown-k . args)&gt;:
ice-9/boot-9.scm:109:20: Throw to key `woo-error&apos; with args `(&quot;backend not found: net-eth&quot;)&apos;.
&lt;* ((#t))
RET: ()
xinit: connection to X server lost

waiting for X server to shut down (II) Server terminated successfully (0). Closing log file.

Вот как выглядит хвост /root/.install-log/install2.log на машинке, успешно установленной из собранного на c8_123 образа (alterator 5.3-alt1, alterator-pkg 2.7-alt1, installer 1.8.48-alt1):

&lt;* ((#t))
RET: ()
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;;       or pass the --no-auto-compile argument to disable.
;;; compiling /usr/sbin/alterator-wizard
;;; compiled /tmp/.cache/guile/ccache/2.0-LE-8-2.0/usr/sbin/alterator-wizard.go
WARNING: (alterator session state): imported module (alterator algo) overrides core binding `call-with-current-continuation&apos;
WARNING: (alterator lookout evaluation): imported module (alterator presentation events) overrides core binding `when&apos;
frame:on-next is deprecated, use wizard-bind instead
frame:next-activity is deprecated, use wizard-update-activity instead
frame:next-activity is deprecated, use wizard-update-activity instead
frame:on-next is deprecated, use wizard-bind instead
frame:on-back is deprecated, use wizard-bind instead
frame:on-next is deprecated, use wizard-bind instead
frame:back-activity is deprecated, use wizard-update-activity instead
frame:on-next is deprecated, use wizard-bind instead
frame:on-back is deprecated, use wizard-bind instead
frame:back-activity is deprecated, use wizard-update-activity instead
frame:next-activity is deprecated, use wizard-update-activity instead
frame:on-back is deprecated, use wizard-bind instead
frame:next-activity is deprecated, use wizard-update-activity instead
frame:back-activity is deprecated, use wizard-update-activity instead
frame:next-activity is deprecated, use wizard-update-activity instead
frame:back-activity is deprecated, use wizard-update-activity instead
frame:on-back is deprecated, use wizard-bind instead
frame:on-next is deprecated, use wizard-bind instead
;;; compiling /mnt/destination/usr/share/alterator/ui/net-eth/ajax.scm
;;; ui/net-eth/ajax.scm:141:9: warning: possibly unbound variable `form-replace&apos;
;;; ui/net-eth/ajax.scm:145:2: warning: possibly unbound variable `form-replace&apos;
;;; ui/net-eth/ajax.scm:153:9: warning: possibly unbound variable `form-replace&apos;
;;; ui/net-eth/ajax.scm:208:2: warning: possibly unbound variable `form-replace&apos;
;;; ui/net-eth/ajax.scm:217:2: warning: possibly unbound variable `form-replace&apos;
;;; ui/net-eth/ajax.scm:220:2: warning: possibly unbound variable `form-replace&apos;
;;; ui/net-eth/ajax.scm:229:2: warning: possibly unbound variable `form-replace&apos;
;;; compiled /tmp/.cache/guile/ccache/2.0-LE-8-2.0/mnt/destination/usr/share/alterator/ui/net-eth/ajax.scm.go
frame:on-next is deprecated, use wizard-bind instead
frame:back-activity is deprecated, use wizard-update-activity instead
;;; compiling /mnt/destination/usr/share/alterator/ui/root/ajax.scm
;;; ui/root/ajax.scm:59:2: warning: possibly unbound variable `call-with-form-file&apos;
;;; ui/root/ajax.scm:84:2: warning: possibly unbound variable `form-bind-upload&apos;
;;; compiled /tmp/.cache/guile/ccache/2.0-LE-8-2.0/mnt/destination/usr/share/alterator/ui/root/ajax.scm.go
frame:on-next is deprecated, use wizard-bind instead
frame:back-activity is deprecated, use wizard-update-activity instead
;;; compiling /usr/share/alterator/ui/officer/ajax.scm
;;; ui/officer/ajax.scm:59:2: warning: possibly unbound variable `call-with-form-file&apos;
;;; ui/officer/ajax.scm:84:2: warning: possibly unbound variable `form-bind-upload&apos;
;;; compiled /tmp/.cache/guile/ccache/2.0-LE-8-2.0/usr/share/alterator/ui/officer/ajax.scm.go
frame:on-next is deprecated, use wizard-bind instead
frame:on-next is deprecated, use wizard-bind instead
frame:back-activity is deprecated, use wizard-update-activity instead
;;; compiling /mnt/destination/usr/share/alterator/ui/luks/ajax.scm
;;; compiled /tmp/.cache/guile/ccache/2.0-LE-8-2.0/mnt/destination/usr/share/alterator/ui/luks/ajax.scm.go
xinit: connection to X server lost

waiting for X server to shut down (II) Server terminated successfully (0). Closing log file.

По словам boyarsh@ -- похоже на проблему перемен с /run и перемонтирования сокета alteratord, запущенного в /mnt/destination, поверх изначального в корне инсталятора.

_Возможно_, надо перенести монтирование новых tmpfs из alterator-pkg в alterator-preinstall _до_ запуска второго alteratord.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183618</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2019-08-14 15:26:08 +0300</bug_when>
    <thetext>Похоже, это блокер и лучше откатить правки, сделанные между 2.7 и 2.7.2,
а дальше уже разбираться -- теперь вот Лёня споткнулся об эти грабли,
пусть сам расскажет, как это именно выглядело у него.

Затрагивает и p9; в sisyphus_e2k откатил, в p9_e2k не успело добраться вроде.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183627</commentid>
    <comment_count>2</comment_count>
    <who name="Anton V. Boyarshinov">boyarsh</who>
    <bug_when>2019-08-14 18:41:20 +0300</bug_when>
    <thetext>Однако, остаётся удивительным факт, что это работает и не работает не всегда. Похоже, конечно, на рейс, но неясно -- между чем и чем. И, насколько я понимаю, есть ситуаци (например e2k) в которых стабильно не работает, но неясно -- с чем это связано.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183632</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2019-08-14 23:06:49 +0300</bug_when>
    <thetext>(В ответ на комментарий №1)
&gt; Похоже, это блокер и лучше откатить правки, сделанные между 2.7 и 2.7.2,
&gt; а дальше уже разбираться -- теперь вот Лёня споткнулся об эти грабли,
&gt; пусть сам расскажет, как это именно выглядело у него.
&gt; 
&gt; Затрагивает и p9; в sisyphus_e2k откатил, в p9_e2k не успело добраться вроде.

Так же блокером можно считать откат изменений. Другого удобного момента (такого как выход новых дистрибутивов и бранчей)  для перехода на симлинки /var/run и /var/lock еще долго не будет. А делать миграцию на уже установленных системах довольно тяжело и опасно. Поэтому лучше это сделать сейчас.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183633</commentid>
    <comment_count>4</comment_count>
    <who name="AEN">aen</who>
    <bug_when>2019-08-14 23:19:05 +0300</bug_when>
    <thetext>(В ответ на комментарий №3)
&gt; (В ответ на комментарий №1)
&gt; &gt; Похоже, это блокер и лучше откатить правки, сделанные между 2.7 и 2.7.2,
&gt; &gt; а дальше уже разбираться -- теперь вот Лёня споткнулся об эти грабли,
&gt; &gt; пусть сам расскажет, как это именно выглядело у него.
&gt; &gt; 
&gt; &gt; Затрагивает и p9; в sisyphus_e2k откатил, в p9_e2k не успело добраться вроде.
&gt; 
&gt; Так же блокером можно считать откат изменений. Другого удобного момента (такого
&gt; как выход новых дистрибутивов и бранчей)  для перехода на симлинки /var/run и
&gt; /var/lock еще долго не будет. А делать миграцию на уже установленных системах
&gt; довольно тяжело и опасно. Поэтому лучше это сделать сейчас.

Давайте попробуем локализовать багу, это действительно очень важно.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183634</commentid>
    <comment_count>5</comment_count>
    <who name="nbr">nbr</who>
    <bug_when>2019-08-14 23:25:14 +0300</bug_when>
    <thetext>Мое наблюдение: бага возникает из-за того, что alteratord размещает свой socket не под /var/run а под /tmp. А это, в свою очередь (судя по коду alteratord) бывает когда он запущен не из под root.Вот почему это бывает - вопрос другой.
Еще видели странную группу у файлов - сuse. Что это?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183636</commentid>
    <comment_count>6</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-08-15 02:00:22 +0300</bug_when>
    <thetext>(In reply to comment #1)
&gt; Похоже, это блокер и лучше откатить правки, сделанные между 2.7 и 2.7.2
&gt; Затрагивает и p9; в sisyphus_e2k откатил, в p9_e2k не успело добраться вроде.

Странно, что разница между alterator-pkg-2.7 и 2.7.2 как-то влияет на этот рейс. Он далеко и где-то совсем в другом. Зато в случае mike@ на Эльбрусе он проявляется хотя бы в логах. Вот он:

In unknown file:
   ?: 2 [request-unix-server &quot;/var/run/alteratord/.socket&quot; ...]

&gt; теперь вот Лёня споткнулся об эти грабли,
&gt; пусть сам расскажет, как это именно выглядело у него.

Думаю, баг один и это точно рейс, специфичный для конкретного железа, в моём случае его нет на p9 и на 8СП логи совсем иные, чистенькие, без единого подозрения. Хвост заканчивается ошибкой о том, что не найден шаг /grub. Лишь детальный анализ этих двух случаев говорит об ошибке не в общей логике, а чётко воспроизводимой проблеме на определённом железе, в большинстве же случаев баг не проявляется.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183637</commentid>
    <comment_count>7</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-08-15 02:15:18 +0300</bug_when>
    <thetext>(In reply to comment #5)
&gt; Мое наблюдение: бага возникает из-за того, что alteratord размещает свой
&gt; socket не под /var/run а под /tmp.

В /tmp нет сокетов демона, там сокет клиента browser-qt.

&gt; А это, в свою очередь (судя по коду alteratord)
&gt; бывает когда он запущен не из под root.

Во всех случаях все процессы запущены из под root, проверил через ps.

&gt; Еще видели странную группу у файлов - сuse. Что это?

cuse -- это на самом деле _alteratord:

ls -la /var/run/alteratord/.socket
... root cuse ...
grep cuse /etc/group
rpcuser:x:29:
cuse:x:483:
grep _alteratord /mnt/destination/etc/group
_alteratord:x:483

То есть, это GID 483 из целевой системы после выполнения в preinstall обратного bind-mount&apos;а в /var/run/alteratord. Так оно выглядит в старых образах 8СП. На p9 всё наоборот, поскольку там новая история с /run и нет этого обратного монтирования, и там тоже имя группы в целевой системе не совпадает с именем в установочной системе, но в обратную сторону. Это значит, имеет смысл проверить на p9 после установки, какой группе будет принадлежать этот каталог.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183638</commentid>
    <comment_count>8</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-08-15 03:22:50 +0300</bug_when>
    <thetext>(In reply to comment #4)
&gt; Давайте попробуем локализовать багу, это действительно очень важно.

Думаю, будет непросто добраться до этой ошибки -- железку бы такую заиметь для начала. Но смысл баги после подключения strace&apos;ом к разным PID&apos;ам стал практически понятен. К слову, на p9 strace с libdw пришлось докладывать руками, strace надо бы в образ включить.

В случае проявления баги на 8СП, клиент обращается за очередным шагом к alteratord &quot;по старому адресу&quot; (сокету), тогда как новый alteratord в целевой системе ещё не успел его перекрыть или даже ещё не запустился. У mike@ на e2k это зафиксировалось в логе от _неизвестного файла_ guile. У меня на x86_64 это пришлось доказывать опытным путём. Шаги разделены чётко: начиная со steps_list до remount -- скрипты в установочной системе, все остальные -- в целевой.

Обращение к alteratord происходит в тот момент, когда...

- у mike@: сокет alteratord УЖЕ был удалён, но ещё не был перекрыт каталогом /var/run/alteratord либо альтератор там всё ещё запускался.
- у меня: сокет alteratord ЕЩЁ не был удалён, то есть, ещё раньше, а в установочной стадии шага /grub нет!

Немного разобрался в машинерии. Основной клиент -- guile-скрипт /usr/sbin/alterator-wizard создаёт в /tmp FIFO и работает через него в паре с /usr/bin/alterator-browser-qt. Независимо от происходящего в инсталляторе, примерно раз в секунду один запрашивает у другого авторизацию анонимуса и тут же получает положительный ответ. Иногда по этому соединению происходит более полезный в/в, но RAM точно не хватит, чтобы захватить весь strace.

Принципиальную разницу покажет фильтр по &apos;stat\(&apos; и &apos;/usr/share/alterator/&apos;. Когда всё хорошо (у меня на p9), пути будут как в исходной системе, так и в целевой. Результат stat() не всегда положительный, но на каждый шаг один из четырёх запросов должен вернуть 0, иначе шаг не найден. Так вот на p9 вперемешку идут пути, которые иногда начинаются с /mnt/destination. А когда всё плохо (у меня на 8СП), ни одного такого пути нет, все обращения только в исходной системе. Последние четыре обращения в поисках шага grub, а его нет здесь.

И самый прикол: когда всё упало, запущено два alteratord, как и должно, сокет его доступен и там, и тут, обращение из исходной системы через alterator-cmdline к шагу /grub выводит корректный результат, мало того: повторный запуск инсталлятора приводит к его ругани о невозможности найти steps-list! Конечно, этого шага нет в целевой системе, ведь browser-qt работает теперь с новым альтератором.

compiled /tmp/.cache/guile/ccache/2.0-LE-8-2.0/usr/sbin/alterator-wizard.go -- похожие строчки у меня тоже были, но с другой версией. Грешу конечно на guile, исходя из точечности воспроизводимости, но судя по вышеописанной логике, там и без guile есть поводов для рейса.

В итоге: перевешивать на manowar@ или кто в этой машинерии лучше понимает, коммиты shaba@ реабилитировать, проверять свежие образы 8СП.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183639</commentid>
    <comment_count>9</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-08-15 05:24:40 +0300</bug_when>
    <thetext>Предлагаю пока такой воркараунд:

diff --git a/alterator-preinstall/backend3/preinstall b/alterator-preinstall/backend3/preinstall
index a34822c..48423de 100755
--- a/alterator-preinstall/backend3/preinstall
+++ b/alterator-preinstall/backend3/preinstall
@@ -62,6 +62,7 @@ run_preinstall()
        done
 
        notify &quot;package \&quot; \&quot; step $max&quot;
+       sleep 2
 
        # replace itself with alteratord from chroot
        [ -n &quot;${ALTERATOR_DESTDIR:-}&quot; ] || return

Все предыдущие не помогли. Трассировка от mike@ проблему локализует однозначно.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183640</commentid>
    <comment_count>10</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-08-15 11:55:02 +0300</bug_when>
    <thetext>(В ответ на комментарий №8)

&gt; В итоге: перевешивать на manowar@

Можно, конечно. Но мне непонятен смысл слов

&gt; На p9 всё наоборот, поскольку там новая история с /run

Что за история?

&gt; и нет этого обратного монтирования

Кто-то убрал mount -o bind из backend3/preinstall ?

&gt; Предлагаю пока такой воркараунд:
&gt; +       sleep 2
&gt;
&gt; Все предыдущие не помогли.

А как же alterator-wait из того же самого скрипта? Он, по идее, обязан ждать, пока всё не станет как надо, а не 2 секунды.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183650</commentid>
    <comment_count>11</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-08-15 14:33:33 +0300</bug_when>
    <thetext>(In reply to comment #10)
&gt; мне непонятен смысл слов
&gt; &gt; На p9 всё наоборот, поскольку там новая история с /run
&gt; Что за история?

Про симлинки /var/run и /var/lock, обсуждается в последнее время в devel@.
shaba@ и antohami@ лучше объяснят, по мне, так свежий тренд FHS. :-]

&gt; &gt; и нет этого обратного монтирования
&gt; Кто-то убрал mount -o bind из backend3/preinstall ?

Пакет во всех репозиториях один и тот же.
На p9 это выглядит так (/var/run -&gt; /run):

# ls -la /run/
... root _alteratord ... alteratord
# ls -la /var/run/
... root _alteratord ... alteratord
# ls -la /run/alteratord/.socket
... root 470 ...
# ls -la /var/run/alteratord/.socket
... root 470 ...
# chroot /mnt/destination /bin/bash
localhost / # ls -la /var/run/alteratord/.socket
... root _alteratord ...

То есть, в целевой системе всё пучком изначально. Это я перепутал в ночи. Здесь GID 470 не мапится на cuse или что-то ещё.

&gt; А как же alterator-wait из того же самого скрипта?

Обязан, но не ждёт. Перезапуск инсталлятора после падения в моём случае с 8СП говорит о том, что alteratord в целевой системе запустился, то есть, alterator-wait должным образом не работает либо из-за занятости вводом/выводом к моменту его вызова не происходит удаления старого сокета. Позже -- происходит.

Первый sleep вроде как должен помочь в случае с e2k, вот только какой? Ни 2, ни 5, ни 180 секунд нам не помогли. Второй sleep вкорячивали перед alterator-wait -- второй как раз наш случай с 8СП на x86_64, сегодня с этой машиной последний день можем работать.

Встречный вопрос: кто выводит сообщение про сокет -- понятно:

http://git.altlinux.org/gears/a/alterator.git?p=alterator.git;a=blob;f=alterator/interfaces/guile/d.scm;h=dcbebbe7cd64d23504ad22009cef270b577b52a4;hb=2c29233a3f88ef85f3d3c93adc78eb8da61ed57a#l119

Непонятно, почему в выводе у mike@ этот d.csm числится как неизвестный файл? Не может это быть симптомом ошибочной компиляции на лету?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183652</commentid>
    <comment_count>12</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-08-15 15:14:38 +0300</bug_when>
    <thetext>Что я заметил по коду:

* в backend3/preinstall перемонтируется в первой строчке просто /run, а во второй — /var/run (потому что alteratord_socket_dir == /var/run/...):

  mount -o bind /run $destdir/run
  mount -o bind $destdir$alteratord_socket_dir $alteratord_socket_dir

не есть ли это ошибка?

&gt;&gt; А как же alterator-wait из того же самого скрипта?
&gt; Обязан, но не ждёт.

* (d-wait) , т.е. alterator-wait может выйти из цикла только, если retcode будет равен 200 (либо по exception). Собственно код установки соединения находится в vhttpd/lib/http_client.c. Что там происходит и что может произойти странного, чтобы 200 вернулось тогда, когда не надо? Можно ли сделать этот код более надёжным?

* тестовая пересборка vhttpd иногда завершается с ошибкой в %check, причём именно в части unix-guile, т.е. в том тесте, где используется request-unix-server:

  make[1]: Entering directory &apos;/usr/src/RPM/BUILD/vhttpd-0.7.10/test&apos;
  Running &quot;vhttpd&quot;...
  Completed &quot;vhttpd&quot;: 193 passes, 0 failures, 0 exceptions.
  Running inet-socket... ok
  Running unix-socket... ok
  Running inet-channel... ok
  Running unix-channel... ok
  Running inet-http... ok
  Running unix-http... ok
  Running unix-from-socket-http... ok
  Running unix-guile... FAILED</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183653</commentid>
    <comment_count>13</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-08-15 15:17:36 +0300</bug_when>
    <thetext>(В ответ на комментарий №12)

&gt; * (d-wait) , т.е. alterator-wait может выйти из цикла только, если retcode
&gt; будет равен 200 (либо по exception).

На случай exception предлагаю вот такой патч:

diff --git a/alterator-preinstall/backend3/preinstall b/alterator-preinstall/backend3/preinstall
index 77a2bfe..34f0d76 100755
--- a/alterator-preinstall/backend3/preinstall
+++ b/alterator-preinstall/backend3/preinstall
@@ -76,7 +76,7 @@ run_preinstall()
 	chroot $destdir /etc/init.d/alteratord start
 
 	# wait until new alteratord is ready to use
-	alterator-wait
+	while ! alterator-wait; do sleep 1; done
 
 	# notify interface about finish
 	notify &quot;done #t&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183656</commentid>
    <comment_count>14</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-08-15 15:53:22 +0300</bug_when>
    <thetext>Хорошая новость: как и в случае с p9, в новых ИК 8СП сборках нет этой ошибки на проблемном экземпляре.

(In reply to comment #12)
&gt; * в backend3/preinstall перемонтируется в первой строчке просто /run, а во
&gt; второй — /var/run (потому что alteratord_socket_dir == /var/run/...)

/var/run/alteratord/.socket создаётся внутри целевой системы. Но почему тогда в установочной системе rm -f /tmp/alterator/.socket -- вот что вообще за сокет?

&gt;   mount -o bind /run $destdir/run
&gt;   mount -o bind $destdir$alteratord_socket_dir $alteratord_socket_dir
&gt; 
&gt; не есть ли это ошибка?

Мы вчера с shaba@ тоже пробовали добавить /var/run -- стало ещё хуже, инсталлятор сразу вылетает. Более того, данный код везде работает и проблем не вызывает, только на одной машине и только в режиме UEFI. Но теперь возникает ощущение, что ошибка при выполнении именно этих трёх строк, вот только почему?

&gt; &gt;&gt; А как же alterator-wait из того же самого скрипта?
&gt; &gt; Обязан, но не ждёт.

Проверил специально -- как раз alterator-wait работает ожидаемым образом. Запускал и останавливал снаружи и в чруте, всё отрабатывает корректно. Но непонятно, почему в данном коде несмотря НА клиент продолжает работать со СТАРЫМ альтератором, а не с новым? Сразу после выпадения:

mount |tail -n2
runfs on /mnt/destination/run type tmpfs (...)
/dev/sda4 on /var/run/alteratord type ext4 (...) &lt;-- тут корневой раздел

/var/run/alteratord/.socket после выпадения в наличии. Клиент продолжает разговаривать со старым демоном, до выпадения он доступен, поэтому alterator-wait сразу возвращает $?=0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183660</commentid>
    <comment_count>15</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-08-15 16:38:45 +0300</bug_when>
    <thetext>(В ответ на комментарий №14)

&gt; Но почему тогда в установочной системе rm -f /tmp/alterator/.socket -- вот что вообще за сокет?

  В коде написано rm -f $alteratord_socket_dir/.socket т.е. rm -f /var/run/alteratord/.socket . Никакого /tmp/alterator там нет. Сам же выше писал:

&gt; В /tmp нет сокетов демона, там сокет клиента browser-qt.

  Так что это другой сокет.

&gt; &gt;   mount -o bind /run $destdir/run
&gt; &gt;   mount -o bind $destdir$alteratord_socket_dir $alteratord_socket_dir
&gt; &gt; 
&gt; &gt; не есть ли это ошибка?
&gt; 
&gt; Мы вчера с shaba@ тоже пробовали добавить /var/run -- стало ещё хуже,
&gt; инсталлятор сразу вылетает.

  Давайте всё таки попробуем внести ясность. Второй mount выводит сокет демона из чрута наружу. А что делает первый mount, для чего он вообще нужен? Для всех остальных программ, просто, чтобы в чруте был /run на runfs?

  Я не доконца понимаю текущую ситуацию с /run и /var/run, поэтому рискну предположить: после прямой проекции /run в /mnt/destination/run обратная проекция из /mnt/destination/var/run наружу теряет смысл, поскольку к этому моменту /mnt/destination/run === /mnt/destination/var/run === /var/run === /run .
  Нельзя ли породить в чруте свой, отдельный /run на runfs и убрать первый mount?

&gt; &gt; &gt;&gt; А как же alterator-wait из того же самого скрипта?
&gt; &gt; &gt; Обязан, но не ждёт.
&gt; 
&gt; Проверил специально -- как раз alterator-wait работает ожидаемым образом.

  Наверное. Только вот alterator-wait всё-таки работает на стороне бакенда. А нам же нужно чтобы ещё и клиент дождался. А вернее: чтобы клиент _переподключился_ (см. ниже).

&gt; Но непонятно, почему в данном коде несмотря НА клиент продолжает работать
&gt; со СТАРЫМ альтератором, а не с новым? Сразу после выпадения:

  Признаться, в части альтератора, с инсталлятором я работал меньше всего, поэтому не понимаю этой магии с подменой сокета. Расскажите мне, в каком месте кода _клиент_ отключается от старого сокета и подключается к новому? Потому что без переподключения, удаление &quot;файла&quot; $alteratord_socket_dir/.socket, которое делает бакенд, ведь не приведёт к нарушению ранее установленного соединения: в UNIX-системах даже удаление обычного файла не мешает программе продолжать чтение из него по открытому fd до следующего close() + open()? , так ведь?

  И вот пока вижу следующее: внутри кода backend3/preinstall, некий процесс, который кстати сказать, работает в фоновом режиме (&amp;), вызывает программу alterator-wait, которая запрашивает новое соединение с новым сокетом (который только что был проброшен наружу mount -o bind), и получает его. Но почему это должно как-то повлиять на уже установленное соединение между alterator-wizardface и старым сокетом (файл которого был только что удалён ну и что)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183662</commentid>
    <comment_count>16</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-08-15 16:54:35 +0300</bug_when>
    <thetext>(В ответ на комментарий №8)

&gt; Немного разобрался в машинерии. Основной клиент -- guile-скрипт
&gt; /usr/sbin/alterator-wizard создаёт в /tmp FIFO и работает через него в паре с
&gt; /usr/bin/alterator-browser-qt. Независимо от происходящего в инсталляторе,
&gt; примерно раз в секунду один запрашивает у другого авторизацию анонимуса и тут
&gt; же получает положительный ответ.

Так может быть вся магия переподключения клиента строится вот на этом &quot;раз в секунду&quot;?! Если так, то предполагаю такой сценарий:

1. backend3/preinstall удаляет старый сокет;
2. ставит на его место новый;
3. посредством alterator-wait ждёт и проверяет, что новый сокет готов к работе;
4. отправляет клиенту &quot;done&quot; в СТАРЫЙ сокет (а куда же ещё, ведь он продолжает работать под СТАРЫМ alteratord!);
5. клиент читает &quot;done&quot; из СТАРОГО сокета (в новый сокет &quot;done&quot; в принципе никто не отправлял);
6. благодаря &quot;опросу примерно раз в секунду&quot; переход к новому шагу инсталлятора должен привести и к подключению к новому сокету, но не приводит, потому что опрос не успевает произойти.

И где, кстати, эта машинерия с &quot;авторизацией анонимуса&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183665</commentid>
    <comment_count>17</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-08-15 18:15:01 +0300</bug_when>
    <thetext>(In reply to comment #15)
&gt;   В коде написано rm -f $alteratord_socket_dir/.socket т.е. rm -f
&gt; /var/run/alteratord/.socket . Никакого /tmp/alterator там нет.

В каком коде? Вот здесь и во всех образах код одинаковый:

http://git.altlinux.org/gears/a/alterator-preinstall.git?p=alterator-preinstall.git;a=blob;f=alterator-preinstall/backend3/preinstall;h=a34822c32f753c20907e6894b29e3357d33b47d9;hb=13c881a5d2d9f6de0df304c1b0e4e688caa8df2d#l68

Удаляется что-то другое и это в 99.999% волшебным образом работает.

&gt; Сам же выше писал:
&gt; &gt; В /tmp нет сокетов демона, там сокет клиента browser-qt.

Так и есть -- там только /tmp/alterator/broser-sock.

&gt; &gt; &gt;   mount -o bind /run $destdir/run
&gt; &gt; &gt;   mount -o bind $destdir$alteratord_socket_dir $alteratord_socket_dir
&gt; &gt; &gt; 
&gt;   Давайте всё таки попробуем внести ясность. Второй mount выводит сокет демона
&gt; из чрута наружу. А что делает первый mount, для чего он вообще нужен? Для всех
&gt; остальных программ, просто, чтобы в чруте был /run на runfs?

Обычно в чруте достаточно смонтировать /proc, /sys и /dev. Так что зачем здесь нужен /run -- хороший вопрос, но скорее к git blame.

&gt; Нельзя ли породить в чруте свой, отдельный /run на runfs и убрать первый
&gt; mount?

Мне казалось, правки shaba@, о которых говорилось выше, именно это и делают. Точнее, именно такой механизм. Он более правильный. Но данный код, кажется, они вообще не затрагивают.

&gt; Расскажите мне, в каком месте кода _клиент_ отключается от старого сокета и
&gt; подключается к новому? Потому что без переподключения, удаление &quot;файла&quot;
&gt; $alteratord_socket_dir/.socket,

Про клиента ничего не знаю -- это Ваша епархия. Очевидно стек scm&apos;ов от telegraph до ранее упомянутого d.csm (предположительно). А бэкэнд -- в этом самом месте preinstall. Я попробовал поменять код на правильный, но это ничего не дало. В смысле rm -f $alteratord_socket_dir/.socket приводит к тому же выпадению инсталлятора. До этого ошибся буквой и результат тот же. На следующем заходе гляну, что там ещё в /tmp/alterator ДО начала. Но похоже, что этот rm вообще ни на что не влияет. Заменил его пока на остановку alteratord с подавлением вывода.

&gt; в UNIX-системах даже удаление обычного файла не мешает программе продолжать
&gt; чтение из него по открытому fd до следующего close() + open()? , так ведь?

Да, всё верно. Но если мы имеем дело со скриптом, нужно ухитриться открыть дескриптор, удалить элемент каталога и далее продолжить работать с открытым файлом (сокетом). Точнее сказать, это делается круглыми и угловыми скобками с амперсандами и в обсуждаемом preinstall этого не видать.

&gt; почему это должно как-то повлиять на уже установленное соединение между
&gt; alterator-wizardface и старым сокетом (файл которого был только что удалён
&gt; ну и что)?

Хороший вопрос. Так никто не говорит, что ошибка именно в preinstall. Но искать-то проще там, где подсвечивает, в смысле именно с этими тремя строками в preinstall параллельно должен работать клиент. Предположу, что там сделан игнор на разрыв трубы, а в/в через неё не частый -- по крайней мере, именно такую реализацию я видел в нём же собственного внутреннего сокета browser-sock.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183666</commentid>
    <comment_count>18</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-08-15 18:29:36 +0300</bug_when>
    <thetext>(В ответ на комментарий №17)
&gt; (In reply to comment #15)
&gt; &gt;   В коде написано rm -f $alteratord_socket_dir/.socket т.е. rm -f
&gt; &gt; /var/run/alteratord/.socket . Никакого /tmp/alterator там нет.
&gt; 
&gt; В каком коде? Вот здесь и во всех образах код одинаковый:
&gt; 
&gt; http://git.altlinux.org/gears/a/alterator-preinstall.git?p=alterator-preinstall.git;a=blob;f=alterator-preinstall/backend3/preinstall;h=a34822c32f753c20907e6894b29e3357d33b47d9;hb=13c881a5d2d9f6de0df304c1b0e4e688caa8df2d#l68
&gt; 
&gt; Удаляется что-то другое и это в 99.999% волшебным образом работает.

  Извиняюсь. Это у меня почему-то версия alterator-preinstall до сих пор обгоняет Сизиф:

http://git.altlinux.org/people/manowar/packages/?p=alterator-preinstall.git;a=shortlog;h=refs/heads/master

  Я и подумать не мог, что его столько времени никто не менял, учитывая это наше обсуждение ошибки.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183668</commentid>
    <comment_count>19</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-08-15 18:37:10 +0300</bug_when>
    <thetext>Вопчем думаю, что нужно точно разобраться с тем, как переподкючается клиент и сделать эту процедуру более надёжной.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183669</commentid>
    <comment_count>20</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-08-15 18:53:37 +0300</bug_when>
    <thetext>(In reply to comment #18)
&gt; http://git.altlinux.org/people/manowar/packages/?p=alterator-preinstall.git;a=shortlog;h=refs/heads/master

chroot $destdir /etc/init.d/alteratord start

А не нужно ли в этом месте бэкэнда подавлять вывод: &gt;/dev/null 2&gt;&amp;1 ?

(In reply to comment #13)
&gt; -    alterator-wait
&gt; +    while ! alterator-wait; do sleep 1; done

Вот это вообще было хорошей идеей, попробовал, но ничего не дало.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183671</commentid>
    <comment_count>21</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-08-15 20:40:07 +0300</bug_when>
    <thetext>(In reply to comment #0)
&gt; _Возможно_, надо перенести монтирование новых tmpfs из alterator-pkg в
&gt; alterator-preinstall _до_ запуска второго alteratord.

Наблюдаю интересную вещь: нет /tmp/alterator/.socket _до_ начала инсталляции. В процессе инсталляции здесь рядышком появляется browser.sock и больше ничего. Остановка alteratord в установщике в любом месте preinstall приводит к зависанию клиента наглухо на стадии &quot;Сохранение настроек&quot;, до перехода к шагу /grub.

Это и что было раньше говорит только об одном: клиент связан с alteratord в установочной системе очень крепко, и его сокет изначально перекрыт либо через /tmp/alterator, либо через /tmp, скорее второе. Поэтому rm -f не работает. И пока клиент крепко связан с установочным alteratord, появление нового сокета в /var/run/alteratord/.socket ни на что не влияет. Это в случае рейса.

(In reply to comment #19)
&gt; Впрочем думаю, что нужно точно разобраться с тем, как переподкючается клиент
&gt; и сделать эту процедуру более надёжной.

Очень верное направление. Но без железа, где проявляется баг, этот рейс можно искать очень долго. Надеюсь, удастся выцепить такую машинку. Со стороны бэкэнда перепробованы все варианты, отлаживать просто нечего. Впрочем, перекрытие сокета через /tmp в случае рейса может иметь место в другом скрипте. Жаль, не осталось времени на отладку, ухожу в отпуск.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183672</commentid>
    <comment_count>22</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-08-15 21:46:19 +0300</bug_when>
    <thetext>(В ответ на комментарий №21)
&gt; (In reply to comment #19)
&gt; &gt; Впрочем думаю, что нужно точно разобраться с тем, как переподкючается клиент
&gt; &gt; и сделать эту процедуру более надёжной.
&gt; 
&gt; Очень верное направление. Но без железа, где проявляется баг, этот рейс можно
&gt; искать очень долго. Надеюсь, удастся выцепить такую машинку.

Да по боку этот рейс и машинку! Я просто хочу выяснить, как сейчас происходит переподключение клиента (вернее, должно происходить), после чего сделать это надёжно, а не лечить симптомы.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183677</commentid>
    <comment_count>23</comment_count>
    <who name="nbr">nbr</who>
    <bug_when>2019-08-16 09:42:50 +0300</bug_when>
    <thetext>(In reply to comment #22)
&gt; (В ответ на комментарий №21)
&gt; &gt; (In reply to comment #19)
&gt; &gt; &gt; Впрочем думаю, что нужно точно разобраться с тем, как переподкючается клиент
&gt; &gt; &gt; и сделать эту процедуру более надёжной.
&gt; &gt; 
&gt; &gt; Очень верное направление. Но без железа, где проявляется баг, этот рейс можно
&gt; &gt; искать очень долго. Надеюсь, удастся выцепить такую машинку.
&gt; 
&gt; Да по боку этот рейс и машинку! Я просто хочу выяснить, как сейчас происходит
&gt; переподключение клиента (вернее, должно происходить), после чего сделать это
&gt; надёжно, а не лечить симптомы.
/var/run/alteratord/.socket создаётся внутри целевой системы. Но почему тогда в
установочной системе rm -f /tmp/alterator/.socket -- вот что вообще за сокет?

; /var/run/alteratord is also used in installer
; to bounce the socket between stage3 and stage2;
; it&apos;s also more secure than predefined /tmp subdir
; NB: a copy contained in ../interfaces/guile/d.scm
(define *tmpdir*
  (if (string=? *d-user* &quot;root&quot;)
    &quot;/var/run/alteratord&quot;
    (string-append
      (or (getenv &quot;TMPDIR&quot;) &quot;/tmp&quot;)
      &quot;/alterator&quot;)))


Другой вопрос почему в первом stage у нас приехал НЕ рут.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183680</commentid>
    <comment_count>24</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2019-08-16 11:54:32 +0300</bug_when>
    <thetext>Может быть, будет удобно перейти на абстрактный сокет (как у X-сервера)?

https://unix.stackexchange.com/a/317531/4319 :

&quot;An abstract socket effectively exists in all filesystem namespaces and chroots; you don&apos;t have to link anything into the chroot or namespace to use it.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183681</commentid>
    <comment_count>25</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-08-16 12:27:06 +0300</bug_when>
    <thetext>Очень интересная мысль. Мне нравится. Тогда можно будет организовать переподключение вот по такому сценарию:

1. первый сервер закрывает соединение и прослушивание сокета;
2. клиент на это получает &quot;отлуп&quot;;
3. клиент (опционально) выводит сообщение (попап) &quot;Подключение к серверу…&quot;;
4. клиент повторяет попытки подключения до тех пор, пока не устанавливает соединение;
5. второй сервер запускается;
6. второй сервер начинает прослушивать сокет;
7. клиент успешно подключается к сокету.
8. клиент убирает попап (если был) и продолжает работу в установленном порядке.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183683</commentid>
    <comment_count>26</comment_count>
    <who name="Anton V. Boyarshinov">boyarsh</who>
    <bug_when>2019-08-16 13:38:33 +0300</bug_when>
    <thetext> 
&gt; Да по боку этот рейс и машинку! Я просто хочу выяснить, как сейчас происходит
&gt; переподключение клиента (вернее, должно происходить), 

Оно должно было работать так:

59476928 (Stanislav Ievlev     2009-11-10 14:46:32 +0300 80)    # stop old alteratord and kill itself
13c881a5 (Andrey Cherepanov    2014-02-04 18:47:21 +0400 81)    #sleep 1
13c881a5 (Andrey Cherepanov    2014-02-04 18:47:21 +0400 82)    #service alteratord stop

То есть старый alteratord останавливается и клиенту приходится переподключиться.  А вот как оно работает с 2014 года -- загадка.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183684</commentid>
    <comment_count>27</comment_count>
    <who name="Anton V. Boyarshinov">boyarsh</who>
    <bug_when>2019-08-16 13:40:30 +0300</bug_when>
    <thetext>
&gt; &gt; переподключение клиента (вернее, должно происходить), после чего сделать это
&gt; &gt; надёжно, а не лечить симптомы.
&gt; /var/run/alteratord/.socket создаётся внутри целевой системы. Но почему тогда в
&gt; установочной системе rm -f /tmp/alterator/.socket -- вот что вообще за сокет?

Я думаю, что когда-то сокет в установщике находился там. Потом сокет переехал, а код не поправили или поправили не полностью.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183686</commentid>
    <comment_count>28</comment_count>
    <who name="Anton V. Boyarshinov">boyarsh</who>
    <bug_when>2019-08-16 14:00:03 +0300</bug_when>
    <thetext>(В ответ на комментарий №27)
&gt; &gt; &gt; переподключение клиента (вернее, должно происходить), после чего сделать это
&gt; &gt; &gt; надёжно, а не лечить симптомы.
&gt; &gt; /var/run/alteratord/.socket создаётся внутри целевой системы. Но почему тогда в
&gt; &gt; установочной системе rm -f /tmp/alterator/.socket -- вот что вообще за сокет?
&gt; 
&gt; Я думаю, что когда-то сокет в установщике находился там. Потом сокет переехал,
&gt; а код не поправили или поправили не полностью.

Нет, этот rm -f был ошибкой с самого начала, но она, видимо, ни на что не влияла с 2012 года</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183705</commentid>
    <comment_count>29</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-08-17 05:33:28 +0300</bug_when>
    <thetext>(В ответ на комментарий №23)
&gt; Другой вопрос почему в первом stage у нас приехал НЕ рут.

Там везде root, см. #7.

(В ответ на комментарий №24)
&gt; Может быть, будет удобно перейти на абстрактный сокет (как у X-сервера)?

Безопасно ли? Если первый байт 0, строка с путём начинается со второго. Т.е. вопрос выравнивая адреса и вопрос анализа строки за первым байтом для того кода, который на это не рассчитан. Пока не очень понятно, думал это сделано через отдельный домен для таких сокетов.

(В ответ на комментарий №26)
&gt; То есть старый alteratord останавливается и клиенту приходится
&gt; переподключиться.  А вот как оно работает с 2014 года -- загадка.

Сейчас остановка alteratord в установочной системе приводит к зависанию клиента broser-qt на операции &quot;Сохранение настроек&quot;, клиент не видит второго запущеного в чруте альтератора. Поскольку есть пересечение по /var/run и /run, остановка в одной системе может влиять на alteratord в чруте, да хотя бы по PID&apos;у.

(В ответ на комментарий №16)
&gt; Так может быть вся магия переподключения клиента строится вот на этом &quot;раз в
&gt; секунду&quot;?! Если так, то предполагаю такой сценарий:

Не успел ответить до отъезда, а фотки с телефона потёр (дома их оставил). В любом случае с моей строны речь шла не о серверном сокете, а о browser-sock, через который обмениваются две часть фронтэнда -- browsert-qt и quile-обёртка alterator-wizard. Так вот, там я увидел игнорирование EPIPE и сначала по strace, а потом и в коде это нашёл. Не знаю, чем обоснована такая странная реализация, тем более, речь о unix-сокете двух процессов, относящихся к фронтэнду, они до последнего никуда не деваются, переключение на новый альтератор их не должно касаться. Может, zerg@ знает?

И ещё раз: пока не знаю, как реализовано переподключение сокета на клиенте, как там вообще происходит обмен с демоном. Эту часть не смотрел хотя бы потому, что очень далёк от guile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183714</commentid>
    <comment_count>30</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2019-08-19 10:27:41 +0300</bug_when>
    <thetext>(В ответ на комментарий №29)
&gt; Может, zerg@ знает?
Я этого момента не касался совсем. Если в browser и было что-то для этого, то очень давно и сделано inger@.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183718</commentid>
    <comment_count>31</comment_count>
    <who name="Anton V. Boyarshinov">boyarsh</who>
    <bug_when>2019-08-19 13:14:16 +0300</bug_when>
    <thetext> 
&gt; Сейчас остановка alteratord в установочной системе приводит к зависанию клиента
&gt; broser-qt на операции &quot;Сохранение настроек&quot;, клиент не видит второго запущеного
&gt; в чруте альтератора. Поскольку есть пересечение по /var/run и /run, остановка в
&gt; одной системе может влиять на alteratord в чруте, да хотя бы по PID&apos;у.

Хмм.. Так может быть надо не делать service aleratord stop, а до запуска второго альтератора запоминать pid первого и прицельно его прибивать?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183721</commentid>
    <comment_count>32</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-08-19 13:44:03 +0300</bug_when>
    <thetext>(В ответ на комментарий №29)

&gt; Так вот, там я увидел игнорирование EPIPE и сначала по
&gt; strace, а потом и в коде это нашёл. Не знаю, чем обоснована такая странная
&gt; реализация

  В том, что касается кода на Scheme, я вижу (with-ignored-sigpipe ...) в части, которая отвечает за общение между browser-qt и alterator-wizardface — http://git.altlinux.org/gears/a/alterator.git?p=alterator.git;a=blob;f=alterator/interfaces/guile/transport/pipe-channel.scm;h=25a12ee2a8686846b71162ea3e99bbda2b21f0bb;hb=2c29233a3f88ef85f3d3c93adc78eb8da61ed57a . Это не та часть, которая говорит с /var/run/alteratord/.sock.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183723</commentid>
    <comment_count>33</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-08-19 13:56:42 +0300</bug_when>
    <thetext>С той же частью, которая говорит с alteratord через /var/run/alteratord/.sock, всё оказалось относительно просто: она вызывает (request-unix-server ...) **на каждую команду**, на каждый запрос — http://git.altlinux.org/gears/a/alterator.git?p=alterator.git;a=blob;f=alterator/interfaces/guile/d.scm;h=dcbebbe7cd64d23504ad22009cef270b577b52a4;hb=2c29233a3f88ef85f3d3c93adc78eb8da61ed57a#l118 . А эта функция, если посмотреть на http://git.altlinux.org/gears/v/vhttpd.git?p=vhttpd.git;a=blob;f=vhttpd/lib/http_client.c;h=4667d7b11d41d6ad46e281514981983a4d15f5c6;hb=fed6867ce8bea86f135825c60bc1288ba6159f8d#l36 , в свою очередь, **каждый раз создаёт** сокет из строки пути. Очевидно, что это и есть переподключение, а точнее, разовое подключение. Следовательно, работало всё это, скорее всего просто путём mount -o bind одного сокета поверх другого, и, таким образом, сначала запросы шли к старому сокету, а после &quot;затенения&quot; старого сокета новым сокетом, запросы попадали в новый сокет. Если такое затенение работает правильно, то и правда, останавливать старый alteratord не обязательно.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183733</commentid>
    <comment_count>34</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-08-19 19:36:03 +0300</bug_when>
    <thetext>(В ответ на комментарий №31)
&gt; Хмм.. Так может быть надо не делать service aleratord stop, а до запуска
&gt; второго альтератора запоминать pid первого и прицельно его прибивать?

Прибивать сигналом KILL, чтобы не было обработки TERM/QUIT/итп, вот только что будет, если в этот момент демон будет находиться в состоянии ввода/вывода?

(В ответ на комментарий №32)
&gt; Это не та часть, которая говорит с /var/run/alteratord/.sock.

Да, выше об этом говорил.

(В ответ на комментарий №33)
&gt; ... **каждый раз создаёт** сокет из строки пути. Очевидно, что
&gt; это и есть переподключение, а точнее, разовое подключение. Следовательно,
&gt; работало всё это, скорее всего просто путём mount -o bind одного сокета
&gt; поверх другого, и, таким образом, сначала запросы шли к старому сокету, а
&gt; после &quot;затенения&quot; старого сокета новым сокетом, запросы попадали в новый
&gt; сокет.

Дело в том, что создаётся не совсем сокет, не совсем pipe и не совсем fifo, невзирая на название. Создаётся нечто подобное именованному каналу, но управляемое через Pseudo TTY a.k.a PTY (/dev/pts/%d и /dev/ptmx). И это одна из странностей реализации, на которую может влиять момент перекрытия:

mount -o bind /dev/pts $destdir/dev/pts

Мне вообще этот старый код с mount -o bind не нравится, я бы биндил только /dev, всё остальное же монтировал заново, как shaba@ это сделал с /run и как предлагалось &quot;планом Бидермана&quot;. Зачем *здесь* вообще PTY? Тем более, зачем он нужен при обмене одной части фронтэнда с другой да ещё с авторизацией раз в секунду?

Очень важное пояснение можно найти здесь: https://lwn.net/Articles/688809/
См. также: [alterator.git]/alterator/src/libguile-pipe/terminal.c</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183744</commentid>
    <comment_count>35</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-08-20 13:55:35 +0300</bug_when>
    <thetext>Я вот тут подумал, а что если сделать пока вот так:

diff --git a/alterator-net-eth/ui/net-eth/index.scm b/alterator-net-eth/ui/net-eth/index.scm
index c46df1e..72c9ee0 100644
--- a/alterator-net-eth/ui/net-eth/index.scm
+++ b/alterator-net-eth/ui/net-eth/index.scm
@@ -337,7 +337,7 @@
 
 (document:root
   (when loaded
-	(init-interface)
+	(catch/message init-interface)
     (form-bind &quot;name&quot; &quot;change&quot; update-interface)
 	(form-bind &quot;ipv&quot; &quot;change&quot; ipv_changed)
 	(form-bind &quot;ipv_enabled&quot; &quot;change&quot; update-ipv-activity)

Есть шанс, что после этого инсталлер не будет падать после установки пакетов, а будет выводить окошко с ошибкой. Попробуйте, пожалуйста. Если получится, то можно будет написать workaround получше, на уровне frame:next, например — чтобы он делал несколько попыток подключения к бакенду. А можно и ещё глубже его зарыть: сделать, например, так, чтобы в случае &quot;backend not found&quot;, сама d-qeury повторяла бы попытки. Ну и сделать, например, так, чтобы количество попыток настраивалось (т.к. нигде, кроме инсталлера, это повторение наверняка не нужно).

Правда, делать новые попытки подключения имеет смысл только в том случае, если там сейчас действительно гонка. Если же новый сокет (второго alteratord) не доступен совсем — ни с первой, ни с двадцатьпервой попытки, то это другая проблема.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183755</commentid>
    <comment_count>36</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-08-20 17:43:49 +0300</bug_when>
    <thetext>(В ответ на комментарий №35)
&gt; Есть шанс, что после этого инсталлер не будет падать после установки пакетов, &gt; а будет выводить окошко с ошибкой.

Судя по трассировке от mike@, самого шага /net-eth в системе НЕТ:

ice-9/boot-9.scm:109:20: Throw to key `woo-error&apos; with args `(&quot;backend not
found: net-eth&quot;)&apos;.

Он есть в целевой системе, здесь же вызов произошёл в установочной системе. Так что правка фронтэнда этого шага точно не поможет. Тем более, на e2k нет шага /grub, а за установкой пакетов может быть разное, в зависимости от инсталлятора.

&gt; А можно и ещё глубже его зарыть: сделать, например, так, чтобы в случае
&gt; &quot;backend not found&quot;, сама d-qeury повторяла бы попытки.

ДА. Трассировка у mike@ начинается с:

[alterator.git]/interfaces/guile/transport/pipe-channel.scm

Но это поможет только в случае e2k, где попытка поговорить с бэкэндом успевает проскочить до того, как alteratord запустился в целевой системе. При перекрытии /tmp или /tmp/alterator, как в случае рейса на 8СП, это тоже не поможет.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183756</commentid>
    <comment_count>37</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-08-20 17:58:11 +0300</bug_when>
    <thetext>(В ответ на комментарий №36)
&gt; При перекрытии /tmp или /tmp/alterator, как в случае рейса на 8СП,
&gt; это тоже не поможет.

А может и поможет. Ведь всё дело в нескольких секундах на стороне фронтэнда и перекрытие /tmp/alterator не должно влиять, как уже выяснили выше: настоящий путь к сокету вообще не здесь, а в /var/run.

В d.csm или ещё глубже trow-cacth в цикле из нескольких попыток с задержкой в пару секунд и проверкой на предмет именно ошибки связи с сокетом либо отсутствии шага (не важно какого). То же самое на стороне бэкэнда не помогло.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183757</commentid>
    <comment_count>38</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-08-20 18:03:32 +0300</bug_when>
    <thetext>(В ответ на комментарий №37)

&gt; В d.csm или ещё глубже trow-cacth в цикле из нескольких попыток с задержкой в
&gt; пару секунд и проверкой на предмет именно ошибки связи с сокетом либо
&gt; отсутствии шага (не важно какого).

Ты это уже попробовал сделать или это только идея? Не понял.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183758</commentid>
    <comment_count>39</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-08-20 18:51:07 +0300</bug_when>
    <thetext>(В ответ на комментарий №38)
&gt; Ты это уже попробовал сделать или это только идея? Не понял.

Как я могу опробовать вашу идею, если не владею guile? Но идею поддерживаю! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183765</commentid>
    <comment_count>40</comment_count>
    <who name="Anton V. Boyarshinov">boyarsh</who>
    <bug_when>2019-08-21 12:54:33 +0300</bug_when>
    <thetext>(В ответ на комментарий №37)
&gt; (В ответ на комментарий №36)
&gt; &gt; При перекрытии /tmp или /tmp/alterator, как в случае рейса на 8СП,
&gt; &gt; это тоже не поможет.
&gt; 
&gt; А может и поможет. Ведь всё дело в нескольких секундах на стороне фронтэнда и
&gt; перекрытие /tmp/alterator не должно влиять, как уже выяснили выше: настоящий
&gt; путь к сокету вообще не здесь, а в /var/run.

Удаление было по неправильному пути, а вот перекрытие, насколько я могу судить 00 по правильному, в /var/run
Иначе бы вообще ничего и никогда не работало.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183774</commentid>
    <comment_count>41</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-08-21 20:09:11 +0300</bug_when>
    <thetext>(В ответ на комментарий №40)
&gt; перекрытие, насколько я могу судить
&gt; 00 по правильному, в /var/run
&gt; Иначе бы вообще ничего и никогда не работало.

В случае рейса на 8СП, который пока непонятно, как и на чём отловить, мы имеем биндинг /var/run/alteratord в обратную сторону и именно он почему-то при рейсе работает не так, как ожидается -- клиент продолжает разговаривать со старым альтератором, хотя перекрытие произошло несколькими командами выше. Ранее уже обсудили, что при разговоре клиент устанавливает соединение *каждый раз* новое. Что это значит в случае рейса на 8СП? Может такое быть, что на 8СП при рейсе где-то включается отдельный mount namespace и это перекрытие не срабатывает?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183775</commentid>
    <comment_count>42</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-08-21 20:18:23 +0300</bug_when>
    <thetext>А ты замелил, что в бакенде стоит sync после notify?

	# notify interface about finish
	notify &quot;done #t&quot;
	sync

Может он иметь какое-то отношение к mount -o bind и к этим сокетам, которые &quot;не совсем сокеты, не совсем pipe и не совсем fifo, невзирая на название&quot;? Или это такой sync, чтобы notify быстрее долетел? Что-то не нравится он мне. Особенно в связи с гонкой.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183776</commentid>
    <comment_count>43</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-08-21 23:05:36 +0300</bug_when>
    <thetext>(В ответ на комментарий №42)
&gt; Может он иметь какое-то отношение к mount -o bind и к этим сокетам...?

К связи с альтератором он никакого отношения не имеет. Это следует из комментария над данным сниппетом, из смысла функции notify() в том же скрипте и из [alterator-lookout.git]/alterator-lookout/tools/alterator-mailbox-send.c -- бэкэнд сообщает фронтэнду (&quot;done #t&quot;) о завершении операции &quot;Saving settings...&quot;, которая и есть шаг /preinstall, и в процессе которой запускаются всякие скриптики.

sync здесь можно рассматривать двояко: как sleep(ramdom()) и как приостановку какого-либо ввода/вывода до сброса всех буферов на диск. С точки зрения возможности рейса -- фактор провоцирующий, ага. Но влепили его сюда наверняка вместо sleep(n), чтобы дать кому-то (чему-то) другому что-то успеть доделать.

Например, в том же d.csm есть такой комментарий:

note: don&apos;t use control script, because init script pass all stderr to initlog

Управляющий скрипт здесь, надо понимать, это guile-обёртка над функциями запуска/остановки alteratord. Только в d.csm это цикл ожидания с конкретной задержкой до выполнения условия. Можно предположить, что sync&apos;ом в бэкэнде /preinstall могли преследовать те же цели, но не очень надёжным способом. Если так, то для нашего бага сейчас не критично.

Мне куда больше не нравится этот d.csm и вообще весь guile. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183777</commentid>
    <comment_count>44</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-08-22 04:57:09 +0300</bug_when>
    <thetext>(В ответ на комментарий №42)
&gt;     # notify interface about finish
&gt;     notify &quot;done #t&quot;
&gt; [...]
&gt; Может он иметь какое-то отношение к mount -o bind и к этим сокетам...?

Забыл сказать: notify() имеет отношение к т.н. &quot;клиентскому&quot; сокету a.k.a /tmp/alterator/browser-sock. А вот какое отношение этот сокет имеет ко всей архитектуре альтератора, честно говоря, понять пока так и не смог (нет нужных знаний guile). Сейчас он вообще вынесен за пределы альтератора!

Почему бинд-маунтится /tmp/alterator, где кроме этого сокета лежит ещё и журнал альтератора? В то же время, журнал фронтэнда лежит в /tmp/wizard.log и сабжевый баг (у mike@), судя по успешному откату коммита shaba@, может быть связан именно с этим журналом или способом монтирования в чрут каталога /tmp. Почему один сокет (клиентский) всегда был в /tmp/alterator, а серверный несколько раз прыгал и переименовывался? И как так получилось, что теперь они разнесены?

В поисках ответов на эти вопросы набрёл на то, в чём могут разобраться только аксакалы guile...

1) Когда-то &quot;клиентский&quot; сокет был частью альтератора, а именно одним из транспортов наряду с серверным сокетом. Сейчас есть только один транспорт -- pipe-channel.csm и его код весьма напоминает бывший &quot;серверный&quot; транспорт. См.:

git show 68d028

2) Вот несколько изменений в историческом порядке [alterator.git], которые не были косметическими переименованиями, но касались этих двух сокетов:

git show 530a3a
git show ab2072..df792a
git show 00a51c..c65360

3) Нашёл в пыльном мешке вот это, но ничего не понял:
https://www.altlinux.org/Alterator/drivers/http

4) А вот это мастрид, я считаю:
https://www.altlinux.org/Socket_race_conditions
И не просто мастрид, а брать напильник и дотачивать d.csm!

5) Возможно, на ситуацию с 8СП как-то влияет этот коммит (c) твой:

git show 71f4ff

6) См.: [alterator-wizardface.git]/alterator-wizardface/sbin/alterator-wizard и [alterator-browser-qt5.git]/alterator-browser-qt/browser.cc#184-204 для понимания ситуации с &quot;клиентским&quot; сокетом -- тут код, который не трогал zerg@.

7) Мне больше не нравится обратное монтирование: возможно, сторонний эффект на конкретном железе из-за ошибок в ядре?

8) Если бы знал guile, я бы воспроизвёл ситуацию на e2k, вернув коммит shaba@, поизучал бы кэш &quot;компиляции на лету&quot; и ситуацию с трассировкой, в которой единственный модуль d.csm превращается в *неизвестный файл*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183778</commentid>
    <comment_count>45</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-08-22 09:04:06 +0300</bug_when>
    <thetext>Попробую в деталях разжевать ситуацию mike@ на e2k. Код, который трогал shaba@ -- [alterator-pkg]/alterator-pkg/backend3/pkg-init:

# 19: /run теперь в скелете будущего чрута
mkdir -p /mnt/destination/run

# 42: создание других служебных каталогов
mkdir -p /mnt/destination/dev
mkdir -p /mnt/destination/dev/pts
mkdir -p /mnt/destination/proc
mkdir -p /mnt/destination/sys
mkdir -p /mnt/destination/tmp/alterator

# 43: эти же каталоги будут и в чруте
mount --bind /dev /mnt/destination/dev
mount --bind /dev/pts /mnt/destination/dev/pts
mount --bind /proc /mnt/destination/proc
mount --bind /sys /mnt/destination/sys
mount --bind /tmp/alterator /mnt/destination/tmp/alterator

На самом деле из #42-43 убран только /run, остальное так было и раньше. Что здесь плохо (сугубо на мой взгляд), с учётом вышеупомянутого &quot;плана Бидермана&quot; и использования PTY для управления одним из сокетов, что /dev/pts биндится в чрут, тогда как безопаснее сделать новый экземпляр, и тогда у каждой системы будут независимые PTY&apos;s, т.е.:

-mount --bind /dev/pts /mnt/destination/dev/pts
+mount -t devpts devpts /mnt/destination/dev/pts

# 46: add symlinks /var/run -&gt; /run, and /var/lock -&gt; /run/lock
# 47: теперь /run в чруте -- это независимый экземпляр.
#     Кстати, зачем здесь mount с &quot;-n&quot;?
mount -n -t tmpfs -o mode=755 runfs /mnt/destination/run

# 48: пока единственное, что будет в чрутовом /run -- пустой под-каталог lock
mkdir -p -- /mnt/destination/run/lock

# 49: в чруте /var/run будет указывать теперь на /run
ln -s ../run /mnt/destination/var/run

# 50: в чруте /var/lock будет указывать теперь на /run/lock
ln -s ../run/lock /mnt/destination/var/lock

Сокеты запущенного альтератора установочной системы после выполнения этих строк будут находиться в:

1) /var/run/alteratord/.socket -- серверный
2) /tmp/alterator/browser-sock -- клиентский
3) /mnt/destination/tmp/alterator/browser-sock -- клиентский

Журналы будут писаться в /var/run/alteratord/alteratord.log и /tmp/wizard.log, соответственно. Пока всё выглядит прилично. И это подтверждается тем фактом, что даже в случае гонок шаг /preinstall (&quot;Сохранение настроек&quot;) выполняется до конца, затык происходит дальше -- при попытке переключиться на чрутовый alteratord.

Теперь смотрим код, который shaba@ не трогал -- [alterator-preinstall.git]/alterator-preinstall/backend3/preinstall:

# 38: разве вывод на stdout/stderr этой функции или отдельных вызовов в ней не должен подавляться?
run_preinstall()

# 67: главное -- вовремя проверить! А ничего, что этот шаг уже на 99.9% выполнен не в той системе!? :)
[ -n &quot;${ALTERATOR_DESTDIR:-}&quot; ] || return

# 68: ошибка с самого начала, которая ни на что не влияет, но сбивает с толку
rm -f /tmp/alterator/.socket

# 69-71: собственно сабж
mount -o bind /run /mnt/destination/run
mount -o bind /mnt/destination/var/run/alteratord /var/run/alteratord
chroot /mnt/destination /etc/init.d/alteratord start

Этот код всегда был безобразен и до изменений shaba@ в другом пакете. 69 строка пустила насмарку всё, что ранее делалось в pkg-init#47-50, она здесь вообще лишняя: /run уже был смонтирован в чрут более правильным способом. В 70 строке выполняется *обратное монтирование* пока ещё *пустого* каталога /var/run/alteratord -- ой, здесь же только что был наш серверный сокет, куда он делся!? А куда девался журнал альтератора!?

После выполнения именно 70 строки мы гарантированно получили ситуацию гонок: если будет иметь место обращение к серверному сокету с какой-либо стороны *в установочной системе*, то сокета здесь УЖЕ нет, а появится он тут лишь после выполнения строки 71, но это займёт время... где-то в коде попадалось -t 60, возможно(!) означающее тайм-аут ожидания соединения. Но в случае рейса, а на некоторых системах здесь может иметь место интенсивынй ввод/вывод, запуск альтератора в чруте мог затянуться на более, чем 60 (секунд, надо полагать). Это единственное, чем можно объяснить вот это:

?: 2 [request-unix-server &quot;/var/run/alteratord/.socket&quot; ...]

(В ответ на комментарий №15)
&gt;   Я не доконца понимаю текущую ситуацию с /run и /var/run, поэтому рискну
&gt; предположить: после прямой проекции /run в /mnt/destination/run обратная
&gt; проекция из /mnt/destination/var/run наружу теряет смысл, поскольку к этому
&gt; моменту /mnt/destination/run === /mnt/destination/var/run === /var/run === /run

На мой взгляд сабжевый код должен был выглядеть как-то так:

chroot /mnt/destination /etc/init.d/alteratord start
chroot /mnt/destination alteratord-wait
mount --bind /mnt/destination/var/run/alteratord /var/run/alteratord

При этом сохраняется по сути CVE с правами и владельцами сокета и выше лежащего каталога, описанная в #11, не влияющая на ход установки только благодаря тому, что вся инсталляция выполняется из-под рута. И при этом остаётся *обратное монтрирование*, отражаемое в /proc/mounts довольно странно:

mount |tail -n2
runfs on /mnt/destination/run type tmpfs (...)
/dev/sda4 on /var/run/alteratord type ext4 (...) &lt;-- тут корневой раздел</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183782</commentid>
    <comment_count>46</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-08-22 12:23:53 +0300</bug_when>
    <thetext>(В ответ на комментарий №44)
 
&gt; Забыл сказать: notify() имеет отношение к т.н. &quot;клиентскому&quot; сокету a.k.a
&gt; /tmp/alterator/browser-sock. А вот какое отношение этот сокет имеет ко всей
&gt; архитектуре альтератора, честно говоря, понять пока так и не смог (нет нужных
&gt; знаний guile). Сейчас он вообще вынесен за пределы альтератора!

Архитектура. Конечно, не классический MVC, но около того. Этот сокет нужен для связи между View и Model, а не для связи между Model и Controller.

&gt; Почему бинд-маунтится /tmp/alterator,

Где это происходит?

    mount -o bind /run $destdir/run
    mount -o bind $destdir$alteratord_socket_dir $alteratord_socket_dir

Тут нет ни /tmp, ни $TMPDIR.

&gt; 1) Когда-то &quot;клиентский&quot; сокет был частью альтератора, а именно одним из
&gt; транспортов наряду с серверным сокетом. Сейчас есть только один транспорт --
&gt; pipe-channel.csm

Почему? В d.scm идёт вызов к request-unix-server, который, через обёртку, превращается ведь в request_unix_server() из http_client.c пакета vhttpd. Отсюда два следствия: 1) этот транспорт — не pipe-channel; 2) та часть d.scm, с которой мы сейчас столкнулись, написана на C, а не на Scheme.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183783</commentid>
    <comment_count>47</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-08-22 12:31:15 +0300</bug_when>
    <thetext>(В ответ на комментарий №44)

&gt; 4) А вот это мастрид, я считаю:
&gt; https://www.altlinux.org/Socket_race_conditions
&gt; И не просто мастрид, а брать напильник и дотачивать d.csm!

А вот, кстати сказать, абстрактные сокеты, которые предлагались выше. Что у них с правами доступа? Можно ли как-то их регулировать?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183794</commentid>
    <comment_count>48</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-08-22 19:39:27 +0300</bug_when>
    <thetext>(В ответ на комментарий №46)
&gt; &gt; Почему бинд-маунтится /tmp/alterator,
&gt; Где это происходит?
&gt; Тут нет ни /tmp, ни $TMPDIR.

Тут: [alterator-pkg]/alterator-pkg/backend3/pkg-init#43

Извиняюсь за много букв. Ряд вопросов отпал при изучении. Убил вчера весь день на эту головоломку. Как и серверный сокет, журнал сервера может находиться в двух местах, в зависимости от пользователя, но в нашем случае он ложится в /var/run/alteratord.

Главное, что один рейс в бэкэнде точно найден (комментарий #45), осталось только его убрать :)

(В ответ на комментарий №47)
&gt; А вот, кстати сказать, абстрактные сокеты, которые предлагались выше.
&gt; Что у них с правами доступа? Можно ли как-то их регулировать?

В сишном коде или на шеле я бы поучаствовал, но с guile ничем не могу помочь. :) Предлагается исправлять по образцу, как в этой статье на ВиКи.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183795</commentid>
    <comment_count>49</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-08-22 22:53:06 +0300</bug_when>
    <thetext>(В ответ на комментарий №47)
&gt; А вот, кстати сказать, абстрактные сокеты, которые предлагались выше.
&gt; Что у них с правами доступа? Можно ли как-то их регулировать?

Чего-то я тупанул. Здесь же речь о предложении imz@. man 7 unix, однако.))

Пространство имён абстрактного сокета является непереносимым расширением Linux. Абстрактные сокеты автоматически исчезают, когда закрыты все открытые ссылки на сокет. Нам это подходит?

Права доступа и владельцы не имеют смысла для абстрактных сокетов: umask не действует при связывании абстрактного сокета, а изменение владельца и смена прав доступа через fchown/fchmod не влияет на доступность сокета. Он вообще живёт в своём пространстве имён, не связанном с файловой системой.

Абстрактный адрес сокета отличается от классического сокета UNIX, основанного на пути в файловой системе, тем, что sun_path[0]=0. Адрес сокета в этом пространстве имен задается дополнительными *байтами* в sun_path, которые покрываются указанной длиной структуры адреса. Нулевые байты в имени не имеют особого значения.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183811</commentid>
    <comment_count>50</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-08-23 11:57:06 +0300</bug_when>
    <thetext>Пока есть вот такой патчик для реконнекта в случае недоступности alteratord:

http://git.altlinux.org/people/manowar/packages/?p=alterator.git;a=commitdiff;h=fce6b361be91d7092e4fc0a444d75f1a8a77b77b

и, соответственно,

http://git.altlinux.org/people/manowar/packages/?p=alterator-wizardface.git;a=commitdiff;h=0c1750951158f6bdc5b4a1d071876b2c12e121d0

У него, правда, есть проблемы со стеком (из-за колбэка), которые я сейчас постараюсь решить. И следом займусь реконнектом для ситуации, когда соединение с alteratord есть, но &quot;бакенд не найден&quot;. Там несколько посложнее.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183812</commentid>
    <comment_count>51</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-08-23 12:31:07 +0300</bug_when>
    <thetext>Вот новая редакция коммита: http://git.altlinux.org/people/manowar/packages/?p=alterator.git;a=commitdiff;h=ade0288979795f4ed3f794f2dc4d764c8a94408d . Проблем со стеком теперь быть не должно.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183815</commentid>
    <comment_count>52</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-08-23 13:48:53 +0300</bug_when>
    <thetext>Значит так, товарищи. Проверенные коммиты получились вот такими:

1. переподключение, если alteratord недоступен —
1.1. http://git.altlinux.org/people/manowar/packages/?p=alterator.git;a=commitdiff;h=69d2c04a3ebfdfa860371011149c3cb49d082c42 и
1.2. http://git.altlinux.org/people/manowar/packages/?p=alterator-wizardface.git;a=commitdiff;h=0c1750951158f6bdc5b4a1d071876b2c12e121d0 ;

2. повтор запроса, если бакенд не был найден —
2.1 http://git.altlinux.org/people/manowar/packages/?p=alterator.git;a=commitdiff;h=9eec34a98c4e6dcadba15346cdc5dc24cfb083b3 и
2.2. http://git.altlinux.org/people/manowar/packages/?p=alterator-wizardface.git;a=commitdiff;h=5b22b137487577058f08b41fc1d96de15d89bad5 .

Количество повторов и таймаут во втором случае — это те же самые значения, что и в первом случае (это один и тот же счётчик). В коммите выставлен в 20 раз с перерывом в 500 мс.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183816</commentid>
    <comment_count>53</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-08-23 13:53:38 +0300</bug_when>
    <thetext>Теперь у нас вроде как есть защита от рейса, повышающая живучесть всей системы. Прошу проверить, помогает ли. Если сразу не поможет, то можно, наверное, выставить количество повторов в какое-нибудь неприличное значение и попробовать за это время что-то руками нахимичить — сокеты перемаунтить и т.д. Ну и сделать выводы.

А я тем временем подумаю, какие сокеты всё-таки нам нужны, и как надёжнее организовать само переподключение между экземплярами alteratord в инсталлере.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183817</commentid>
    <comment_count>54</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-08-23 14:34:35 +0300</bug_when>
    <thetext>Собственно, пока просится вот такой сценарий в alterator-preinstall:

1. остановка &quot;внешнего&quot; alteratord — теперь это можно делать, т.к. есть переподключение;
2. запуск &quot;внутреннего&quot; alteratord;
3. перемонтирование директории с сокетом наружу;
4. notify &quot;done&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183821</commentid>
    <comment_count>55</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-08-23 15:02:14 +0300</bug_when>
    <thetext>Если есть замечания или дополнения, то прошу дополнить: https://lists.altlinux.org/pipermail/devel/2019-August/208315.html .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183825</commentid>
    <comment_count>56</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-08-23 16:37:00 +0300</bug_when>
    <thetext>(В ответ на комментарий №53)
&gt; Теперь у нас вроде как есть защита от рейса, повышающая живучесть всей
&gt; системы. Прошу проверить, помогает ли.

Мне пока не на чем (в отпуске).

&gt; А я тем временем подумаю, какие сокеты всё-таки нам нужны, и как надёжнее
&gt; организовать само переподключение между экземплярами alteratord в инсталлере.

Поскольку абстрактные не связаны с файловой системой, можно сделать клиентский и серверный, назвать соответственно &quot;\0alteratord-browser&quot; и &quot;\0alteratord-server&quot;.

(В ответ на комментарий №54)
&gt; Собственно, пока просится вот такой сценарий в alterator-preinstall:

 1. остановка &quot;внешнего&quot; alteratord — теперь это можно делать, т.к. есть
 переподключение;
+2. прямое бинд-монтирование каталога /var/run/alteratord в чрут;
 3. запуск &quot;внутреннего&quot; alteratord;
-3. перемонтирование директории с сокетом наружу;
 4. notify &quot;done&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183827</commentid>
    <comment_count>57</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-08-23 17:07:56 +0300</bug_when>
    <thetext>(В ответ на комментарий №56)

&gt; +2. прямое бинд-монтирование каталога /var/run/alteratord в чрут;
&gt;  3. запуск &quot;внутреннего&quot; alteratord;
&gt; -3. перемонтирование директории с сокетом наружу;

А поечему именно так? Т.е. почему ты настаиваешь на том, чтобы второй демон завёл свой сокет в готовой директории или даже подобрал уже существующий сокет? Вместо того, чтобы он создал свой сокет с нуля и этот новый сокет стал доступен снаружи после bind? Хочу обратить внимание, что сейчас (и исторически) именно второй вариант.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183829</commentid>
    <comment_count>58</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-08-23 17:51:54 +0300</bug_when>
    <thetext>(В ответ на комментарий №57)
&gt; А почему именно так? Т.е. почему ты настаиваешь на том, чтобы второй демон
&gt; завёл свой сокет в готовой директории или даже подобрал уже существующий
&gt; сокет?

Прошу обратить внимание: все остальные каталоги смонтированы в чрут именно таким способом, прямым биндингом. И ничего. По идее, при остановке демона, старый сокет должен удаляться. Абстрактный наоборот, не должен, пока к нему есть другие подключения. Но с абстрактным не надо париться на предмет монтирования вообще.

&gt; Вместо того, чтобы он создал свой сокет с нуля и этот новый сокет стал
&gt; доступен снаружи после bind?

Новый демон должен создать свой сокет в том же месте. Старый клиент к нему подключится за счёт биндинга каталога. Прошу обратить внимание: сокета у нас два. И один (в /tmp/alterator) попадает в чрут прямым монтированием в одном скрипте, второй же попадает обратно в другом скрипте через монтирование в противоположную сторону. В разное время! Это никуда не годится. Нужно это всё делать однообразно в одном месте и в один момент.

&gt; Хочу обратить внимание, что сейчас (и исторически) именно
&gt; второй вариант.

Кто, если не мы, делаем историю! :) Исторически решение с обратным монтированием было плохим. Хотя нигде нет такого разграничения на прямое и обратное монтирование, такой общепринятой практики нет. Долгие поиски привели меня к тому, что, например, для докера люди спрашивали: по какой причине не поддерживается обратное монтирование? На мой взгляд, как минимум, эта практика противоречит некоторым соображениям безопасности.

Архитектурно нужно не костыли с задержками, а штатный механизм реакции на &quot;done #t&quot; или что-то подобное, то бишь адекватная реакция альтератора на событие перехода в чрут.

По вопросам в devel@ и абстрактным сокетам можно посмотреть раздел &quot;Transmit file descriptors, credentials&quot; здесь: https://kohlschutter.github.io/junixsocket/unixsockets.html и примеры авторизации с SCM_CREDENTIALS в этом мануале с примерами: https://onz.es/Que%20-%20Linux%20Socket%20Programming%20By%20Example%20-%20fly.pdf</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183830</commentid>
    <comment_count>59</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-08-23 18:22:28 +0300</bug_when>
    <thetext>(В ответ на комментарий №58)

&gt; Прошу обратить внимание: сокета у нас два. И один (в /tmp/alterator) попадает
&gt; в чрут прямым монтированием в одном скрипте

Напомни, пожалуйста, в каком. Я так до сих пор и не видел этот кусок.

В backend3/preinstall /tmp/alterator/.socket **удаляется**, но не монтируется. И это, кстати, ошибка, я считаю. После такого удаления notify() не должен работать! Если и нужно удялять какой-нибудь сокет, то только серверный.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183832</commentid>
    <comment_count>60</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-08-23 18:48:22 +0300</bug_when>
    <thetext>(В ответ на комментарий №59)
&gt; Напомни, пожалуйста, в каком. Я так до сих пор и не видел этот кусок.

Тут: [alterator-pkg]/alterator-pkg/backend3/pkg-init#43

&gt; В backend3/preinstall /tmp/alterator/.socket **удаляется**, но не монтируется.
&gt; И это, кстати, ошибка, я считаю.

Да, о том, что это было ошибкой с самого начала, выше уже написал Антон Бояршинов.

&gt; После такого удаления notify() не должен работать!

Нет, удаляемый файл ни на что не влияет, он к этим сокетам не относится. А notify(), как я понимаю, связан с клиентским сокетом, с ним у нас нет проблем.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183841</commentid>
    <comment_count>61</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-08-24 02:28:57 +0300</bug_when>
    <thetext>(В ответ на комментарий №53)
&gt; Теперь у нас вроде как есть защита от рейса, повышающая живучесть всей системы.
&gt; Прошу проверить, помогает ли. Если сразу не поможет, то можно, наверное,
&gt; выставить количество повторов в какое-нибудь неприличное значение и попробовать
&gt; за это время что-то руками нахимичить — сокеты перемаунтить и т.д. Ну и сделать
&gt; выводы.

На всякий случай задание с этими изменениями + чистка alterator-preinstall:
http://git.altlinux.org/tasks/236531/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183969</commentid>
    <comment_count>62</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-08-29 23:50:52 +0300</bug_when>
    <thetext>Ping? Мы Лёню ждём, да?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183970</commentid>
    <comment_count>63</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-08-30 01:49:00 +0300</bug_when>
    <thetext>(В ответ на комментарий №62)
&gt; Ping? Мы Лёню ждём, да?

Меня? Так ведь задача от тебя в редмайне. Даже когда выйду 2.09 из отпуска, проверку новой версии на e2k придётся согласовывать, вряд ли мне этим дадут заниматься. Поскольку аналогичная ситуация с вероятностью 50/50 поджидает на новых машинах AMD Ryzen и Intel x86_64 с 8СП, можно будет подключиться с оказией, но в первую очередь я бы исправил в бэкэнде явный рейс в [alterator-preinstall.git]/alterator-preinstall/backend3/preinstall#69-71 (см. комментарий #45).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183981</commentid>
    <comment_count>64</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-08-30 11:44:45 +0300</bug_when>
    <thetext>Я там уже кое что поправил, и учитывая изменения в других пакетах думаю, что рейса теперь можно не бояться. Так что да, вопрос с проверкой этих изменений. Если главный полегон на E2K, то, значит, ждём mike@? Ну ещё вариант — у нас в офисе проверить, там есть какой-то E2K. Но нужны тогда вводная и образ.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184012</commentid>
    <comment_count>65</comment_count>
      <attachid>8268</attachid>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2019-08-30 20:49:55 +0300</bug_when>
    <thetext>Created attachment 8268
фрагмент /tmp/install2.log при e2k#23240 _с_ alterator-pkg 2.7.2

Проверил p9_e2k с таким довеском:

2019-Aug-30 16:02:49 :: test-only swift task #23240 for p9_e2k resumed by mike:
#100 build alterator-5.5-alt1.src.rpm
#200 build alterator-wizardface-2.2-alt1.src.rpm
#300 build alterator-preinstall-0.7.3-alt1.src.rpm
#400 build alterator-pkg-2.7.2-alt1.src.rpm

=&gt; regular-jeos.iso упал в том же месте, но с несколько иным грохотом:

Error: (backend not found: root). Retry #1
[...]
ice-9/boot-9.scm:109:20: In procedure #&lt;procedure b7e800 at ice-9/boot-9.scm:100:6 (thrown-k . args)&gt;:
ice-9/boot-9.scm:109:20: Throw to key `woo-error&apos; with args `(&quot;backend not found: root&quot;)&apos;.

При этом alterator-root в образе, разумеется, есть.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184016</commentid>
    <comment_count>66</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2019-08-30 21:24:20 +0300</bug_when>
    <thetext>(В ответ на комментарий №65)
&gt; #100 build alterator-5.5-alt1.src.rpm
&gt; #200 build alterator-wizardface-2.2-alt1.src.rpm
&gt; #300 build alterator-preinstall-0.7.3-alt1.src.rpm

Предыдущее оставил, убрал #400 -- падать перестало:

&gt; #400 build alterator-pkg-2.7.2-alt1.src.rpm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184017</commentid>
    <comment_count>67</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-08-30 21:32:13 +0300</bug_when>
    <thetext>(В ответ на комментарий №65)

&gt; =&gt; regular-jeos.iso упал в том же месте, но с несколько иным грохотом:
&gt; 
&gt; Error: (backend not found: root). Retry #1
&gt; [...]
&gt; ice-9/boot-9.scm:109:20: Throw to key `woo-error&apos; with args `(&quot;backend not
&gt; found: root&quot;)&apos;.

  Слушай, он именно на ПЕРВОМ retry падает? Специально же там всё сделано, чтобы вместо падения была повторная попытка. Не понимаю пока, как такое могло случиться.
  Если падает после N попыток (там 20 вроде в alterator-wizardface из задания), то это куда не шло. Тогда можно разбираться дальше.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184018</commentid>
    <comment_count>68</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-08-30 21:34:53 +0300</bug_when>
    <thetext>(В ответ на комментарий №66)

&gt; Предыдущее оставил, убрал #400 -- падать перестало:
&gt; 
&gt; &gt; #400 build alterator-pkg-2.7.2-alt1.src.rpm

  А какая версия сейчас у тебя? Что там за изменения?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184020</commentid>
    <comment_count>69</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2019-08-30 22:43:12 +0300</bug_when>
    <thetext>(В ответ на комментарий №67)
&gt; &gt; Error: (backend not found: root). Retry #1
&gt; &gt; [...]
&gt; Слушай, он именно на ПЕРВОМ retry падает? Специально же там всё сделано,
&gt; чтобы вместо падения была повторная попытка. Не понимаю пока, как такое
&gt; могло случиться.
Не, retry там 19 штук было.  Извини, слишком кратко приложенное процитировал.

(В ответ на комментарий №68)
&gt; &gt; Предыдущее оставил, убрал #400 -- падать перестало:
&gt; &gt; &gt; #400 build alterator-pkg-2.7.2-alt1.src.rpm
&gt; А какая версия сейчас у тебя? Что там за изменения?
Предыдущая 2.7-alt1 (см. comment 0).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184023</commentid>
    <comment_count>70</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-08-30 23:13:46 +0300</bug_when>
    <thetext>(В ответ на комментарий №69)
&gt; (В ответ на комментарий №67)
&gt; &gt; &gt; Error: (backend not found: root). Retry #1
&gt; &gt; &gt; [...]
&gt; &gt; Слушай, он именно на ПЕРВОМ retry падает? Специально же там всё сделано,
&gt; &gt; чтобы вместо падения была повторная попытка. Не понимаю пока, как такое
&gt; &gt; могло случиться.
&gt; Не, retry там 19 штук было.  Извини, слишком кратко приложенное процитировал.

  Понял. Это другое дело. Тогда можно увеличить до 10000, к примеру, и попробовать за это время разобраться с сокетом — посмотреть в mount -l и /proc и т.д.

&gt; 
&gt; (В ответ на комментарий №68)
&gt; &gt; &gt; Предыдущее оставил, убрал #400 -- падать перестало:
&gt; &gt; &gt; &gt; #400 build alterator-pkg-2.7.2-alt1.src.rpm
&gt; &gt; А какая версия сейчас у тебя? Что там за изменения?
&gt; Предыдущая 2.7-alt1 (см. comment 0).

  Понял. Это я посмотрю завтра, что там такое могло быть, что наводит индукцию на preinstall.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184106</commentid>
    <comment_count>71</comment_count>
      <attachid>8275</attachid>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-09-03 18:35:34 +0300</bug_when>
    <thetext>Created attachment 8275
/var/run/alteratord/alteratord.log до обратного монтирования

Обратите внимание на pkg-size и концовку (отсутствующие обработчики). Это в любом случае множественные ошибки. И это последнее, что попадает в журнал перед переключением в чрут.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184107</commentid>
    <comment_count>72</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-09-03 18:57:32 +0300</bug_when>
    <thetext>В том же файле, который в чруте, только две строки:

*** Make a new server socket ***
bind_unix: address /var/run/alteratord/.socket in use

Проблема в том, что судя по stat, это два разных файла. Тот, что в чруте, судя по временной метке, создан примерно в момент перехода в чрут. Однако морда продолжает работать с тем сокетом, что находится под ним, т.е. уже перекрыта чрутовой версией.

Вместе с тем, alterator-cmdline связывается с сокетом из перекрытого чрутового каталога и чудесно обнаруживает шаг /grub.

Локализовать рейс пока не получается. Картина вообще не поддаётся объяснению.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184109</commentid>
    <comment_count>73</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-09-03 19:03:53 +0300</bug_when>
    <thetext>(В ответ на комментарий №72)
 
&gt; Вместе с тем, alterator-cmdline связывается с сокетом из перекрытого чрутового
&gt; каталога и чудесно обнаруживает шаг /grub.
&gt; 
&gt; Локализовать рейс пока не получается. Картина вообще не поддаётся объяснению.

  Версия с retry будет повторять попытки до тех пор, пока /grub не будет найдет (или не истечёт количество попыток). Поэтому если cmdline связывается, то и wizardface тоже должен с очередной попытки связаться.

  И ещё, как твой репорт связан вот с этим у mike@:

&gt;&gt; Предыдущее оставил, убрал #400 -- падать перестало</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184110</commentid>
    <comment_count>74</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-09-03 19:25:46 +0300</bug_when>
    <thetext>(In reply to comment #73)
&gt; Версия с retry будет повторять попытки до тех пор, пока /grub не найдет
&gt; (или не истечёт количество попыток).

Применить твои изменения на старую версию 8СП проблематично -- их много и они ёмкие, я же не пересобираю старый образ, а на новых 8СП и на WS9 не воспроизводится. При этом нам оставили проблемный Intel x86_64. Кроме того, бесполезно ждать и повторять: в отличие от случая mike@, у меня коннект не рвётся, с первой же попытки проскочит. Инсталлятор при повторном запуске сразу работает с новым alteratord в чруте, поэтому не находит /steps-list. Но и старый не просто так отваливается, потому и привёл лог -- он спотыкается как раз на сокете (не почистили за собой после разрыва pipe в результате внезапного killall).

&gt; 
&gt;   И ещё, как твой репорт связан вот с этим у mike@:
&gt; 
&gt; &gt;&gt; Предыдущее оставил, убрал #400 -- падать перестало

Никак. Второй день дебажу 8СП на проблемном Intel x86_64, где морда продолжает работать со старым альтератором, что бы я не делал. Убрать #400 это всё равно, что не применить твои патчи, а откатить изменения shaba@, чего делать нельзя. То бишь твои изменения фронтэнда не помогли на e2k. Равно как и никакие мои изменения в бэкэндах не помогают решить и даже локализовать проблему. Но, по крайней мере, нашлось несколько конкретных ошибок, частично они выше уже описаны.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184156</commentid>
    <comment_count>75</comment_count>
      <attachid>8279</attachid>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-09-05 15:40:37 +0300</bug_when>
    <thetext>Created attachment 8279
/usr/lib/alterator/backend3/preinstall использованный для отладки

Чтобы отловить момент рейса, сделал следующее: заменил концовку в preinstall, в том числе, убрав обратное монтирование, что позволило подвесить установочный процесс на alterator-wait, вплоть до выполнения в другой консоли обратного монтирования. После этого подрубился strace&apos;ом ко всем PID&apos;ам альтератора одной командой и записал происходящее падение (буквально доли секунды)...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184159</commentid>
    <comment_count>76</comment_count>
      <attachid>8280</attachid>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-09-05 15:44:04 +0300</bug_when>
    <thetext>Created attachment 8280
strace момента падения: процесс alteratord</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184160</commentid>
    <comment_count>77</comment_count>
      <attachid>8281</attachid>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-09-05 15:45:42 +0300</bug_when>
    <thetext>Created attachment 8281
strace момента падения: процесс alterator-qt-browser</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184161</commentid>
    <comment_count>78</comment_count>
      <attachid>8282</attachid>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-09-05 15:48:11 +0300</bug_when>
    <thetext>Created attachment 8282
strace момента падения: процесс alterator-wizard</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184173</commentid>
    <comment_count>79</comment_count>
      <attachid>8283</attachid>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-09-06 18:43:40 +0300</bug_when>
    <thetext>Created attachment 8283
strace происходящего в preinstall на новом образе 8СП в норме</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184174</commentid>
    <comment_count>80</comment_count>
      <attachid>8284</attachid>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-09-06 18:44:41 +0300</bug_when>
    <thetext>Created attachment 8284
strace происходящего в preinstall на старом образе 8СП (падение)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184175</commentid>
    <comment_count>81</comment_count>
      <attachid>8285</attachid>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-09-06 18:46:03 +0300</bug_when>
    <thetext>Created attachment 8285
Все логи по результату падения на старом образе 8СП</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184176</commentid>
    <comment_count>82</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-09-06 18:52:21 +0300</bug_when>
    <thetext>Требуется детальный анализ. По-моему, разница очевидна. В прошлый раз захватывал только момент падения, внося изменения в исходники. В этот раз исходники не менял, захват в другой консоли выполнялся примерно так:

strace -o /run/$filename -f -p $pid &amp;

для каждого интересующего процесса, всё одной строкой (командой) во втором терминале незадолго до момента предполагаемого падения, в процессе preinstall (точка начала в его середине условно примерная) и до момента падения (перехода к шагу /grub -- тоже примерно).

Теперь можно сравнить ситуацию в норме и ситуацию с падением на одной машине.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184231</commentid>
    <comment_count>83</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-09-11 15:09:38 +0300</bug_when>
    <thetext>Павел, отдельным письмом передаю тебе все собранные данные с комментариями.
В МСК нашлась ещё одна машинка, где баг проявился, можем тебе её переслать.

Теперь главное -- характер системных вызовов везде одинаковый, ничего подозрительного не нашлось в 4-х сравниваемых случаях. Единственное отличие заключается в том, что в случае успеха, сразу после 4-х сбойных обращений из alterator-wizard:

stat(&quot;/usr/share/alterator/ui//grub/index.scm&quot;, 0x7ffe90f1d3e0) = -1 ENOENT (No such file or directory)
stat(&quot;/usr/share/alterator/ui//grub.scm&quot;, 0x7ffe90f1d460) = -1 ENOENT (No such file or directory)
stat(&quot;/usr/share/alterator/templates//grub/index.scm&quot;, 0x7ffe90f1d460) = -1 ENOENT (No such file or directory)
stat(&quot;/usr/share/alterator/templates//grub.scm&quot;, 0x7ffe90f1d4e0) = -1 ENOENT (No such file or directory)

он продолжает перебор путей и находит нужное:

stat(&quot;/mnt/destination/usr/share/alterator/ui//grub/index.scm&quot;, {st_mode=S_IFREG|0644, st_size=1883, ...}) = 0
access(&quot;/mnt/destination/usr/share/alterator/ui//grub/index.scm&quot;, R_OK) = 0
open(&quot;/mnt/destination/usr/share/alterator/ui//grub/index.scm&quot;, O_RDONLY) = 15

а в случае ошибки, сразу вылетает:

write(1, &quot;&lt;* ((#t))\nRET: ()\n&quot;, 18) = 18
write(2, &quot;frame:on-next is deprecated, use&quot;..., 966) = 966
exit_group(1)                     = ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184232</commentid>
    <comment_count>84</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-09-11 17:02:33 +0300</bug_when>
    <thetext>(В ответ на комментарий №75)

&gt; командой и записал происходящее падение (буквально доли секунды)...

  Вот это меня несколько беспокоит: ты упорно ковыряешь одну точку, смотришь в микроскоп там, где надо бы сначала осмотреться по сторонам.

  Поэтому ещё раз прошу перейти вот к этой тактике:

&gt;&gt; Не, retry там 19 штук было.  Извини, слишком кратко приложенное процитировал.
&gt;
&gt;   Понял. Это другое дело. Тогда можно увеличить до 10000, к примеру, и
&gt; попробовать за это время разобраться с сокетом — посмотреть в mount -l
&gt; и /proc и т.д.

  Потому что очень не верится, что если мы имеем процесс, который постоянно повторяет попытки открыть файл F, то, имея в запасе время и консоль, нельзя в конце концов создать ему такие условия, когда он этот файл наконец откроет. В нашем случае — откроет ту версию файла, которая нам нужна. А стоит успешно закончить такой эксперимент, как всё остальное наверняка прояснится в гораздо большей степени, чем сейчас.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184234</commentid>
    <comment_count>85</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-09-11 17:41:47 +0300</bug_when>
    <thetext>(В ответ на комментарий №70)

&gt; &gt; (В ответ на комментарий №68)
&gt; &gt; &gt; &gt; Предыдущее оставил, убрал #400 -- падать перестало:
&gt; &gt; &gt; &gt; &gt; #400 build alterator-pkg-2.7.2-alt1.src.rpm
&gt; &gt; &gt; А какая версия сейчас у тебя? Что там за изменения?
&gt; &gt; Предыдущая 2.7-alt1 (см. comment 0).
&gt; 
&gt;   Понял. Это я посмотрю завтра, что там такое могло быть, что наводит индукцию
&gt; на preinstall.

  Вроде ж всё очевидно. #400 делает вот такую нехорошую вещь:

    ln -s ../run &quot;$destdir/var/run&quot;
    ln -s ../run/lock &quot;$destdir/var/lock&quot;

после которой разница между /run и /var/run внутри $destdir исчезает. В то же самое время, alterator-preinstall полагается в своей работе именно на то, что /run и /var/run — независимые пути:

    mount -o bind /run $destdir/run
    # Всё! Симлинк $destdir/var/run ведёт теперь в _наш_, т.е. наружный /run.

    mount -o bind $destdir$alteratord_socket_dir $alteratord_socket_dir
    # Превратилось в тавтологию или чего похуже: монтируем _симлинк_
    # &quot;$destdir/var/run -&gt; $destdir/run&quot; в /var/run , который, видимо,
    # просто /run, смонтированный в обе системы (логично предположить
    # что у нас во внешней системе вредный симлинк &quot;/var/run -&gt; /run&quot;
    # также присутствует).

    chroot $destdir service alteratord start
    # Должен теперь бороться с нашим (внешнем) alteratord за один и тот
    # же файл сокета.


  Неудивительно, поэтому, что

&gt; &gt; &gt; &gt; Предыдущее оставил, убрал #400 -- падать перестало:

  Какие тут &quot;протоколы альтератора&quot;, какие эс-трейсы с километрами логов?! Должно лечиться простым удалением строки

    mount -o bind /run $destdir/run

  из alterator-preinstall.  Поскольку после #400, т.е. после alterator-pkg-2.7.2-alt1, в $destdir и так есть свой собственный tmpfs и на диске, очевидно, ничего лишнего после установки не останется.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184236</commentid>
    <comment_count>86</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-09-11 17:51:15 +0300</bug_when>
    <thetext>http://git.altlinux.org/tasks/236531/ -- alterator-preinstall.git v0.7.4-alt1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184237</commentid>
    <comment_count>87</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-09-11 17:54:39 +0300</bug_when>
    <thetext>(In reply to comment #84)
&gt;   Потому что очень не верится, что если мы имеем процесс, который постоянно
&gt; повторяет попытки открыть файл F, то, имея в запасе время и консоль, нельзя в
&gt; конце концов создать ему такие условия, когда он этот файл наконец откроет.

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

&gt; В нашем случае — откроет ту версию файла, которая нам нужна. А стоит успешно
&gt; закончить такой эксперимент, как всё остальное наверняка прояснится в гораздо
&gt; большей степени, чем сейчас.

По крайней мере, теперь у нас есть свободный экземпляр, где эта редкая проблема воспроизводится. И речь теперь не о локализации бага (это бы тоже не помешало, но мы и так убили на него слишком много времени), а речь об усовершенствовании механизма перехода в чрут, в целом.

Когда мы работаем с сокетом, обе стороны должны от него отключиться и удалить его. Также необходимо учитывать прерываемый ввод-вывод в сокете (не законченный ввод или вывод, прерванный в/в и возобновление после прерывания в системном вызове. Надеяться лишь на то, что каталог с сокетом будет перекрыт (в какой момент!?) и работа возобновиться через новый сокет -- в корне опрометчиво, это и есть архитектурный баг.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184238</commentid>
    <comment_count>88</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-09-11 17:58:08 +0300</bug_when>
    <thetext>(In reply to comment #85)
&gt; Должно лечиться простым удалением строки
&gt;     mount -o bind /run $destdir/run
&gt; из alterator-preinstall.

Думаешь, мы так не делали? Это первое, что предложил shaba@ -- не помогло. Данный инсталлятор вообще колом после этого встаёт. Позже немного разобрался, почему это происходит. Загляни ещё в pkg-init и remount.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184240</commentid>
    <comment_count>89</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2019-09-11 18:05:23 +0300</bug_when>
    <thetext>(В ответ на комментарий №88)
&gt; (In reply to comment #85)
&gt; &gt; Должно лечиться простым удалением строки
&gt; &gt;     mount -o bind /run $destdir/run
&gt; &gt; из alterator-preinstall.
&gt; Думаешь, мы так не делали? Это первое, что предложил shaba@ -- не помогло.
Если правильно понимаю, с новым systemd это монтирование надо убирать и менять зависимое от этого.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184249</commentid>
    <comment_count>90</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-09-11 22:24:01 +0300</bug_when>
    <thetext>(В ответ на комментарий №88)
&gt; (In reply to comment #85)
&gt; &gt; Должно лечиться простым удалением строки
&gt; &gt;     mount -o bind /run $destdir/run
&gt; &gt; из alterator-preinstall.
&gt; 
&gt; Думаешь, мы так не делали? Это первое, что предложил shaba@ -- не помогло.

  Делали или сделали? Какая на сегодняшний день обстановка на проблемной машине? Есть эта строчка или нет?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184250</commentid>
    <comment_count>91</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-09-11 22:29:15 +0300</bug_when>
    <thetext>(В ответ на комментарий №74)

&gt; Убрать #400 это всё равно, что не применить твои патчи, а откатить
&gt; изменения shaba@, чего делать нельзя.

  В порядке эксперимента можно? mike@ уже попробовал — помогло. Попробуйте, пожалуйста, и вы. Если поможет — инсталлятор начнёт работать также, как и раньше, — то будет уже однозначно понятно, что проблема в конфликте между наличием симлинка &quot;/var/run -&gt; /run&quot; и перемонтированием сокетов.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184252</commentid>
    <comment_count>92</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2019-09-11 23:19:10 +0300</bug_when>
    <thetext>(В ответ на комментарий №91)
&gt; (В ответ на комментарий №74)
&gt; 
&gt; &gt; Убрать #400 это всё равно, что не применить твои патчи, а откатить
&gt; &gt; изменения shaba@, чего делать нельзя.
&gt; 
&gt;   В порядке эксперимента можно? mike@ уже попробовал — помогло. Попробуйте,
&gt; пожалуйста, и вы. Если поможет — инсталлятор начнёт работать также, как и
&gt; раньше, — то будет уже однозначно понятно, что проблема в конфликте между
&gt; наличием симлинка &quot;/var/run -&gt; /run&quot; и перемонтированием сокетов.

Я не понимаю, зачем Леонид всех путает и мешает все в одно.
mike@ откатил изменения &quot;симлинк /var/run -&gt; /run&quot; на p9 для e2k.
А klark@ воюет на 8СП (x86_64), где нет никаких &quot;симлинков /var/run -&gt; /run&quot;.

Не смешивайте проблемы, а лучше вообще в разных багах это обсуждать.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184258</commentid>
    <comment_count>93</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-09-12 11:34:19 +0300</bug_when>
    <thetext>(В ответ на комментарий №92)
&gt; (В ответ на комментарий №91)
&gt; &gt; (В ответ на комментарий №74)
&gt; &gt; 
&gt; &gt; &gt; Убрать #400 это всё равно, что не применить твои патчи, а откатить
&gt; &gt; &gt; изменения shaba@, чего делать нельзя.
&gt; &gt; 
&gt; &gt;   В порядке эксперимента можно? mike@ уже попробовал — помогло. Попробуйте,
&gt; &gt; пожалуйста, и вы. Если поможет — инсталлятор начнёт работать также, как и
&gt; &gt; раньше, — то будет уже однозначно понятно, что проблема в конфликте между
&gt; &gt; наличием симлинка &quot;/var/run -&gt; /run&quot; и перемонтированием сокетов.
&gt; 
&gt; Я не понимаю, зачем Леонид всех путает и мешает все в одно.
&gt; mike@ откатил изменения &quot;симлинк /var/run -&gt; /run&quot; на p9 для e2k.

Миша, попробуй тогда, пожалуйста, новую сборку preinstall без отката pkg.


&gt; А klark@ воюет на 8СП (x86_64), где нет никаких &quot;симлинков /var/run -&gt; /run&quot;.
&gt; Не смешивайте проблемы, а лучше вообще в разных багах это обсуждать.

Вот уж действительно.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184259</commentid>
    <comment_count>94</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-09-12 12:21:33 +0300</bug_when>
    <thetext>(В ответ на комментарий №87)
&gt; (In reply to comment #84)
&gt; &gt;   Потому что очень не верится, что если мы имеем процесс, который постоянно
&gt; &gt; повторяет попытки открыть файл F, то, имея в запасе время и консоль, нельзя в
&gt; &gt; конце концов создать ему такие условия, когда он этот файл наконец откроет.
&gt; 
&gt; Это история про Эльбрус. В переводе на мою ситуацию всё наоборот -- он должен,
&gt; в конце концов, прекратить работать с прежним сокетом. Но мы на самом деле не
&gt; знаем, почему так происходит. И как показала практика, вкорячивание задержек
&gt; мне не помогла.

  Само по себе не помогло? Вот ты меня упорно не понимаешь или не хочешь понимать. Я сделал таймауты и повторы, в частности, для того, чтобы можно было проводить эксперименты на живой системе. Чтобы можно было поднять количество повторов до практической бесконечности и спокойно исследовать процесс прямо во время его работы — менять окружение, пробовать перемонтирование различными способами. Уже неоднократно об этом писал сюда.
  Если вдруг неудобно или не получается экспериментировать со Scheme, то можно было написать простую тестовую пару клиент-сервер и поставить её в те же самые условия, т.е. в директорию /var/run/alteratord/. Но вместо активного эксперимента, ты упорно сворачиваешь к forensic analysis и признаешь, кажется, только его. Почему — непонятно.

&gt; &gt; В нашем случае — откроет ту версию файла, которая нам нужна. А стоит успешно
&gt; &gt; закончить такой эксперимент, как всё остальное наверняка прояснится в гораздо
&gt; &gt; большей степени, чем сейчас.
&gt; 
&gt; По крайней мере, теперь у нас есть свободный экземпляр, где эта редкая проблема
&gt; воспроизводится. И речь теперь не о локализации бага (это бы тоже не помешало,
&gt; но мы и так убили на него слишком много времени), а речь об усовершенствовании
&gt; механизма перехода в чрут, в целом.
&gt; 
&gt; Когда мы работаем с сокетом, обе стороны должны от него отключиться и удалить
&gt; его. Также необходимо учитывать прерываемый ввод-вывод в сокете (не законченный
&gt; ввод или вывод, прерванный в/в и возобновление после прерывания в системном
&gt; вызове. Надеяться лишь на то, что каталог с сокетом будет перекрыт (в какой
&gt; момент!?) и работа возобновиться через новый сокет -- в корне опрометчиво, это
&gt; и есть архитектурный баг.

  Извини, но это вывод на пустом месте. Не зная точно и конкретно, почему директория с сокетом не перекрывается нормально, нельзя предлагать отключение от сокета в качестве лекарства. Это опять игра в угадайку. @ldv выше правильно отметил, что много лет работало. И раз теперь сломалось, значит есть конкретная причина.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184263</commentid>
    <comment_count>95</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-09-12 14:37:42 +0300</bug_when>
    <thetext>(В ответ на комментарий №87)

&gt; Когда мы работаем с сокетом, обе стороны должны от него отключиться и удалить
&gt; его.

  Собственно, это элементарно проверить. Клиент и так не подключён к сокету — он подключается каждый раз заново. Слушает только сервер. Следовательно, пока клиент повторяет попытки, Ctrl+Alt+F2 и

    service alteratord stop
    chroot $destdir service alteratord stop
    rm -fv /var/run/alteratord/.socket
    rm -fv $destdir/var/run/alteratord/.socket
    chroot $destdir service alteratord start

&gt; Также необходимо учитывать прерываемый ввод-вывод в сокете (не законченный
&gt; ввод или вывод, прерванный в/в и возобновление после прерывания в системном
&gt; вызове.

  Учитывать это как? Напиши конкретнее, что ты имеешь в виду.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184265</commentid>
    <comment_count>96</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-09-12 15:22:46 +0300</bug_when>
    <thetext>У нас есть два немного отличающихся проявления одной и той же проблемы: alterator не может перейти к следующему шагу в чруте после шага alterator-pkg. mike@ просил описать в ЭТОМ баге, как я на это нарвался. Если есть желание разделить ЕГО на два отдельных бага и это целесообразно, давайте разделим.

Путается кто-то другой -- я довольно чётко описываю, в каких ситуациях это проявляется на старом образе 8СП в режиме загрузки UEFI/x86_64. Конечно, с e2k я не работаю. Но моё предложение заключалось в том, чтобы после усовершенствования механизма перехода в чрут применить данное решение к обеим случаям, т.е. и к e2k тоже, а не заниматься локализацией проблемы, на которую убито и так слишком много времени.

Относительно продолжения работ по данному багу ещё разок поясню:

1) Всё что можно было исследовать в части бэкэнда -- я сделал, нашёл кучу ошибок и даже частично их описал. Но даже с ними это как-то на удивление работало годами. Поэтому их исправление сейчас -- не первая необходимость.

2) Со схемой и фронт-эндом в любом случае ничем помочь не могу.

3) Временной лимит на данную задачу для меня исчерпан -- cas@ и smi@ ставят другие более срочные сейчас задачи. Поэтому данная задача передана manowar@.

4) С руководством пока окончательно не согласовано, но в офисе МСК нашёлся системный блок, где проблема проявляется. Его можно переправить manowar@. Удалённо выполнять в МСК на нём какие-то действия сейчас просто некому.

По частностям:

1) service alteratord stop -- после этого инсталлятор зависнет, ни к какому другому шагу он больше не перейдёт. Ещё раз: больше недели всё что на шелле, я перелопатил и опробовал всё.

2) &quot;Попробуйте, пожалуйста, и вы.&quot; -- mike@ пересобирает новые образы, а здесь как предлагалось? Очень большой объём изменений вносить через vi в старый образ 8СП! Как ты себе это представляешь?

3) &quot;Миша, попробуй тогда, пожалуйста, новую сборку preinstall без отката pkg.&quot; -- он пока в отпуске.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184268</commentid>
    <comment_count>97</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-09-12 17:12:37 +0300</bug_when>
    <thetext>(В ответ на комментарий №96)

&gt; 4) С руководством пока окончательно не согласовано, но в офисе МСК нашёлся
&gt; системный блок, где проблема проявляется. Его можно переправить manowar@.

  Я не против, конечно.

&gt; 1) service alteratord stop -- после этого инсталлятор зависнет, ни к какому
&gt; другому шагу он больше не перейдёт. Ещё раз: больше недели всё что на шелле, я
&gt; перелопатил и опробовал всё.

  Ты уверен, что тут именно зависание? Может быть ты просто количество повторов настроил очень большим? Потому что после истечения заданного количества повторов, инсталлятор должен закончить работу с ошибкой.
Может быть это и в самом деле другая ошибка, как shaba@ писал.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184272</commentid>
    <comment_count>98</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-09-12 17:53:42 +0300</bug_when>
    <thetext>(In reply to comment #97)
&gt; Ты уверен, что тут именно зависание?

В моём случае на 8СП на проблемных экземплярах это так и этому можно найти некое объяснение. Ведь там работа продолжается со старым сокетом, как уже выяснили. И тут мы такие смелые приходим во вторую консоль и его отрубаем. А морда инсталлятора продолжает работать...

Конечно, вызывает недоумение, а как раньше-то этот ныне закомментированный код работал? Очевидно, также, как и остальной код, где есть ошибки -- пока не словили гонки, на это никто не напарывался.

Нам ещё привозили третий Ryzen из ICL. Там тоже этот баг проявлялся, но машину уже отдали.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184276</commentid>
    <comment_count>99</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-09-12 18:49:36 +0300</bug_when>
    <thetext>(В ответ на комментарий №98)
&gt; (In reply to comment #97)
 
&gt; Конечно, вызывает недоумение, а как раньше-то этот ныне закомментированный код
&gt; работал?

  Ты вот об этом backend3/preinstall?

    # stop old alteratord and kill itself
    # sleep 1
    # service alteratord stop

  Так, действительно, делать не стоит, т.к. скрипт убивает своего родителя и, следовательно, самого себя. А по этой причине ответ в инсталлятор может не дойти и он в самом деле зависнет.

  Но я имел в виду не автоматический service alteratord stop, а именно вручную из второй (третьей и т.д.) консоли. Причём не абы когда...

&gt; В моём случае на 8СП на проблемных экземплярах это так и этому можно найти
&gt; некое объяснение. Ведь там работа продолжается со старым сокетом, как уже
&gt; выяснили. И тут мы такие смелые приходим во вторую консоль и его отрубаем. А
&gt; морда инсталлятора продолжает работать...

...а тогда, когда клиент уже выйдет на режим (!) повторов и начнёт писать в лог Retry #1, Retry #2... Тогда будет ясно, что он уже _не продолжает_ работать со старым сокетом, а делает только пыпытки начать работу с сокетом — а это не одно и то же. В таком состоянии service alteratord stop не должен повлиять на ситуацию в худшую сторону.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184410</commentid>
    <comment_count>100</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2019-09-19 23:04:49 +0300</bug_when>
    <thetext>Тут очень запутанное обсуждение, особенно тяжело что-то понять из-за того, что manowar@ пишет разные предложение: попробуйте так, или вот так, и т.д. А в ответ нет отчётов о том, попробовали или нет и как это изменило поведение.

Т.е. непонятно: тому, кто будет ещё этим заниматься, пробовать что-то новенькое или то, что предлагал manowar@?

К тому же Леонид мне рассказал, что у него есть две флешки:

* синяя &quot;ALT 8 SP FSTEK&quot; -- где это воспроизводится на некоторых системных блоках, с которыми он работает;
* жёлтая, условно назовём её ALT 8.1 SP -- где это не воспроизводится!

Интересно, какое ещё решение это проблемы нажо искать, если с жёлтой флешкой ФДЕ 8.1 SP она уже не воспроизводится...

В таком случае остаётся для начала по крайней мере сделать очередной &quot;forensic analysis&quot; и посмотреть, что отличается в образах на этих двух флешках (или что отличается в пакетах, которые туда попали, в том состоянии репозитория, когда эти образы делались).

Придумывать что-то новенькое, когда ещё даже неизвестно, почему с желтой флешкой проблема исчезла -- странное занятие.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184411</commentid>
    <comment_count>101</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2019-09-19 23:10:10 +0300</bug_when>
    <thetext>(In reply to comment #100)

&gt; К тому же Леонид мне рассказал, что у него есть две флешки:
&gt; 
&gt; * синяя &quot;ALT 8 SP FSTEK&quot; -- где это воспроизводится на некоторых системных
&gt; блоках, с которыми он работает;
&gt; * жёлтая, условно назовём её ALT 8.1 SP -- где это не воспроизводится!
&gt; 
&gt; Интересно, какое ещё решение это проблемы надо искать, если с жёлтой флешкой
&gt; ALT 8.1 SP она уже не воспроизводится...
&gt; 
&gt; В таком случае остаётся для начала по крайней мере сделать очередной &quot;forensic
&gt; analysis&quot; и посмотреть, что отличается в образах на этих двух флешках (или что
&gt; отличается в пакетах, которые туда попали, в том состоянии репозитория, когда
&gt; эти образы делались).

Леонид, поправь, если что-то не так понял и передал.

А когда и кем эти образы делались? Можно ли просто посмотреть на состав пакетов в них?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184412</commentid>
    <comment_count>102</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2019-09-19 23:31:31 +0300</bug_when>
    <thetext>Ещё интересное замечание, рассказаное Леонидом (поправь, если не так понял), которого здесь не было написано:

на системных блоках x86_64, где у него наблюдается проблема, она наблюдается только при устанвке в EFI режиме, но не legacy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184413</commentid>
    <comment_count>103</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-09-19 23:54:36 +0300</bug_when>
    <thetext>(В ответ на комментарий №100)
&gt; Тут очень запутанное обсуждение, особенно тяжело что-то понять из-за того, что
&gt; manowar@ пишет разные предложение: попробуйте так, или вот так, и т.д. А в
&gt; ответ нет отчётов о том, попробовали или нет и как это изменило поведение.

  Да, это боль.

&gt; Т.е. непонятно: тому, кто будет ещё этим заниматься, пробовать что-то новенькое
&gt; или то, что предлагал manowar@?
&gt; 
&gt; К тому же Леонид мне рассказал, что у него есть две флешки:
&gt; 
&gt; * синяя &quot;ALT 8 SP FSTEK&quot; -- где это воспроизводится на некоторых системных
&gt; блоках, с которыми он работает;
&gt; * жёлтая, условно назовём её ALT 8.1 SP -- где это не воспроизводится!
&gt; 
&gt; Интересно, какое ещё решение это проблемы нажо искать, если с жёлтой флешкой
&gt; ФДЕ 8.1 SP она уже не воспроизводится...

  Скажу, что согласен с Леонидом в одном: что нужно найти не workaround, а истинный корень проблемы — такое место, которое провоцирует нестабильность и ненадёжность при переходе в чрут (и иногда вот проявляется как ошибка), и исправить его. Но я не согласен принимать на веру, что это &quot;mount -o bind&quot; плохо работает или что это доменные сокеты подкачали и отказываться от данного механизма на таком &quot;основании&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184424</commentid>
    <comment_count>104</comment_count>
    <who name="AEN">aen</who>
    <bug_when>2019-09-20 12:03:13 +0300</bug_when>
    <thetext>(В ответ на комментарий №100)
&gt; Тут очень запутанное обсуждение, особенно тяжело что-то понять из-за того, что
&gt; manowar@ пишет разные предложение: попробуйте так, или вот так, и т.д. А в
&gt; ответ нет отчётов о том, попробовали или нет и как это изменило поведение.
&gt; 
&gt; Т.е. непонятно: тому, кто будет ещё этим заниматься, пробовать что-то новенькое
&gt; или то, что предлагал manowar@?
&gt; 
&gt; К тому же Леонид мне рассказал, что у него есть две флешки:
&gt; 
&gt; * синяя &quot;ALT 8 SP FSTEK&quot; -- где это воспроизводится на некоторых системных
&gt; блоках, с которыми он работает;
&gt; * жёлтая, условно назовём её ALT 8.1 SP -- где это не воспроизводится!
&gt; 
&gt; Интересно, какое ещё решение это проблемы нажо искать, если с жёлтой флешкой
&gt; ФДЕ 8.1 SP она уже не воспроизводится...
&gt; 
&gt; В таком случае остаётся для начала по крайней мере сделать очередной &quot;forensic
&gt; analysis&quot; и посмотреть, что отличается в образах на этих двух флешках (или что
&gt; отличается в пакетах, которые туда попали, в том состоянии репозитория, когда
&gt; эти образы делались).
&gt; 
&gt; Придумывать что-то новенькое, когда ещё даже неизвестно, почему с желтой
&gt; флешкой проблема исчезла -- странное занятие.

+1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184431</commentid>
    <comment_count>105</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2019-09-20 15:19:30 +0300</bug_when>
    <thetext>(In reply to comment #11)

&gt; &gt; А как же alterator-wait из того же самого скрипта?
&gt; 
&gt; Обязан, но не ждёт. Перезапуск инсталлятора после падения в моём случае с 8СП
&gt; говорит о том, что alteratord в целевой системе запустился, то есть,
&gt; alterator-wait должным образом не работает либо из-за занятости вводом/выводом
&gt; к моменту его вызова не происходит удаления старого сокета. Позже --
&gt; происходит.
&gt; 
&gt; Первый sleep вроде как должен помочь в случае с e2k, вот только какой? Ни 2, ни
&gt; 5, ни 180 секунд нам не помогли. Второй sleep вкорячивали перед alterator-wait
&gt; -- второй как раз наш случай с 8СП на x86_64, сегодня с этой машиной последний
&gt; день можем работать.

А во втором случае sleep прямо перед aletarator-wait в скрипте preinstall не помогал (на 8СП на x86_64)?

Из сообщений не очень понятно.

Имеется в виду после запуска alteratord в чруте и перед alterator-wait.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184434</commentid>
    <comment_count>106</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-09-20 16:21:52 +0300</bug_when>
    <thetext>Иван описал переданную ситуацию совершенно верно. Но насчёт EFI это замечание выше озвучивалось несколько раз -- на x86_64 это проявляется только в EFI, но не в Legacy. Я даже уточню, хотя с этим багом не связано. На четырёх физических экземплярах есть видеокарта Intel (PCI 0:2:0), на Ryzen&apos;е была видеокарта AMD Vega. На всех пяти машинах число падений инсталлятора в режиме Legacy -- 0, в режиме EFI -- 2 падения. Первое падение здесь offtop, оно связано с ошибкой в инсталляторе при определении видеокарты. Давно исправлено во всех бранчах, но не в старых образах. Второй раз инсталлятор падает уже в середине работы, уже после первого перезапуска.

А вот насчёт этого -- в точку!

(In reply to comment #103)
&gt; 
&gt;   Скажу, что согласен с Леонидом в одном: что нужно найти не workaround, а
&gt; истинный корень проблемы — такое место, которое провоцирует нестабильность и
&gt; ненадёжность при переходе в чрут (и иногда вот проявляется как ошибка), и
&gt; исправить его. Но я не согласен принимать на веру, что это &quot;mount -o bind&quot;
&gt; плохо работает или что это доменные сокеты подкачали и отказываться от данного
&gt; механизма на таком &quot;основании&quot;.

Мне удалось через пень-колоду применить ранее озвученный workaround. Не сразу. А в процессе опять же strace&apos;ом пытался понять, почему не запускается, что мешает. И вот тут выяснилась совсем новая интересная информация...

Ранее мы исходили из того, что раз после падения работает alterator-cmdline, раз инсталлятор запускается повторно, с сокетом всё нормализовалось. И мы были уверены, что проблема с механизмом перехода в чрут. Но оказалось, что с переходом в чрут нет проблем, их нет и с сокетом. Как будто ошибка в самом шаге grub и единственное, что помогло, это копирование тех файлов, что он не может найти, в обе стороны. Я опишу потом подробнее всю схему.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184439</commentid>
    <comment_count>107</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2019-09-20 18:50:27 +0300</bug_when>
    <thetext>(In reply to comment #105)
&gt; (In reply to comment #11)
&gt; 
&gt; &gt; &gt; А как же alterator-wait из того же самого скрипта?
&gt; &gt; 
&gt; &gt; Обязан, но не ждёт. Перезапуск инсталлятора после падения в моём случае с 8СП
&gt; &gt; говорит о том, что alteratord в целевой системе запустился, то есть,
&gt; &gt; alterator-wait должным образом не работает либо из-за занятости вводом/выводом
&gt; &gt; к моменту его вызова не происходит удаления старого сокета. Позже --
&gt; &gt; происходит.
&gt; &gt; 
&gt; &gt; Первый sleep вроде как должен помочь в случае с e2k, вот только какой? Ни 2, ни
&gt; &gt; 5, ни 180 секунд нам не помогли. Второй sleep вкорячивали перед alterator-wait
&gt; &gt; -- второй как раз наш случай с 8СП на x86_64, сегодня с этой машиной последний
&gt; &gt; день можем работать.
&gt; 
&gt; А во втором случае sleep прямо перед aletarator-wait в скрипте preinstall не
&gt; помогал (на 8СП на x86_64)?
&gt; 
&gt; Из сообщений не очень понятно.
&gt; 
&gt; Имеется в виду после запуска alteratord в чруте и перед alterator-wait.

Мне было интересно и я именно это попробовал на x86_64: sleep 60 в начале d-wait. Не исправляет проблему, то же самое.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184440</commentid>
    <comment_count>108</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-09-20 20:23:17 +0300</bug_when>
    <thetext>(In reply to comment #106)
&gt; ...опишу потом подробнее всю схему.

Если в /usr/lib/alterator/backend3/preinstall сразу после запуска альтератора в чруте (перед alterator-wait) добавить такие строчки:

cp -Lf  /usr/share/install2/installer-steps $destdir/usr/share/install2/
cp -LRf /usr/share/install2/steps $destdir/usr/share/install2/
cp -LRf /usr/share/alterator/design/images/steps \
        $destdir/usr/share/alterator/design/images/
cp -Lf  /usr/lib/alterator/backend3/step-list \
        $destdir/usr/lib/alterator/backend3/
cp -LRf /usr/share/alterator/ui/wizard $destdir/usr/share/alterator/ui/
cp -LRf $destdir/usr/share/alterator/ui/* /usr/share/alterator/ui/

инсталлятор больше не падает, успешно переходит к шагу grub и далее доходит до самого конца. Проблема ровно в том месте, на которое я указывал ранее. Данный workaround позволяет не дойти до места возникновения этой ошибки в одном из включаемых скриптов гайла в alterator-wizard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184442</commentid>
    <comment_count>109</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-09-20 20:53:15 +0300</bug_when>
    <thetext>Пожалуй, дополню: безусловно проблему решает лишь последнее копирование:

cp -LRf $destdir/usr/share/alterator/ui/* /usr/share/alterator/ui/

(перед alterator-wait). Пять других нужны были лишь на случай падения инсталлятора и там ещё нужно было делать до них что-то вроде:

sed -i &apos;1,/^installer\-preinstall/d&apos; /usr/share/install2/installer-steps

где installer-preinstall -- последний успешно выполненный шаг. А раз инсталлятор больше не падает, то вроде как и не нужны уже первые пять копирований. Сейчас я эту версию проверяю...

Таким образом, уже можно сделать выводы на предмет того, что именно искать в части отличий. В новом коде добавлен поиск по путям с префиксом /mnt/destination -- шесть вызовов stat(), а не четыре. Но если этот код был и раньше, значит падает не дойдя до него, не перебрав все варианты. И в процессе этой ошибки нет каких-либо других системных вызовов, она чисто логическая, в коде guile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184444</commentid>
    <comment_count>110</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-09-21 00:54:28 +0300</bug_when>
    <thetext>Поясню по последнему абзацу. Вот так выглядит сбой в плохом случае:

stat(&quot;/usr/share/alterator/ui//grub/index.scm&quot;, 0x7ffc052c6520) = -1 ENOENT (No such file or directory)
stat(&quot;/usr/share/alterator/ui//grub.scm&quot;, 0x7ffc052c65a0) = -1 ENOENT (No such file or directory)
stat(&quot;/usr/share/alterator/templates//grub/index.scm&quot;, 0x7ffc052c65a0) = -1 ENOENT (No such file or directory)
stat(&quot;/usr/share/alterator/templates//grub.scm&quot;, 0x7ffc052c6620) = -1 ENOENT (No such file or directory)
write(1, &quot;&lt;* ((#t))\nRET: ()\n&quot;, 18) = 18

В хорошем случае вывод starce отличается, начиная с 5-й строки:

stat(&quot;/usr/share/alterator/ui//grub/index.scm&quot;, 0x7ffe90f1d3e0) = -1 ENOENT (No such file or directory)
stat(&quot;/usr/share/alterator/ui//grub.scm&quot;, 0x7ffe90f1d460) = -1 ENOENT (No such file or directory)
stat(&quot;/usr/share/alterator/templates//grub/index.scm&quot;, 0x7ffe90f1d460) = -1 ENOENT (No such file or directory)
stat(&quot;/usr/share/alterator/templates//grub.scm&quot;, 0x7ffe90f1d4e0) = -1 ENOENT (No such file or directory)
stat(&quot;/mnt/destination/usr/share/alterator/ui//grub/index.scm&quot;, {st_mode=S_IFREG|0644, st_size=1883, ...}) = 0
access(&quot;/mnt/destination/usr/share/alterator/ui//grub/index.scm&quot;, R_OK) = 0
open(&quot;/mnt/destination/usr/share/alterator/ui//grub/index.scm&quot;, O_RDONLY) = 15

Но в случае сбоя до обращения к /mnt/destination/usr/share/alterator/ui//grub/index.scm дело не доходит. workaround превратит этот вывод во что-то такое:

stat(&quot;/usr/share/alterator/ui//grub/index.scm&quot;, {st_mode=S_IFREG|0644, st_size=1883, ...}) = 0
access(&quot;/usr/share/alterator/ui//grub/index.scm&quot;, R_OK) = 0
open(&quot;/usr/share/alterator/ui//grub/index.scm&quot;, O_RDONLY) = 15

На всякий случай напомню предысторию: до шага /grub альтератор стучался по четырём путям для каждого шага и по одному из них находил искомое. Это логично, поскольку все необходимые файлы для первых шагов должны лежать в установочной системе. Но файлов морды для шагов, выполняемых в чруте, в установочной системе нет. Вот здесь по факту тоже всегда пусто:

ls /usr/share/alterator/templates/
ls /mnt/destination/usr/share/alterator/templates/

Если скопировать из чрута в установочную систему UI-файлы только для шага /grub, инсталлятор вылетит на следующем шаге -- /net, итд... Почему он не ищет их в чруте, почему он не доходит до /mnt/destination/usr/share/alterator/ui//grub/index.scm -- не знаю.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184450</commentid>
    <comment_count>111</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2019-09-21 14:29:49 +0300</bug_when>
    <thetext>Леонид, а может быть, две последовательные ошибки на x86_64 с ALT SP 8 -- связанные вещи?

В legacy-режиме вторая не происходит. А первая, с запуском X-сервера происходит?

Просто я подумал, прочитав твоё последнее сообщение, что когда ты вручную после первой ошибки запускаешь xinit /usr/sbin/alterator-install2, ты, чозможно, теряешь для него параметры или переменные окружения, который добавляют пути для поиска scm-файлов интерфейса шагов.

Помню, ьам есть что-то про чтения доп.файла конфигурации в штатном скрипте.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184451</commentid>
    <comment_count>112</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-09-21 16:51:24 +0300</bug_when>
    <thetext>(In reply to comment #111)
&gt; Леонид, а может быть, две последовательные ошибки на x86_64 с ALT SP 8 --
&gt; связанные вещи?

Думал об этом -- исключено. Первый баг был обнаружен более 2х лет назад и исправлен более года назад. Ещё раньше я начал применять workaround с fbdev на EFI. Машин с тех пор через меня прошло очень много и ни одна из них второй раз не вываливалась в середине. Первая такая машина появилась совсем недавно -- Ryzen из ICL, но тогда мы грешили на совсем плохое железо.

Другое дело (вчера сразу не догадался посмотреть), имеет смысл проверить &quot;недостающее&quot; в установочной системе на разных образах при переходе к шагу /grub. Вдруг, это ещё приблизит нас к локализации проблемы.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184496</commentid>
    <comment_count>113</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-09-23 13:05:29 +0300</bug_when>
    <thetext>(В ответ на комментарий №110)

&gt; Если скопировать из чрута в установочную систему UI-файлы только для шага
&gt; /grub, инсталлятор вылетит на следующем шаге -- /net, итд... Почему он не ищет
&gt; их в чруте, почему он не доходит до
&gt; /mnt/destination/usr/share/alterator/ui//grub/index.scm -- не знаю.

  Слушай, но это же очевидно. Искать что-то в /mnt/destination/usr/share/... может только процесс alteratord, работающий _вне_ чрута /mnt/destination, т.е. исходный, первый процесс alteratord. Идея же перехода в чрут заключаается в том, что внутри чрута запускается свой, отдельный alteratord, для которого файл /mnt/destination/usr/share/alterator/ui//grub/index.scm превращается просто в /usr/share/alterator/ui//grub/index.scm. Подкладывать файлы в чрут как делаешь ты — это значит продолжать ехать на первом экземпляре alteratord, а не на втором.

  И следовательно, сказанное тобой в №110 неверно:

(В ответ на комментарий №110)

&gt; Ранее мы исходили из того, что раз после падения работает alterator-cmdline,
&gt; раз инсталлятор запускается повторно, с сокетом всё нормализовалось. И мы были
&gt; уверены, что проблема с механизмом перехода в чрут. Но оказалось, что с
&gt; переходом в чрут нет проблем, их нет и с сокетом.

  Проблема с переключением на сокет второго экземпляра alteratord есть. Может быть даже есть проблема с запуском этого второго экземпляра.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184500</commentid>
    <comment_count>114</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-09-23 13:40:51 +0300</bug_when>
    <thetext>Падает процесс alterator-wizard, морда альтератора. Это следует из отладочных журналов. Причина падения -- неизвестна. В нормальной ситуации, падения не происходит по той причинеТвоё утвер</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184503</commentid>
    <comment_count>115</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-09-23 13:49:53 +0300</bug_when>
    <thetext>Падает процесс alterator-wizard, морда альтератора. Это следует из отладочных журналов. Я же подключался ко всем активным процессам. Причина падения -- неизвестна. В нормальной ситуации, падения не происходит по той причине, что wizard продолжает поиск в /mnt/destianation. Можешь взять starce и попробовать на любом дистрибутиве, даже необязательно на 8СП.

Твоё утверждение ошибочно потому, что морда, в отличии от демона, в чрут не переходит. Но шаги (фронтэнд) она видеть должна. Она знает, где их искать на диске. Поскольку между установочной системой и целевой они разнесены, она должна искать их и там, и здесь. Но находит в /mnt/destination лишь когда нет рейса, в 99.99% случаев.

Твоя задача как раз понять, где ошибка в guile-логике перебора этих путей. Смотри внимательно на вывод strace. Если бы дело обстояло, как ты говоришь, команда копирования UI-файлов проблему бы не решила. Потому что файлы бэкэнда остались в чруте и с ними работает новый экземпляр демона по перекрытому сокету.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184516</commentid>
    <comment_count>116</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-09-23 14:48:21 +0300</bug_when>
    <thetext>(В ответ на комментарий №115)

&gt; Твоё утверждение ошибочно потому, что морда, в отличии от демона, в чрут не
&gt; переходит. Но шаги (фронтэнд) она видеть должна.

  Согласен. Я и забыл, что это именно морда. Но тогда встречный вопрос: может быть установочный образ должен просто содержать /usr/share/alterator/ui для всех модулей, как внешних, так и чрутных? Т.е. при подготовке образа инсталлятора нужно ставить все задействованные пакеты alterator-*, а не только половину? Если у нас для legacy и UEFI два разных образа корневой ФС, то это вполне возможная ошибка.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184517</commentid>
    <comment_count>117</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-09-23 15:12:25 +0300</bug_when>
    <thetext>(In reply to comment #116)
&gt; Но тогда встречный вопрос: может
&gt; быть установочный образ должен просто содержать /usr/share/alterator/ui для
&gt; всех модулей, как внешних, так и чрутных?

Это бы решило проблему. Но не думаю, что это единственное верное решение, ведь редко проявляющаяся ошибка в логике останется в коде. Сейчас мы проверяем на друхих железках x86_64/EFI, хорошо бы проверить и на e2k.

&gt; Т.е. при подготовке образа
&gt; инсталлятора нужно ставить все задействованные пакеты alterator-*, а не только
&gt; половину? Если у нас для legacy и UEFI два разных образа корневой ФС, то это
&gt; вполне возможная ошибка.

Я проверил -- на старых образах 8СП шаги разнесены. От Legacy/EFI не зависит, это в сквоше /altinst. И не только в сквоше, оно и на живой системе так к моменту открытия, скажем, второго шага.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184520</commentid>
    <comment_count>118</comment_count>
      <attachid>8310</attachid>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-09-23 15:58:49 +0300</bug_when>
    <thetext>Created attachment 8310
Исправленный preinstall</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184522</commentid>
    <comment_count>119</comment_count>
      <attachid>8311</attachid>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-09-23 16:04:04 +0300</bug_when>
    <thetext>Created attachment 8311
Исправлятор проблемы на 8СП x86_64/EFI

Фикса для 8СП помещается на чистую флэшку вместе с исправленным preinstall. При первом падении даём всего две команды:

mount /dev/sdc1 /mnt
/mnt/fix

После этого инсталлятор запускается в графике и больше не падает, сразу выдёргиваем флэшку с фиксой. Установка успешно проходит до конца -- проверили на нескольких проблемных машинах. Учёл замечания Ивана на предмет переменной окружения DURING_INSTALL -- без неё не очень хорошо всё отрабатывало в скрипте postinstall.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184530</commentid>
    <comment_count>120</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2019-09-23 18:05:58 +0300</bug_when>
    <thetext>(In reply to comment #115)
&gt; Падает процесс alterator-wizard, морда альтератора. Это следует из отладочных
&gt; журналов. Я же подключался ко всем активным процессам. Причина падения --
&gt; неизвестна. В нормальной ситуации, падения не происходит по той причине, что
&gt; wizard продолжает поиск в /mnt/destianation. Можешь взять starce и попробовать
&gt; на любом дистрибутиве, даже необязательно на 8СП.
&gt; 
&gt; Твоё утверждение ошибочно потому, что морда, в отличии от демона, в чрут не
&gt; переходит. Но шаги (фронтэнд) она видеть должна. Она знает, где их искать на
&gt; диске. Поскольку между установочной системой и целевой они разнесены, она
&gt; должна искать их и там, и здесь. Но находит в /mnt/destination лишь когда нет
&gt; рейса, в 99.99% случаев.

Я тоже так считаю.

&gt; Твоя задача как раз понять, где ошибка в guile-логике перебора этих путей.
&gt; Смотри внимательно на вывод strace. Если бы дело обстояло, как ты говоришь,
&gt; команда копирования UI-файлов проблему бы не решила. Потому что файлы бэкэнда
&gt; остались в чруте и с ними работает новый экземпляр демона по перекрытому
&gt; сокету.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184534</commentid>
    <comment_count>121</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2019-09-23 18:22:36 +0300</bug_when>
    <thetext>(In reply to comment #111)
&gt; Леонид, а может быть, две последовательные ошибки на x86_64 с ALT SP 8 --
&gt; связанные вещи?
&gt; 
&gt; В legacy-режиме вторая не происходит. А первая, с запуском X-сервера
&gt; происходит?
&gt; 
&gt; Просто я подумал, прочитав твоё последнее сообщение, что когда ты вручную после
&gt; первой ошибки запускаешь xinit /usr/sbin/alterator-install2, ты, чозможно,
&gt; теряешь для него параметры или переменные окружения, который добавляют пути для
&gt; поиска scm-файлов интерфейса шагов.

Всё действительно так.

/usr/sbin/install2 экспортирует переменную окружения GUILE_LOAD_PATH, в которую добавлены дополнительные пути в /mnt/destination/

Также я проверил, что попытка запуска или редактирования xorg.conf в /usr/sbin/install2 делается без затирания того, что есть.

Так что, чтобы успешно сделать установку на этих x86_64 компах, делаем так:

когда первый раз выпадаем из-за X-ов, конфигурируем их так, как сказано здесь -- https://forum.altlinux.org/index.php?topic=42871.msg340856#msg340856 , например:

# lspci | fgrep VGA
...смотрим номер, меняем точку на двоеточие
# cat &gt;/etc/X11/xorg.conf
Section &quot;Device&quot;
  Identifier &quot;Card0&quot;
  Driver &quot;fbdev&quot;
  BusID &quot;PCI:00:02:0&quot;
EndSection

и запускаем в первой консоли этот целый скрипт обёртку:

# /usr/sbin/install2

(Он, правда, заново стартует всякие преинсталл-сервисы, но это не мешает успешной установке дальше.) В конце он должен выполнить postinstall-скрипты.
И если дальше нажать Ctrl-D в этом шелле (предварительно, я ещё на других консолях нажал Ctrl-D), то он всё размонтирует и перезагружается.

Это было описание первого способа.

2-ой способ (который, возможно, объясняет, почему в прошлом Леонид сталкивался с первой ошибкой, но не второй):

xorg.conf делаем так же.

А в shell-е на второй консоли на самом деле уже выставлена другая переменная окружения, с таким же хорошим эффектом: ALTERATOR_DATADIR

Там можно вручную запустить, как Леонид:

xinit /usr/sbin/alterator-install2 -- vt7 -dpms -ac \
        -nolisten tcp -logfile /tmp/x11.log &gt;&gt; /tmp/install2.log 2&gt;&amp;1

И установка тоже пройдёт успешно, но в конце не будут выполнены postinstall-скрипты. (Надо вручную запустить.)

Это был 2-ой способ.

1-ый и 2-ой способ можно комбинировать по вкусу.

Плохой ситуации на e2k в образах более свежих, чем 8.1, это никак не затрагивает (и не решает). Но для той ситуации manowar@ высказал много полезных предложений, которые помогут её решить или выяснить, в чём дело.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184540</commentid>
    <comment_count>122</comment_count>
      <attachid>8312</attachid>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2019-09-23 22:02:04 +0300</bug_when>
    <thetext>Created attachment 8312
Исправлятор проблемы на 8СП x86_64/EFI #2

(In reply to comment #121)
&gt; (In reply to comment #111)
&gt; &gt; Леонид, а может быть, две последовательные ошибки на x86_64 с ALT SP 8 --
&gt; &gt; связанные вещи?
&gt; &gt; 
&gt; Всё действительно так.
&gt; 

Конечно жаль, что убили на такую фигню столько времени. Зато теперь для моего случая есть аж целых три воркэраунда!

&gt; Это был 2-ой способ.

Всё-таки третий. Я его проверил и автоматизировал. Теперь при вылете на графике в режиме EFI достаточно переключиться на вторую консоль, смонтировать флэшку, запустить с неё этот fix2. А когда инсталлятор запустится, флэшку с фиксой выдернуть.

Думал сначала экспортировать такие же переменные, что на втором терминале, но решил не рисковать. Во втором способе (который ты называешь первым) не нравится, что дважды запускаются инициализирующие скрипты.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184875</commentid>
    <comment_count>123</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2019-10-10 20:10:21 +0300</bug_when>
    <thetext>Возможно, причастно (в e2k-репозиториях не было версий новее 2.3.16
с патчиком насчёт lib32):

$ rpm -qp --lastchange filesystem-2.3.17-alt1.src.rpm 
* Вт авг 28 2018 Dmitry V. Levin &lt;ldv@altlinux.org&gt; 2.3.17-alt1
- Moved /etc/syslog.d from syslog-common to filesystem.
- Made /lib/modules readable and executable by everybody (closes: #5969).
- Added libx32 directories on x86_64 and x32 systems (by Ivan Zakharyaschev).
- Added lib32 directories on %e2k (thx Ivan Zakharyaschev).
- Added %ghost /run/lock/, marked /var/lock/ and /var/lock/* as %ghost
  (by Alexey Shabalin).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185856</commentid>
    <comment_count>124</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2019-11-28 15:03:57 +0300</bug_when>
    <thetext>Есть ли здесь какое-то общее решение, которое нужно внести в альтератор или инсталлер? Кажется, нет.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185857</commentid>
    <comment_count>125</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2019-11-28 15:26:23 +0300</bug_when>
    <thetext>(In reply to comment #124)
&gt; Есть ли здесь какое-то общее решение, которое нужно внести в альтератор или
&gt; инсталлер? Кажется, нет.

Что касается той проблемы, с которой Леонид столкнулся (из-за можно так сказать невнимательности или неполных знаний), то было бы яснее людям, если бы дополнительный путь передавался не через переменную окружения GUILE_LOAD_PATH (на которую легко не обратить внимание при изучении работы), а явно в виде аргумента командам alterator-а.

Но в целом это не звучит как очень серьёзный недочёт, требовавший бы исправления.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>8268</attachid>
            <date>2019-08-30 20:49:55 +0300</date>
            <delta_ts>2019-08-30 20:49:55 +0300</delta_ts>
            <desc>фрагмент /tmp/install2.log при e2k#23240 _с_ alterator-pkg 2.7.2</desc>
            <filename>install2-37050-pkg272.log</filename>
            <type>text/plain</type>
            <size>4058</size>
            <attacher name="Michael Shigorin">mike</attacher>
            
              <data encoding="base64">Ozs7IG5vdGU6IGF1dG8tY29tcGlsYXRpb24gaXMgZW5hYmxlZCwgc2V0IEdVSUxFX0FVVE9fQ09N
UElMRT0wCjs7OyAgICAgICBvciBwYXNzIHRoZSAtLW5vLWF1dG8tY29tcGlsZSBhcmd1bWVudCB0
byBkaXNhYmxlLgo7OzsgY29tcGlsaW5nIC91c3Ivc2Jpbi9hbHRlcmF0b3Itd2l6YXJkCjs7OyBj
b21waWxlZCAvdG1wLy5jYWNoZS9ndWlsZS9jY2FjaGUvMi4wLUxFLTgtMi4wL3Vzci9zYmluL2Fs
dGVyYXRvci13aXphcmQuZ28KV0FSTklORzogKGFsdGVyYXRvciBzZXNzaW9uIHN0YXRlKTogaW1w
b3J0ZWQgbW9kdWxlIChhbHRlcmF0b3IgYWxnbykgb3ZlcnJpZGVzIGNvcmUgYmluZGluZyBgY2Fs
bC13aXRoLWN1cnJlbnQtY29udGludWF0aW9uJwpXQVJOSU5HOiAoYWx0ZXJhdG9yIGxvb2tvdXQg
ZXZhbHVhdGlvbik6IGltcG9ydGVkIG1vZHVsZSAoYWx0ZXJhdG9yIHByZXNlbnRhdGlvbiBldmVu
dHMpIG92ZXJyaWRlcyBjb3JlIGJpbmRpbmcgYHdoZW4nCmZyYW1lOm9uLW5leHQgaXMgZGVwcmVj
YXRlZCwgdXNlIHdpemFyZC1iaW5kIGluc3RlYWQKZnJhbWU6YmFjay1hY3Rpdml0eSBpcyBkZXBy
ZWNhdGVkLCB1c2Ugd2l6YXJkLXVwZGF0ZS1hY3Rpdml0eSBpbnN0ZWFkCmZyYW1lOm9uLW5leHQg
aXMgZGVwcmVjYXRlZCwgdXNlIHdpemFyZC1iaW5kIGluc3RlYWQKZnJhbWU6b24tYmFjayBpcyBk
ZXByZWNhdGVkLCB1c2Ugd2l6YXJkLWJpbmQgaW5zdGVhZApmcmFtZTpiYWNrLWFjdGl2aXR5IGlz
IGRlcHJlY2F0ZWQsIHVzZSB3aXphcmQtdXBkYXRlLWFjdGl2aXR5IGluc3RlYWQKZnJhbWU6b24t
YmFjayBpcyBkZXByZWNhdGVkLCB1c2Ugd2l6YXJkLWJpbmQgaW5zdGVhZApmcmFtZTpuZXh0LWFj
dGl2aXR5IGlzIGRlcHJlY2F0ZWQsIHVzZSB3aXphcmQtdXBkYXRlLWFjdGl2aXR5IGluc3RlYWQK
ZnJhbWU6YmFjay1hY3Rpdml0eSBpcyBkZXByZWNhdGVkLCB1c2Ugd2l6YXJkLXVwZGF0ZS1hY3Rp
dml0eSBpbnN0ZWFkCmZyYW1lOm5leHQtYWN0aXZpdHkgaXMgZGVwcmVjYXRlZCwgdXNlIHdpemFy
ZC11cGRhdGUtYWN0aXZpdHkgaW5zdGVhZApmcmFtZTpiYWNrLWFjdGl2aXR5IGlzIGRlcHJlY2F0
ZWQsIHVzZSB3aXphcmQtdXBkYXRlLWFjdGl2aXR5IGluc3RlYWQKZnJhbWU6b24tbmV4dCBpcyBk
ZXByZWNhdGVkLCB1c2Ugd2l6YXJkLWJpbmQgaW5zdGVhZApFcnJvcjogKGJhY2tlbmQgbm90IGZv
dW5kOiByb290KS4gUmV0cnkgIzEKRXJyb3I6IChiYWNrZW5kIG5vdCBmb3VuZDogcm9vdCkuIFJl
dHJ5ICMyCkVycm9yOiAoYmFja2VuZCBub3QgZm91bmQ6IHJvb3QpLiBSZXRyeSAjMwpFcnJvcjog
KGJhY2tlbmQgbm90IGZvdW5kOiByb290KS4gUmV0cnkgIzQKRXJyb3I6IChiYWNrZW5kIG5vdCBm
b3VuZDogcm9vdCkuIFJldHJ5ICM1CkVycm9yOiAoYmFja2VuZCBub3QgZm91bmQ6IHJvb3QpLiBS
ZXRyeSAjNgpFcnJvcjogKGJhY2tlbmQgbm90IGZvdW5kOiByb290KS4gUmV0cnkgIzcKRXJyb3I6
IChiYWNrZW5kIG5vdCBmb3VuZDogcm9vdCkuIFJldHJ5ICM4CkVycm9yOiAoYmFja2VuZCBub3Qg
Zm91bmQ6IHJvb3QpLiBSZXRyeSAjOQpFcnJvcjogKGJhY2tlbmQgbm90IGZvdW5kOiByb290KS4g
UmV0cnkgIzEwCkVycm9yOiAoYmFja2VuZCBub3QgZm91bmQ6IHJvb3QpLiBSZXRyeSAjMTEKRXJy
b3I6IChiYWNrZW5kIG5vdCBmb3VuZDogcm9vdCkuIFJldHJ5ICMxMgpFcnJvcjogKGJhY2tlbmQg
bm90IGZvdW5kOiByb290KS4gUmV0cnkgIzEzCkVycm9yOiAoYmFja2VuZCBub3QgZm91bmQ6IHJv
b3QpLiBSZXRyeSAjMTQKRXJyb3I6IChiYWNrZW5kIG5vdCBmb3VuZDogcm9vdCkuIFJldHJ5ICMx
NQpFcnJvcjogKGJhY2tlbmQgbm90IGZvdW5kOiByb290KS4gUmV0cnkgIzE2CkVycm9yOiAoYmFj
a2VuZCBub3QgZm91bmQ6IHJvb3QpLiBSZXRyeSAjMTcKRXJyb3I6IChiYWNrZW5kIG5vdCBmb3Vu
ZDogcm9vdCkuIFJldHJ5ICMxOApFcnJvcjogKGJhY2tlbmQgbm90IGZvdW5kOiByb290KS4gUmV0
cnkgIzE5CkJhY2t0cmFjZToKSW4gaW50ZXJmYWNlcy9ndWlsZS90cmFuc3BvcnQvcGlwZS1jaGFu
bmVsLnNjbToKICAxMzogMTkgW3Byb2Nlc3MtaW5jb21pbmcgIzxwcm9jZWR1cmUgYjgyOGEwIGF0
IGludGVyZmFjZXMvZ3VpbGUvdGVsZWdyYXBoLnNjbToyMTo3IChjbWQpPiAuLi5dCkluIGludGVy
ZmFjZXMvZ3VpbGUvbG9va291dC5zY206CiAgOTY6IDE4IFsjPHByb2NlZHVyZSBiODA5ZjAgYXQg
aW50ZXJmYWNlcy9ndWlsZS9sb29rb3V0LnNjbTo5NDoyIChjbWRzIG5leHQpPiAjIC4uLl0KICA4
NDogMTcgW2xvb2tvdXQtbWFpbiAjIC4uLl0KICA2MTogMTYgW21haWxib3gtcmVxdWVzdCAjPHBy
b2NlZHVyZSBiODIwYzAgYXQgaW50ZXJmYWNlcy9ndWlsZS9vYmplY3Quc2NtOjc5OjMgYXJncz4g
Li4uXQpJbiBzcmZpL3NyZmktMS5zY206CiA2MTY6IDE1IFtmb3ItZWFjaCAjPHByb2NlZHVyZSAx
MjZhNWUwIGF0IGludGVyZmFjZXMvZ3VpbGUvbWFpbGJveC5zY206Mjg6MyAoaW5mbyk+IC4uLl0K
SW4gaW50ZXJmYWNlcy9ndWlsZS9tYWlsYm94LnNjbToKICAzNzogMTQgWyM8cHJvY2VkdXJlIDEy
NmE1ZTAgYXQgaW50ZXJmYWNlcy9ndWlsZS9tYWlsYm94LnNjbToyODozIChpbmZvKT4gI10KSW4g
aWNlLTkvZXZhbC5zY206CiA0MzI6IDEzIFtldmFsICMgI10KSW4gaW50ZXJmYWNlcy9ndWlsZS9s
b29rb3V0L2dvdG8uc2NtOgogIDY2OiAxMiBbZG9jdW1lbnQ6cmVwbGFjZS1pbi13aWRnZXQgIzxw
cm9jZWR1cmUgYWMwMzgwIGF0IGludGVyZmFjZXMvZ3VpbGUvb2JqZWN0LnNjbTo3OTozIGFyZ3M+
IC4uLl0KICAzMjogMTEgW2NsZWFuLXdpZGdldCAjPHByb2NlZHVyZSBhYzAzODAgYXQgaW50ZXJm
YWNlcy9ndWlsZS9vYmplY3Quc2NtOjc5OjMgYXJncz4gLi4uXQpJbiBpbnRlcmZhY2VzL2d1aWxl
L3ByZXNlbnRhdGlvbi9jb250YWluZXIuc2NtOgogMjEyOiAxMCBbIzxwcm9jZWR1cmUgYWMwNDQw
IChzZWxmIHRodW5rKT4gIzxwcm9jZWR1cmUgYWMwMzgwIGF0IGludGVyZmFjZXMvZ3VpbGUvb2Jq
ZWN0LnNjbTo3OTozIGFyZ3M+IC4uLl0KSW4gaWNlLTkvZXZhbC5zY206CiA0MzI6IDkgW2V2YWwg
IyAjXQogNDMyOiA4IFtldmFsICMgI10KIDQzMjogNyBbZXZhbCAjICNdCiAzODc6IDYgW2V2YWwg
IyAjXQpJbiBpbnRlcmZhY2VzL2d1aWxlL2xvZ2ZpbGUuc2NtOgogIDM3OiA1IFsjPHByb2NlZHVy
ZSBiODJhNDAgYXQgaW50ZXJmYWNlcy9ndWlsZS9sb2dmaWxlLnNjbTozNDo0IChjbWRzIG5leHQp
PiAjIC4uLl0KSW4gaW50ZXJmYWNlcy9ndWlsZS9kLnNjbToKIDIwNzogNCBbIzxwcm9jZWR1cmUg
YWMwZGMwIGF0IGludGVyZmFjZXMvZ3VpbGUvZC5zY206MjA2OjIgKGNtZHMgbmV4dCk+ICMgLi4u
XQpJbiBzcmZpL3NyZmktMS5zY206CiA2NDM6IDMgW2FwcGVuZC1tYXAgIzxwcm9jZWR1cmUgZC1x
dWVyeSAoY21kKT4gKCMpXQogNTc1OiAyIFttYXAgIzxwcm9jZWR1cmUgZC1xdWVyeSAoY21kKT4g
KCgiL3Jvb3QvZ2VuZXJhdGVfcGFzc3dvcmQiIGxhbmd1YWdlICMpKV0KSW4gaWNlLTkvYm9vdC05
LnNjbToKIDEwNTogMSBbIzxwcm9jZWR1cmUgYjdlODAwIGF0IGljZS05L2Jvb3QtOS5zY206MTAw
OjYgKHRocm93bi1rIC4gYXJncyk+IHdvby1lcnJvciAuLi5dCiAxMDk6IDAgWyM8cHJvY2VkdXJl
IGI3ZTgwMCBhdCBpY2UtOS9ib290LTkuc2NtOjEwMDo2ICh0aHJvd24tayAuIGFyZ3MpPiB3b28t
ZXJyb3IgLi4uXQoKaWNlLTkvYm9vdC05LnNjbToxMDk6MjA6IEluIHByb2NlZHVyZSAjPHByb2Nl
ZHVyZSBiN2U4MDAgYXQgaWNlLTkvYm9vdC05LnNjbToxMDA6NiAodGhyb3duLWsgLiBhcmdzKT46
CmljZS05L2Jvb3QtOS5zY206MTA5OjIwOiBUaHJvdyB0byBrZXkgYHdvby1lcnJvcicgd2l0aCBh
cmdzIGAoImJhY2tlbmQgbm90IGZvdW5kOiByb290IiknLgo8KiAoKCN0KSkKUkVUOiAoKQp4aW5p
dDogY29ubmVjdGlvbiB0byBYIHNlcnZlciBsb3N0Cgp3YWl0aW5nIGZvciBYIHNlcnZlciB0byBz
aHV0IGRvd24gKElJKSBTZXJ2ZXIgdGVybWluYXRlZCBzdWNjZXNzZnVsbHkgKDApLiBDbG9zaW5n
IGxvZyBmaWxlLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>8275</attachid>
            <date>2019-09-03 18:35:34 +0300</date>
            <delta_ts>2019-09-03 18:35:34 +0300</delta_ts>
            <desc>/var/run/alteratord/alteratord.log до обратного монтирования</desc>
            <filename>alteratord.log</filename>
            <type>text/plain</type>
            <size>4158</size>
            <attacher name="Leonid Krivoshein">klark</attacher>
            
              <data encoding="base64">KioqIE1ha2UgYSBuZXcgc2VydmVyIHNvY2tldCAqKioKTG9hZGluZyBrZXltYXA6IHJ1d2luX2N0
X3NoLVVURi04IHVua25vd24ga2V5c3ltICdjeXJpbGxpY19zbWFsbF9sZXR0ZXJfc2hvcnRfaScK
CmxrX2FkZF9rZXkgY2FsbGVkIHdpdGggYmFkIGtleWNvZGUgLTEKU2V0dGluZyBzeXN0ZW0gY2xv
Y2sgKHV0Yyk6IFsgRE9ORSBdDQpUb2RheSdzIGRhdGU6IFR1ZSBTZXAgIDMgMTU6MDU6MTAgTVNL
IDIwMTkgWyBET05FIF0NClJlYWRpbmcgUGFja2FnZSBMaXN0cy4uLgpCdWlsZGluZyBEZXBlbmRl
bmN5IFRyZWUuLi4KL3Vzci9saWIvYWx0ZXJhdG9yL2JhY2tlbmQzL3BrZy1zaXplOiBsaW5lIDYw
OiBzdGRlcnJfaGFuZGxlcjogY29tbWFuZCBub3QgZm91bmQKL3Vzci9saWIvYWx0ZXJhdG9yL2Jh
Y2tlbmQzL3BrZy1zaXplOiBsaW5lIDYwOiBzdGRlcnJfaGFuZGxlcjogY29tbWFuZCBub3QgZm91
bmQKL3Vzci9saWIvYWx0ZXJhdG9yL2JhY2tlbmQzL3BrZy1zaXplOiBsaW5lIDYwOiBzdGRlcnJf
aGFuZGxlcjogY29tbWFuZCBub3QgZm91bmQKL3Vzci9saWIvYWx0ZXJhdG9yL2JhY2tlbmQzL3Br
Zy1zaXplOiBsaW5lIDU0OiAgMzg5NyBEb25lICAgICAgICAgICAgICAgICAgICBlY2hvICJuIgog
ICAgICAzODk4IEtpbGxlZCAgICAgICAgICAgICAgICAgIHwgYXB0LWdldCAtLXNpbXBsZS1vdXRw
dXQgaW5zdGFsbCAtLW1hbmlmZXN0ICIkdG1wZmlsZSIgMj4+IC90bXAvaW5zdGFsbDIubG9nCnBy
ZWluc3RhbGw6IHdyaXRlIGluaXQKMTU6MTI6NDcgL21udC9kZXN0aW5hdGlvbi8vdXNyL3NoYXJl
L2luc3RhbGwyL3ByZWluc3RhbGwuZC8zMC1zZXR1cC1uZXR3b3JrLnNoIC0gT0sKMTU6MTI6NDcg
L3Vzci9zaGFyZS9pbnN0YWxsMi9wcmVpbnN0YWxsLmQvMDUtY29weS11ZGV2LXJ1bGVzLnNoIC0g
T0sKMTU6MTI6NDcgL3Vzci9zaGFyZS9pbnN0YWxsMi9wcmVpbnN0YWxsLmQvMDgtY3J5cHR0YWIu
c2ggLSBPSwoxNToxMjo0NyAvdXNyL3NoYXJlL2luc3RhbGwyL3ByZWluc3RhbGwuZC8xMC14b3Jn
LnNoIC0gT0sKMTU6MTI6NDcgL3Vzci9zaGFyZS9pbnN0YWxsMi9wcmVpbnN0YWxsLmQvMjAtbW92
ZS1mcy5zaCAtIE9LCjE1OjEyOjQ3IC91c3Ivc2hhcmUvaW5zdGFsbDIvcHJlaW5zdGFsbC5kLzIw
LXNldHVwLXBseW1vdXRoMS5zaCAtIE9LCjE1OjEyOjQ3IC91c3Ivc2hhcmUvaW5zdGFsbDIvcHJl
aW5zdGFsbC5kLzIwLXN5c2NvbmZpZy5zaCAtIE9LCjE1OjEyOjQ3IC91c3Ivc2hhcmUvaW5zdGFs
bDIvcHJlaW5zdGFsbC5kLzIwLXN5c3RlbWQuc2ggLSBPSwoxNToxMjo0NyAvdXNyL3NoYXJlL2lu
c3RhbGwyL3ByZWluc3RhbGwuZC8zMS1lbmFibGUtbmV0d29ya21hbmFnZXIuc2ggLSBPSwoxNTox
Mjo0NyAvdXNyL3NoYXJlL2luc3RhbGwyL3ByZWluc3RhbGwuZC80MC1hZGQtcGFydGl0aW9ucyAt
IE9LCjE1OjEyOjQ3IC91c3Ivc2hhcmUvaW5zdGFsbDIvcHJlaW5zdGFsbC5kLzQwLWF1dG9ob3N0
bmFtZS5zaCAtIE9LCjE1OjEyOjQ4IC91c3Ivc2hhcmUvaW5zdGFsbDIvcHJlaW5zdGFsbC5kLzQ1
LW1kYWRtLnNoIC0gT0sKQ29uZmlnIGZpbGU6IC9ldGMvaW5pdHJkLm1rCkdlbmVyYXRpbmcgbW9k
dWxlIGRlcGVuZGVuY2llcyBvbiBob3N0IC4uLgpDcmVhdGluZyBpbml0cmQgaW1hZ2UgLi4uCkFk
ZGluZyBwbHltb3V0aCBzdXBwb3J0IC4uLgpBZGRpbmcgbW9kdWxlcyAuLi4KQWRkaW5nIG1vZHVs
ZXMgKHByZWxvYWQpIC4uLgpBZGRpbmcgcmVzY3VlIG1vZHVsZXMgLi4uCkFkZGluZyBtb2R1bGUg
ZGVwZW5kZW5jaWVzIC4uLgpHZW5lcmF0aW5nIG1vZHVsZSBkZXBlbmRlbmNpZXMgaW4gaW1hZ2Ug
Li4uClBhY2tlZCBtb2R1bGVzOiBhaGNpIGF1dG9mczQgY3JjMTYgZXZkZXYgZXh0NCBoaWQgaGlk
LWdlbmVyaWMgaW5wdXQtbGVkcyBpbnRlbC1hZ3AgaW50ZWwtZ3R0IGpiZDIgbGliYWhjaSBsaWJh
dGEgbWJjYWNoZSBzY3NpX21vZCBzZF9tb2Qgc2lzLWFncCB1c2ItY29tbW9uIHVzYmNvcmUgdXNi
aGlkIHVzYmtiZCB1c2Jtb3VzZSB2aWEtYWdwIHhoY2ktaGNkIHhoY2ktcGNpIApQYWNraW5nIGlt
YWdlIHRvIGFyY2hpdmUgLi4uCkNvbXByZXNzaW5nIGltYWdlIC4uLgpJbnN0YWxsaW5nIGltYWdl
IC4uLgpSZW1vdmluZyB3b3JrIGRpcmVjdG9yeSAuLi4KCkltYWdlIGlzIHNhdmVkIGFzIC9ib290
L2luaXRyZC00LjQuODYtc3RkLWRlZi1hbHQwLk04MEMuMS5pbWcKCjE1OjEzOjA2IC91c3Ivc2hh
cmUvaW5zdGFsbDIvcHJlaW5zdGFsbC5kLzUwLWluaXRyZC5zaCAtIE9LCk5vdGU6IEZvcndhcmRp
bmcgcmVxdWVzdCB0byAnc3lzdGVtY3RsIGVuYWJsZSBycGNiaW5kLnNlcnZpY2UnLgpTeW5jaHJv
bml6aW5nIHN0YXRlIG9mIHJwY2JpbmQuc2VydmljZSB3aXRoIFN5c1Ygc2VydmljZSBzY3JpcHQg
d2l0aCAvbGliL3N5c3RlbWQvc3lzdGVtZC1zeXN2LWluc3RhbGwuCkV4ZWN1dGluZzogL2xpYi9z
eXN0ZW1kL3N5c3RlbWQtc3lzdi1pbnN0YWxsIGVuYWJsZSBycGNiaW5kCkNyZWF0ZWQgc3ltbGlu
ayAvZXRjL3N5c3RlbWQvc3lzdGVtL3NvY2tldHMudGFyZ2V0LndhbnRzL3JwY2JpbmQuc29ja2V0
IOKGkiAvbGliL3N5c3RlbWQvc3lzdGVtL3JwY2JpbmQuc29ja2V0LgpOb3RlOiBGb3J3YXJkaW5n
IHJlcXVlc3QgdG8gJ3N5c3RlbWN0bCBlbmFibGUgcnBjLXN0YXRkLnNlcnZpY2UnLgpUaGUgdW5p
dCBmaWxlcyBoYXZlIG5vIGluc3RhbGxhdGlvbiBjb25maWcgKFdhbnRlZEJ5LCBSZXF1aXJlZEJ5
LCBBbHNvLCBBbGlhcwpzZXR0aW5ncyBpbiB0aGUgW0luc3RhbGxdIHNlY3Rpb24sIGFuZCBEZWZh
dWx0SW5zdGFuY2UgZm9yIHRlbXBsYXRlIHVuaXRzKS4KVGhpcyBtZWFucyB0aGV5IGFyZSBub3Qg
bWVhbnQgdG8gYmUgZW5hYmxlZCB1c2luZyBzeXN0ZW1jdGwuClBvc3NpYmxlIHJlYXNvbnMgZm9y
IGhhdmluZyB0aGlzIGtpbmQgb2YgdW5pdHMgYXJlOgoxKSBBIHVuaXQgbWF5IGJlIHN0YXRpY2Fs
bHkgZW5hYmxlZCBieSBiZWluZyBzeW1saW5rZWQgZnJvbSBhbm90aGVyIHVuaXQncwogICAud2Fu
dHMvIG9yIC5yZXF1aXJlcy8gZGlyZWN0b3J5LgoyKSBBIHVuaXQncyBwdXJwb3NlIG1heSBiZSB0
byBhY3QgYXMgYSBoZWxwZXIgZm9yIHNvbWUgb3RoZXIgdW5pdCB3aGljaCBoYXMKICAgYSByZXF1
aXJlbWVudCBkZXBlbmRlbmN5IG9uIGl0LgozKSBBIHVuaXQgbWF5IGJlIHN0YXJ0ZWQgd2hlbiBu
ZWVkZWQgdmlhIGFjdGl2YXRpb24gKHNvY2tldCwgcGF0aCwgdGltZXIsCiAgIEQtQnVzLCB1ZGV2
LCBzY3JpcHRlZCBzeXN0ZW1jdGwgY2FsbCwgLi4uKS4KNCkgSW4gY2FzZSBvZiB0ZW1wbGF0ZSB1
bml0cywgdGhlIHVuaXQgaXMgbWVhbnQgdG8gYmUgZW5hYmxlZCB3aXRoIHNvbWUKICAgaW5zdGFu
Y2UgbmFtZSBzcGVjaWZpZWQuCjE1OjEzOjA2IC91c3Ivc2hhcmUvaW5zdGFsbDIvcHJlaW5zdGFs
bC5kLzcwLW5ldHdvcmstc2hhcmVzLnNoIC0gT0sKMTU6MTM6MDYgL3Vzci9zaGFyZS9pbnN0YWxs
Mi9wcmVpbnN0YWxsLmQvNzAtc2V0dXAtcmVzdW1lIC0gT0sKMTU6MTM6MDYgL3Vzci9zaGFyZS9p
bnN0YWxsMi9wcmVpbnN0YWxsLmQvNzEtY29weS1jbWRsaW5lLXBhcmFtZXRlcnMuc2ggLSBPSwox
NToxMzowNiAvdXNyL3NoYXJlL2luc3RhbGwyL3ByZWluc3RhbGwuZC84MC1zZXR1cC11c2VyLWdy
b3VwcyAtIE9LCjE1OjEzOjA2IC91c3Ivc2hhcmUvaW5zdGFsbDIvcHJlaW5zdGFsbC5kLzkwLWVu
YWJsZS10dW4uc2ggLSBPSwoxIGJsb2NrCjE1OjEzOjA2IC91c3Ivc2hhcmUvaW5zdGFsbDIvcHJl
aW5zdGFsbC5kLzkwLXNldHVwLWJvb3Rsb2FkZXIuc2ggLSBPSwoxNToxMzowNiAvdXNyL3NoYXJl
L2luc3RhbGwyL3ByZWluc3RhbGwuZC85MC1zZXR1cC1wbHltb3V0aDIuc2ggLSBPSwoxKzAgcmVj
b3JkcyBpbgoxKzAgcmVjb3JkcyBvdXQKMSBieXRlICgxIEIpIGNvcGllZCwgMi42NTgxZS0wNSBz
LCAzNy42IGtCL3MKMTU6MTM6MTUgL3Vzci9zaGFyZS9pbnN0YWxsMi9wcmVpbnN0YWxsLmQvOTkt
Y2Ryb20uc2ggLSBPSwovdXNyL2Jpbi9hbHRlcmF0b3Itc2gtZnVuY3Rpb25zOiBsaW5lIDExMzog
ZXhpdF9oYW5kbGVyOiBjb21tYW5kIG5vdCBmb3VuZAovdXNyL2xpYi9hbHRlcmF0b3IvYmFja2Vu
ZDMvcGtnLXNpemU6IGxpbmUgOTg6IGV4aXRfaGFuZGxlcjogY29tbWFuZCBub3QgZm91bmQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>8279</attachid>
            <date>2019-09-05 15:40:37 +0300</date>
            <delta_ts>2019-09-05 15:40:37 +0300</delta_ts>
            <desc>/usr/lib/alterator/backend3/preinstall использованный для отладки</desc>
            <filename>preinstall</filename>
            <type>application/octet-stream</type>
            <size>2904</size>
            <attacher name="Leonid Krivoshein">klark</attacher>
            
              <data encoding="base64">IyEvYmluL3NoCiMgKioqKiogQkVHSU4gTElDRU5TRSBCTE9DSyAqKioqKgojICogQ29weXJpZ2h0
IChDKSAyMDA3ICBBbGV4ZXkgR2xhZGtvdiA8bGVnaW9uQGFsdGxpbnV4Lm9yZz4KIyAqIENvcHly
aWdodCAoQykgMjAwNyAgRG1pdHJ5IFYuIExldmluIDxsZHZAYWx0bGludXgub3JnPgojICogQ29w
eXJpZ2h0IChDKSAyMDA3ICBBbnRvbiBWLiBCb3lhcnNoaW5vdiA8Ym95YXJzaEBhbHRsaW51eC5v
cmc+CiMgKgojICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojICog
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyAqCiMgKiBUaGlzIHByb2dyYW0g
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCiMgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuIFNlZSB0aGUKIyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCiMgKgojICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKIyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3Qs
IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgojICoqKioq
IEVORCBMSUNFTlNFIEJMT0NLICoqKioqCgphbHRlcmF0b3JfYXBpX3ZlcnNpb249MQpwcmVpbnN0
YWxsX2Rpcj0iL3Vzci9zaGFyZS9pbnN0YWxsMi9wcmVpbnN0YWxsLmQiCmFsdGVyYXRvcmRfc29j
a2V0X2Rpcj0iL3Zhci9ydW4vYWx0ZXJhdG9yZCIKCi4gYWx0ZXJhdG9yLXNoLWZ1bmN0aW9ucwou
IGluc3RhbGwyLXNoLWZ1bmN0aW9ucwouIGluc3RhbGwyLXJlbW91bnQtZnVuY3Rpb25zCgpQUk9H
PXByZWluc3RhbGwKCm5vdGlmeSgpCnsKCVsgLXogIiRBVVRPSU5TVEFMTCIgXSB8fCByZXR1cm4g
MAoJYWx0ZXJhdG9yLW1haWxib3gtc2VuZCAiJDEiIHx8Ogp9CgpydW5fcHJlaW5zdGFsbCgpCnsK
CWlmICEgcmVtb3VudF9jaHJvb3QgPiYyOyB0aGVuCgkJbm90aWZ5ICJlcnJvciBcImRlc3RpbmF0
aW9uIGZpbGVzeXN0ZW0gcmVtb3VudCBlcnJvclwiIgoJZmkKCglsb2NhbCBmIG1heCBjb3VudGVy
PTAKCW1heD0iJChmaW5kICIkcHJlaW5zdGFsbF9kaXIiICIkZGVzdGRpci8kcHJlaW5zdGFsbF9k
aXIiIC1taW5kZXB0aCAxIC1tYXhkZXB0aCAxIC10eXBlIGYgLXBlcm0gLXU9eCB8d2MgLWwpIgoK
CW5vdGlmeSAiaW5pdCAjdCBtYXggJG1heCIKCgkjIHJ1biBzY3JpcHRzIGZyb20gcGFja2FnZXMg
Zmlyc3QsIGJlY2F1c2UgYmFzaWMgaW5zdGFsbGVyIHNjcmlwdHMgY2FuIHVtb3VudCAvaW1hZ2UK
CWZvciBmIGluICIkZGVzdGRpci8kcHJlaW5zdGFsbF9kaXIiLyogIiRwcmVpbnN0YWxsX2RpciIv
KjsgZG8KCQlbIC1mICIkZiIgLWEgLXggIiRmIiBdIHx8IGNvbnRpbnVlCgoJCWlmICIkZiIgPiYy
OyB0aGVuCgkJICAgIG5vdGlmeSAicGFja2FnZSBcIiR7ZiMjKi99XCIgc3RlcCAkY291bnRlciIK
CQkgICAgY291bnRlcj0kKCgkY291bnRlciArIDEpKQoJCSAgICBwcmludGYgJyVzICVzIC0gT0tc
bicgIiQoZGF0ZSArJVQpIiAiJGYiID4mMgoJCWVsc2UKCQkgICAgbm90aWZ5ICJlcnJvciBcIiR7
ZiMjKi99XCIiCgkJICAgIHByaW50ZiAnJXMgJXMgLSBGQUlMRURcbicgIiQoZGF0ZSArJVQpIiAi
JGYiID4mMgoJCSAgICBicmVhawoJCWZpCglkb25lCgoJbm90aWZ5ICJwYWNrYWdlIFwiIFwiIHN0
ZXAgJG1heCIKCgkjIHJlcGxhY2UgaXRzZWxmIHdpdGggYWx0ZXJhdG9yZCBmcm9tIGNocm9vdAoJ
IyBbIC1uICIke0FMVEVSQVRPUl9ERVNURElSOi19IiBdIHx8IHJldHVybgoJc2V0IC14Cgltb3Vu
dCAtLWJpbmQgL3J1biAkZGVzdGRpci9ydW4KCW1rZGlyIC1wIC0tICRkZXN0ZGlyL3RtcC9hbHRl
cmF0b3IKCXJtIC1mICRhbHRlcmF0b3JkX3NvY2tldF9kaXIvLnNvY2tldAoJY2hyb290ICRkZXN0
ZGlyIC9ldGMvaW5pdC5kL2FsdGVyYXRvcmQgc3RhcnQKCSMgbW91bnQgLS1iaW5kICRkZXN0ZGly
JGFsdGVyYXRvcmRfc29ja2V0X2RpciAkYWx0ZXJhdG9yZF9zb2NrZXRfZGlyCgoJIyB3YWl0IHVu
dGlsIG5ldyBhbHRlcmF0b3JkIGlzIHJlYWR5IHRvIHVzZQoJd2hpbGUgISBhbHRlcmF0b3Itd2Fp
dCA+L2Rldi9udWxsIDI+JjE7IGRvIHNsZWVwIDE7IGRvbmUKCgkjIG5vdGlmeSBpbnRlcmZhY2Ug
YWJvdXQgZmluaXNoCgltb3VudCAtLWJpbmQgL3RtcC9hbHRlcmF0b3IgJGRlc3RkaXIvdG1wL2Fs
dGVyYXRvcgoJbm90aWZ5ICJkb25lICN0IgoJc3luYwoKCSMgc3RvcCBvbGQgYWx0ZXJhdG9yZCBh
bmQga2lsbCBpdHNlbGYKCXNsZWVwIDEKCSNzZXJ2aWNlIGFsdGVyYXRvcmQgc3RvcAp9Cgpvbl9t
ZXNzYWdlKCkKewogICAgICAgIGNhc2UgIiRpbl9hY3Rpb24iIGluCiAgICAgICAgCXdyaXRlKQoJ
CQllY2hvICIkUFJPRzogd3JpdGUgaW5pdCIgPiYyCgkJCWlmIFsgLXogIiRBVVRPSU5TVEFMTCIg
XTsgdGhlbgoJCQkJcnVuX3ByZWluc3RhbGwgJgoJCQllbHNlCgkJCQlydW5fcHJlaW5zdGFsbAoJ
CQlmaQogICAgICAgICAgICAgICAgICAgICAgICA7OwoJZXNhYwp9CgptZXNzYWdlX2xvb3AK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>8280</attachid>
            <date>2019-09-05 15:44:04 +0300</date>
            <delta_ts>2019-09-05 15:44:04 +0300</delta_ts>
            <desc>strace момента падения: процесс alteratord</desc>
            <filename>strace-daemon.log</filename>
            <type>text/plain</type>
            <size>400</size>
            <attacher name="Leonid Krivoshein">klark</attacher>
            
              <data encoding="base64">NzExICAgcmVhZCg4LCAgPHVuZmluaXNoZWQgLi4uPgo2ODEgICBzZWxlY3QoMTMsIFsxMl0sIE5V
TEwsIE5VTEwsIHt0dl9zZWM9NywgdHZfdXNlYz0xMzgxOX0pID0gMCAoVGltZW91dCkKNjgxICAg
c2VsZWN0KDEzLCBbMTJdLCBOVUxMLCBOVUxMLCB7dHZfc2VjPTEwLCB0dl91c2VjPTB9KSA9IDAg
KFRpbWVvdXQpCjY4MSAgIHNlbGVjdCgxMywgWzEyXSwgTlVMTCwgTlVMTCwge3R2X3NlYz0xMCwg
dHZfdXNlYz0wfSkgPSAwIChUaW1lb3V0KQo2ODEgICBzZWxlY3QoMTMsIFsxMl0sIE5VTEwsIE5V
TEwsIHt0dl9zZWM9MTAsIHR2X3VzZWM9MH0pID0gMCAoVGltZW91dCkKNjgxICAgc2VsZWN0KDEz
LCBbMTJdLCBOVUxMLCBOVUxMLCB7dHZfc2VjPTEwLCB0dl91c2VjPTB9IDxkZXRhY2hlZCAuLi4+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>8281</attachid>
            <date>2019-09-05 15:45:42 +0300</date>
            <delta_ts>2019-09-05 15:45:42 +0300</delta_ts>
            <desc>strace момента падения: процесс alterator-qt-browser</desc>
            <filename>strace-browser.log</filename>
            <type>text/plain</type>
            <size>3198</size>
            <attacher name="Leonid Krivoshein">klark</attacher>
            
              <data encoding="base64">Nzk4ICAgcmVzdGFydF9zeXNjYWxsKDwuLi4gcmVzdW1pbmcgaW50ZXJydXB0ZWQgcG9sbCAuLi4+
IDx1bmZpbmlzaGVkIC4uLj4KNzk3ICAgcmVzdGFydF9zeXNjYWxsKDwuLi4gcmVzdW1pbmcgaW50
ZXJydXB0ZWQgcG9sbCAuLi4+KSA9IDEKNzk3ICAgcmVjdm1zZyg4LCB7bXNnX25hbWVsZW49MH0s
IDApICAgID0gLTEgRUFHQUlOIChSZXNvdXJjZSB0ZW1wb3JhcmlseSB1bmF2YWlsYWJsZSkKNzk3
ICAgYWNjZXB0NCg5LCB7c2FfZmFtaWx5PUFGX1VOSVh9LCBbMTEwLT4yXSwgU09DS19DTE9FWEVD
KSA9IDExCjc5NyAgIGZjbnRsKDExLCBGX0dFVEZMKSAgICAgICAgICAgICAgICA9IDB4MiAoZmxh
Z3MgT19SRFdSKQo3OTcgICBsc2VlaygxMSwgMCwgU0VFS19DVVIpICAgICAgICAgICAgPSAtMSBF
U1BJUEUgKElsbGVnYWwgc2VlaykKNzk3ICAgZnN0YXQoMTEsIHtzdF9tb2RlPVNfSUZTT0NLfDA3
NzcsIHN0X3NpemU9MCwgLi4ufSkgPSAwCjc5NyAgIGZjbnRsKDExLCBGX0dFVEZMKSAgICAgICAg
ICAgICAgICA9IDB4MiAoZmxhZ3MgT19SRFdSKQo3OTcgICBmY250bCgxMSwgRl9TRVRGTCwgT19S
RFdSfE9fTk9OQkxPQ0spID0gMAo3OTcgICBmc3RhdCgxMSwge3N0X21vZGU9U19JRlNPQ0t8MDc3
Nywgc3Rfc2l6ZT0wLCAuLi59KSA9IDAKNzk3ICAgcmVhZCgxMSwgImRvbmUgI3QiLCAxNjM4NCkg
ICAgICAgID0gNwo3OTcgICByZWFkKDExLCAiIiwgMTIyODgpICAgICAgICAgICAgICAgPSAwCjc5
NyAgIGZjbnRsKDExLCBGX1NFVEZMLCBPX1JEV1IpICAgICAgICA9IDAKNzk3ICAgZmNudGwoMTEs
IEZfR0VURkwpICAgICAgICAgICAgICAgID0gMHgyIChmbGFncyBPX1JEV1IpCjc5NyAgIGZjbnRs
KDExLCBGX1NFVEZMLCBPX1JEV1J8T19OT05CTE9DSykgPSAwCjc5NyAgIHJlYWQoMTEsICIiLCAx
NjM4NCkgICAgICAgICAgICAgICA9IDAKNzk3ICAgZmNudGwoMTEsIEZfU0VURkwsIE9fUkRXUikg
ICAgICAgID0gMAo3OTcgICByZWFkKDExLCAiIiwgNDA5NikgICAgICAgICAgICAgICAgPSAwCjc5
NyAgIGZjbnRsKDExLCBGX1NFVEZMLCBPX1JEV1IpICAgICAgICA9IDAKNzk3ICAgd3JpdGUoMTAs
ICJcMVwwXDBcMFwwXDBcMFwwIiwgOCkgID0gOAo3OTcgICBnZXRzb2NrbmFtZSgxMSwge3NhX2Zh
bWlseT1BRl9VTklYLCBzdW5fcGF0aD0iL3RtcC9hbHRlcmF0b3IvYnJvd3Nlci1zb2NrIn0sIFsx
MjgtPjMwXSkgPSAwCjc5NyAgIGdldHBlZXJuYW1lKDExLCB7c2FfZmFtaWx5PUFGX1VOSVh9LCBb
MzAtPjJdKSA9IDAKNzk3ICAgZ2V0c29ja29wdCgxMSwgU09MX1NPQ0tFVCwgU09fVFlQRSwgWzFd
LCBbNF0pID0gMAo3OTcgICBmY250bCgxMSwgRl9HRVRGTCkgICAgICAgICAgICAgICAgPSAweDIg
KGZsYWdzIE9fUkRXUikKNzk3ICAgZmNudGwoMTEsIEZfU0VURkwsIE9fUkRXUnxPX05PTkJMT0NL
KSA9IDAKNzk3ICAgcmVjdm1zZyg4LCB7bXNnX25hbWVsZW49MH0sIDApICAgID0gLTEgRUFHQUlO
IChSZXNvdXJjZSB0ZW1wb3JhcmlseSB1bmF2YWlsYWJsZSkKNzk3ICAgcG9sbChbe2ZkPTUsIGV2
ZW50cz1QT0xMSU59LCB7ZmQ9OCwgZXZlbnRzPVBPTExJTn0sIHtmZD05LCBldmVudHM9UE9MTElO
fSwge2ZkPTExLCBldmVudHM9UE9MTElOfV0sIDQsIDY5NDIpID0gMSAoW3tmZD0xMSwgcmV2ZW50
cz1QT0xMSU58UE9MTEhVUH1dKQo3OTcgICByZWN2bXNnKDgsIHttc2dfbmFtZWxlbj0wfSwgMCkg
ICAgPSAtMSBFQUdBSU4gKFJlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlKQo3OTcgICBp
b2N0bCgxMSwgRklPTlJFQUQsIFswXSkgICAgICAgICAgPSAwCjc5NyAgIHJlYWQoMTEsICIiLCA0
MDk2KSAgICAgICAgICAgICAgICA9IDAKNzk3ICAgY2xvc2UoMTEpICAgICAgICAgICAgICAgICAg
ICAgICAgID0gMAo3OTcgICB3cml0ZSg1LCAiXDFcMFwwXDBcMFwwXDBcMCIsIDgpICAgPSA4Cjc5
NyAgIHJlY3Ztc2coOCwge21zZ19uYW1lbGVuPTB9LCAwKSAgICA9IC0xIEVBR0FJTiAoUmVzb3Vy
Y2UgdGVtcG9yYXJpbHkgdW5hdmFpbGFibGUpCjc5NyAgIHBvbGwoW3tmZD01LCBldmVudHM9UE9M
TElOfSwge2ZkPTgsIGV2ZW50cz1QT0xMSU59LCB7ZmQ9OSwgZXZlbnRzPVBPTExJTn1dLCAzLCAw
KSA9IDEgKFt7ZmQ9NSwgcmV2ZW50cz1QT0xMSU59XSkKNzk3ICAgcmVhZCg1LCAiXDFcMFwwXDBc
MFwwXDBcMCIsIDE2KSAgID0gOAo3OTcgICByZWN2bXNnKDgsIHttc2dfbmFtZWxlbj0wfSwgMCkg
ICAgPSAtMSBFQUdBSU4gKFJlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlKQo3OTcgICBy
ZWN2bXNnKDgsIHttc2dfbmFtZWxlbj0wfSwgMCkgICAgPSAtMSBFQUdBSU4gKFJlc291cmNlIHRl
bXBvcmFyaWx5IHVuYXZhaWxhYmxlKQo3OTcgICBwb2xsKFt7ZmQ9NSwgZXZlbnRzPVBPTExJTn0s
IHtmZD04LCBldmVudHM9UE9MTElOfSwge2ZkPTksIGV2ZW50cz1QT0xMSU59XSwgMywgNjk0MiA8
dW5maW5pc2hlZCAuLi4+Cjc5OCAgIDwuLi4gcmVzdGFydF9zeXNjYWxsIHJlc3VtZWQ+ICkgICA9
IDEKNzk4ICAgcmVhZCgxMCwgIlwxXDBcMFwwXDBcMFwwXDAiLCAxNikgID0gOAo3OTggICB3cml0
ZSgxLCAiKGF1dGgtcmVxdWVzdCB1c2VyIFwiYW5vbnltb3VzXCIgcyIuLi4sIDg4KSA9IDg4Cjc5
OCAgIGxzZWVrKDAsIDAsIFNFRUtfQ1VSKSAgICAgICAgICAgICA9IC0xIEVTUElQRSAoSWxsZWdh
bCBzZWVrKQo3OTggICBmc3RhdCgwLCB7c3RfbW9kZT1TX0lGSUZPfDA2MDAsIHN0X3NpemU9MCwg
Li4ufSkgPSAwCjc5OCAgIGZjbnRsKDAsIEZfR0VURkwpICAgICAgICAgICAgICAgICA9IDAgKGZs
YWdzIE9fUkRPTkxZKQo3OTggICBmY250bCgwLCBGX1NFVEZMLCBPX1JET05MWXxPX05PTkJMT0NL
KSA9IDAKNzk4ICAgcmVhZCgwLCAweDdmMjVhYzc0M2E4MCwgMTYzODQpICAgID0gLTEgRUFHQUlO
IChSZXNvdXJjZSB0ZW1wb3JhcmlseSB1bmF2YWlsYWJsZSkKNzk4ICAgZmNudGwoMCwgRl9TRVRG
TCwgT19SRE9OTFkpICAgICAgID0gMAo3OTggICByZWFkKDAsICIiLCA0MDk2KSAgICAgICAgICAg
ICAgICAgPSAwCjc5OCAgIC0tLSBTSUdIVVAge3NpX3NpZ25vPVNJR0hVUCwgc2lfY29kZT1TSV9L
RVJORUx9IC0tLQo3OTggICArKysga2lsbGVkIGJ5IFNJR0hVUCArKysKNzk3ICAgPC4uLiBwb2xs
IHJlc3VtZWQ+IDx1bmZpbmlzaGVkIC4uLj4pID0gPwo3OTcgICArKysga2lsbGVkIGJ5IFNJR0hV
UCArKysK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>8282</attachid>
            <date>2019-09-05 15:48:11 +0300</date>
            <delta_ts>2019-09-05 15:48:11 +0300</delta_ts>
            <desc>strace момента падения: процесс alterator-wizard</desc>
            <filename>strace-wizard.log</filename>
            <type>text/plain</type>
            <size>3357</size>
            <attacher name="Leonid Krivoshein">klark</attacher>
            
              <data encoding="base64">MTQwMyAgcmVhZCg5LCAgPHVuZmluaXNoZWQgLi4uPgo3OTAgICBzZWxlY3QoNywgWzMgNl0sIE5V
TEwsIE5VTEwsIE5VTEwpID0gMSAoaW4gWzZdKQo3OTAgICByZWFkKDYsICIoYXV0aC1yZXF1ZXN0
IHVzZXIgXCJhbm9ueW1vdXNcIiBzIi4uLiwgNDA5NikgPSA4OAo3OTAgICBhY2Nlc3MoIi91c3Iv
c2hhcmUvbG9jYWxlL3J1L0xDX01FU1NBR0VTL2FsdGVyYXRvci13aXphcmQubW8iLCBSX09LKSA9
IDAKNzkwICAgb3BlbigiL3Vzci9saWIvbG9jYWxlL3J1X1JVLnV0ZjgvTENfQ1RZUEUiLCBPX1JE
T05MWXxPX0NMT0VYRUMpID0gMTUKNzkwICAgZnN0YXQoMTUsIHtzdF9tb2RlPVNfSUZSRUd8MDY0
NCwgc3Rfc2l6ZT0zMTc2OTIsIC4uLn0pID0gMAo3OTAgICBtbWFwKE5VTEwsIDMxNzY5MiwgUFJP
VF9SRUFELCBNQVBfUFJJVkFURSwgMTUsIDApID0gMHg3ZjdlNGU4YTQwMDAKNzkwICAgY2xvc2Uo
MTUpICAgICAgICAgICAgICAgICAgICAgICAgID0gMAo3OTAgICBvcGVuKCIvdXNyL2xpYi9sb2Nh
bGUvcnVfUlUudXRmOC9MQ19NRVNTQUdFUyIsIE9fUkRPTkxZfE9fQ0xPRVhFQykgPSAxNQo3OTAg
ICBmc3RhdCgxNSwge3N0X21vZGU9U19JRkRJUnwwNzU1LCBzdF9zaXplPTM4LCAuLi59KSA9IDAK
NzkwICAgY2xvc2UoMTUpICAgICAgICAgICAgICAgICAgICAgICAgID0gMAo3OTAgICBvcGVuKCIv
dXNyL2xpYi9sb2NhbGUvcnVfUlUudXRmOC9MQ19NRVNTQUdFUy9TWVNfTENfTUVTU0FHRVMiLCBP
X1JET05MWXxPX0NMT0VYRUMpID0gMTUKNzkwICAgZnN0YXQoMTUsIHtzdF9tb2RlPVNfSUZSRUd8
MDY0NCwgc3Rfc2l6ZT02MCwgLi4ufSkgPSAwCjc5MCAgIG1tYXAoTlVMTCwgNjAsIFBST1RfUkVB
RCwgTUFQX1BSSVZBVEUsIDE1LCAwKSA9IDB4N2Y3ZTRlYTU0MDAwCjc5MCAgIGNsb3NlKDE1KSAg
ICAgICAgICAgICAgICAgICAgICAgICA9IDAKNzkwICAgbXVubWFwKDB4N2Y3ZTRlOGE0MDAwLCAz
MTc2OTIpICAgID0gMAo3OTAgICBtdW5tYXAoMHg3ZjdlNGVhNTQwMDAsIDYwKSAgICAgICAgPSAw
Cjc5MCAgIG9wZW4oIi91c3IvbGliL2xvY2FsZS9ydV9SVS51dGY4L0xDX0NUWVBFIiwgT19SRE9O
TFl8T19DTE9FWEVDKSA9IDE1Cjc5MCAgIGZzdGF0KDE1LCB7c3RfbW9kZT1TX0lGUkVHfDA2NDQs
IHN0X3NpemU9MzE3NjkyLCAuLi59KSA9IDAKNzkwICAgbW1hcChOVUxMLCAzMTc2OTIsIFBST1Rf
UkVBRCwgTUFQX1BSSVZBVEUsIDE1LCAwKSA9IDB4N2Y3ZTRlOGE0MDAwCjc5MCAgIGNsb3NlKDE1
KSAgICAgICAgICAgICAgICAgICAgICAgICA9IDAKNzkwICAgb3BlbigiL3Vzci9saWIvbG9jYWxl
L3J1X1JVLnV0ZjgvTENfTUVTU0FHRVMiLCBPX1JET05MWXxPX0NMT0VYRUMpID0gMTUKNzkwICAg
ZnN0YXQoMTUsIHtzdF9tb2RlPVNfSUZESVJ8MDc1NSwgc3Rfc2l6ZT0zOCwgLi4ufSkgPSAwCjc5
MCAgIGNsb3NlKDE1KSAgICAgICAgICAgICAgICAgICAgICAgICA9IDAKNzkwICAgb3BlbigiL3Vz
ci9saWIvbG9jYWxlL3J1X1JVLnV0ZjgvTENfTUVTU0FHRVMvU1lTX0xDX01FU1NBR0VTIiwgT19S
RE9OTFl8T19DTE9FWEVDKSA9IDE1Cjc5MCAgIGZzdGF0KDE1LCB7c3RfbW9kZT1TX0lGUkVHfDA2
NDQsIHN0X3NpemU9NjAsIC4uLn0pID0gMAo3OTAgICBtbWFwKE5VTEwsIDYwLCBQUk9UX1JFQUQs
IE1BUF9QUklWQVRFLCAxNSwgMCkgPSAweDdmN2U0ZWE1NDAwMAo3OTAgICBjbG9zZSgxNSkgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAwCjc5MCAgIG11bm1hcCgweDdmN2U0ZThhNDAwMCwgMzE3
NjkyKSAgICA9IDAKNzkwICAgbXVubWFwKDB4N2Y3ZTRlYTU0MDAwLCA2MCkgICAgICAgID0gMAo3
OTAgICBvcGVuKCIvdXNyL2xpYi9sb2NhbGUvcnVfUlUudXRmOC9MQ19DVFlQRSIsIE9fUkRPTkxZ
fE9fQ0xPRVhFQykgPSAxNQo3OTAgICBmc3RhdCgxNSwge3N0X21vZGU9U19JRlJFR3wwNjQ0LCBz
dF9zaXplPTMxNzY5MiwgLi4ufSkgPSAwCjc5MCAgIG1tYXAoTlVMTCwgMzE3NjkyLCBQUk9UX1JF
QUQsIE1BUF9QUklWQVRFLCAxNSwgMCkgPSAweDdmN2U0ZThhNDAwMAo3OTAgICBjbG9zZSgxNSkg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAwCjc5MCAgIG9wZW4oIi91c3IvbGliL2xvY2FsZS9y
dV9SVS51dGY4L0xDX01FU1NBR0VTIiwgT19SRE9OTFl8T19DTE9FWEVDKSA9IDE1Cjc5MCAgIGZz
dGF0KDE1LCB7c3RfbW9kZT1TX0lGRElSfDA3NTUsIHN0X3NpemU9MzgsIC4uLn0pID0gMAo3OTAg
ICBjbG9zZSgxNSkgICAgICAgICAgICAgICAgICAgICAgICAgPSAwCjc5MCAgIG9wZW4oIi91c3Iv
bGliL2xvY2FsZS9ydV9SVS51dGY4L0xDX01FU1NBR0VTL1NZU19MQ19NRVNTQUdFUyIsIE9fUkRP
TkxZfE9fQ0xPRVhFQykgPSAxNQo3OTAgICBmc3RhdCgxNSwge3N0X21vZGU9U19JRlJFR3wwNjQ0
LCBzdF9zaXplPTYwLCAuLi59KSA9IDAKNzkwICAgbW1hcChOVUxMLCA2MCwgUFJPVF9SRUFELCBN
QVBfUFJJVkFURSwgMTUsIDApID0gMHg3ZjdlNGVhNTQwMDAKNzkwICAgY2xvc2UoMTUpICAgICAg
ICAgICAgICAgICAgICAgICAgID0gMAo3OTAgICBtdW5tYXAoMHg3ZjdlNGU4YTQwMDAsIDMxNzY5
MikgICAgPSAwCjc5MCAgIG11bm1hcCgweDdmN2U0ZWE1NDAwMCwgNjApICAgICAgICA9IDAKNzkw
ICAgc3RhdCgiL3Vzci9zaGFyZS9hbHRlcmF0b3IvdWkvL2dydWIvaW5kZXguc2NtIiwgMHg3ZmZl
N2Y1MDVkNzApID0gLTEgRU5PRU5UIChObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5KQo3OTAgICBz
dGF0KCIvdXNyL3NoYXJlL2FsdGVyYXRvci91aS8vZ3J1Yi5zY20iLCAweDdmZmU3ZjUwNWRmMCkg
PSAtMSBFTk9FTlQgKE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkpCjc5MCAgIHN0YXQoIi91c3Iv
c2hhcmUvYWx0ZXJhdG9yL3RlbXBsYXRlcy8vZ3J1Yi9pbmRleC5zY20iLCAweDdmZmU3ZjUwNWRm
MCkgPSAtMSBFTk9FTlQgKE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkpCjc5MCAgIHN0YXQoIi91
c3Ivc2hhcmUvYWx0ZXJhdG9yL3RlbXBsYXRlcy8vZ3J1Yi5zY20iLCAweDdmZmU3ZjUwNWU3MCkg
PSAtMSBFTk9FTlQgKE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkpCjc5MCAgIHdyaXRlKDEsICI8
KiAoKCN0KSlcblJFVDogKClcbiIsIDE4KSA9IDE4Cjc5MCAgIHdyaXRlKDIsICJmcmFtZTpvbi1u
ZXh0IGlzIGRlcHJlY2F0ZWQsIHVzZSIuLi4sIDk2NikgPSA5NjYKNzkwICAgZXhpdF9ncm91cCgx
IDx1bmZpbmlzaGVkIC4uLj4KMTQwMyAgPC4uLiByZWFkIHJlc3VtZWQ+IDx1bmZpbmlzaGVkIC4u
Lj4pID0gPwo3OTAgICA8Li4uIGV4aXRfZ3JvdXAgcmVzdW1lZD4pICAgICAgICAgPSA/CjE0MDMg
ICsrKyBleGl0ZWQgd2l0aCAxICsrKwo3OTAgICArKysgZXhpdGVkIHdpdGggMSArKysK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>8283</attachid>
            <date>2019-09-06 18:43:40 +0300</date>
            <delta_ts>2019-09-06 18:43:40 +0300</delta_ts>
            <desc>strace происходящего в preinstall на новом образе 8СП в норме</desc>
            <filename>ok.tgz</filename>
            <type>application/octet-stream</type>
            <size>42682</size>
            <attacher name="Leonid Krivoshein">klark</attacher>
            
              <data encoding="base64">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
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>8284</attachid>
            <date>2019-09-06 18:44:41 +0300</date>
            <delta_ts>2019-09-06 18:44:41 +0300</delta_ts>
            <desc>strace происходящего в preinstall на старом образе 8СП (падение)</desc>
            <filename>e1.tgz</filename>
            <type>application/octet-stream</type>
            <size>4368</size>
            <attacher name="Leonid Krivoshein">klark</attacher>
            
              <data encoding="base64">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
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>8285</attachid>
            <date>2019-09-06 18:46:03 +0300</date>
            <delta_ts>2019-09-06 18:46:03 +0300</delta_ts>
            <desc>Все логи по результату падения на старом образе 8СП</desc>
            <filename>e1-logs.tgz</filename>
            <type>application/octet-stream</type>
            <size>25634</size>
            <attacher name="Leonid Krivoshein">klark</attacher>
            
              <data encoding="base64">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
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>8310</attachid>
            <date>2019-09-23 15:58:49 +0300</date>
            <delta_ts>2019-09-23 15:58:49 +0300</delta_ts>
            <desc>Исправленный preinstall</desc>
            <filename>preinstall</filename>
            <type>text/plain</type>
            <size>3335</size>
            <attacher name="Leonid Krivoshein">klark</attacher>
            
              <data encoding="base64">IyEvYmluL3NoCiMgKioqKiogQkVHSU4gTElDRU5TRSBCTE9DSyAqKioqKgojICogQ29weXJpZ2h0
IChDKSAyMDA3ICBBbGV4ZXkgR2xhZGtvdiA8bGVnaW9uQGFsdGxpbnV4Lm9yZz4KIyAqIENvcHly
aWdodCAoQykgMjAwNyAgRG1pdHJ5IFYuIExldmluIDxsZHZAYWx0bGludXgub3JnPgojICogQ29w
eXJpZ2h0IChDKSAyMDA3ICBBbnRvbiBWLiBCb3lhcnNoaW5vdiA8Ym95YXJzaEBhbHRsaW51eC5v
cmc+CiMgKgojICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojICog
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyAqCiMgKiBUaGlzIHByb2dyYW0g
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCiMgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuIFNlZSB0aGUKIyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCiMgKgojICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKIyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3Qs
IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgojICoqKioq
IEVORCBMSUNFTlNFIEJMT0NLICoqKioqCgphbHRlcmF0b3JfYXBpX3ZlcnNpb249MQpwcmVpbnN0
YWxsX2Rpcj0iL3Vzci9zaGFyZS9pbnN0YWxsMi9wcmVpbnN0YWxsLmQiCmFsdGVyYXRvcmRfc29j
a2V0X2Rpcj0iL3Zhci9ydW4vYWx0ZXJhdG9yZCIKCi4gYWx0ZXJhdG9yLXNoLWZ1bmN0aW9ucwou
IGluc3RhbGwyLXNoLWZ1bmN0aW9ucwouIGluc3RhbGwyLXJlbW91bnQtZnVuY3Rpb25zCgpQUk9H
PXByZWluc3RhbGwKCm5vdGlmeSgpCnsKCVsgLXogIiRBVVRPSU5TVEFMTCIgXSB8fCByZXR1cm4g
MAoJYWx0ZXJhdG9yLW1haWxib3gtc2VuZCAiJDEiIHx8Ogp9CgpydW5fcHJlaW5zdGFsbCgpCnsK
CWlmICEgcmVtb3VudF9jaHJvb3QgPiYyOyB0aGVuCgkJbm90aWZ5ICJlcnJvciBcImRlc3RpbmF0
aW9uIGZpbGVzeXN0ZW0gcmVtb3VudCBlcnJvclwiIgoJZmkKCglsb2NhbCBmIG1heCBjb3VudGVy
PTAKCW1heD0iJChmaW5kICIkcHJlaW5zdGFsbF9kaXIiICIkZGVzdGRpci8kcHJlaW5zdGFsbF9k
aXIiIC1taW5kZXB0aCAxIC1tYXhkZXB0aCAxIC10eXBlIGYgLXBlcm0gLXU9eCB8d2MgLWwpIgoK
CW5vdGlmeSAiaW5pdCAjdCBtYXggJG1heCIKCgkjIHJ1biBzY3JpcHRzIGZyb20gcGFja2FnZXMg
Zmlyc3QsIGJlY2F1c2UgYmFzaWMgaW5zdGFsbGVyIHNjcmlwdHMgY2FuIHVtb3VudCAvaW1hZ2UK
CWZvciBmIGluICIkZGVzdGRpci8kcHJlaW5zdGFsbF9kaXIiLyogIiRwcmVpbnN0YWxsX2RpciIv
KjsgZG8KCQlbIC1mICIkZiIgLWEgLXggIiRmIiBdIHx8IGNvbnRpbnVlCgoJCWlmICIkZiIgPiYy
OyB0aGVuCgkJICAgIG5vdGlmeSAicGFja2FnZSBcIiR7ZiMjKi99XCIgc3RlcCAkY291bnRlciIK
CQkgICAgY291bnRlcj0kKCgkY291bnRlciArIDEpKQoJCSAgICBwcmludGYgJyVzICVzIC0gT0tc
bicgIiQoZGF0ZSArJVQpIiAiJGYiID4mMgoJCWVsc2UKCQkgICAgbm90aWZ5ICJlcnJvciBcIiR7
ZiMjKi99XCIiCgkJICAgIHByaW50ZiAnJXMgJXMgLSBGQUlMRURcbicgIiQoZGF0ZSArJVQpIiAi
JGYiID4mMgoJCSAgICBicmVhawoJCWZpCglkb25lCgoJbm90aWZ5ICJwYWNrYWdlIFwiIFwiIHN0
ZXAgJG1heCIKCgkjIHJlcGxhY2UgaXRzZWxmIHdpdGggYWx0ZXJhdG9yZCBmcm9tIGNocm9vdAoJ
WyAtbiAiJHtBTFRFUkFUT1JfREVTVERJUjotfSIgXSB8fCByZXR1cm4KCXJtIC1mIC90bXAvYWx0
ZXJhdG9yLy5zb2NrZXQKCW1vdW50IC1vIGJpbmQgL3J1biAkZGVzdGRpci9ydW4KCW1vdW50IC1v
IGJpbmQgJGRlc3RkaXIkYWx0ZXJhdG9yZF9zb2NrZXRfZGlyICRhbHRlcmF0b3JkX3NvY2tldF9k
aXIKCWNocm9vdCAiJEFMVEVSQVRPUl9ERVNURElSIiAvZXRjL2luaXQuZC9hbHRlcmF0b3JkIHN0
YXJ0CgoJIyBhbHRidWcgIzM3MDUwIHdvcmthcm91bmQKCSNzZWQgLWkgJzEsL15pbnN0YWxsZXJc
LXByZWluc3RhbGwvZCcgL3Vzci9zaGFyZS9pbnN0YWxsMi9pbnN0YWxsZXItc3RlcHMKCSNjcCAt
TGYgIC91c3Ivc2hhcmUvaW5zdGFsbDIvaW5zdGFsbGVyLXN0ZXBzICRkZXN0ZGlyL3Vzci9zaGFy
ZS9pbnN0YWxsMi8KCSNjcCAtTFJmIC91c3Ivc2hhcmUvaW5zdGFsbDIvc3RlcHMgJGRlc3RkaXIv
dXNyL3NoYXJlL2luc3RhbGwyLwoJI2NwIC1MUmYgL3Vzci9zaGFyZS9hbHRlcmF0b3IvZGVzaWdu
L2ltYWdlcy9zdGVwcyAkZGVzdGRpci91c3Ivc2hhcmUvYWx0ZXJhdG9yL2Rlc2lnbi9pbWFnZXMv
CgkjY3AgLUxmICAvdXNyL2xpYi9hbHRlcmF0b3IvYmFja2VuZDMvc3RlcC1saXN0ICRkZXN0ZGly
L3Vzci9saWIvYWx0ZXJhdG9yL2JhY2tlbmQzLwoJI2NwIC1MUmYgL3Vzci9zaGFyZS9hbHRlcmF0
b3IvdWkvd2l6YXJkICRkZXN0ZGlyL3Vzci9zaGFyZS9hbHRlcmF0b3IvdWkvCgljcCAtTFJmICRk
ZXN0ZGlyL3Vzci9zaGFyZS9hbHRlcmF0b3IvdWkvKiAvdXNyL3NoYXJlL2FsdGVyYXRvci91aS8K
CgkjIHdhaXQgdW50aWwgbmV3IGFsdGVyYXRvcmQgaXMgcmVhZHkgdG8gdXNlCglhbHRlcmF0b3It
d2FpdAoKCSMgbm90aWZ5IGludGVyZmFjZSBhYm91dCBmaW5pc2gKCW5vdGlmeSAiZG9uZSAjdCIK
CXN5bmMKCgkjIHN0b3Agb2xkIGFsdGVyYXRvcmQgYW5kIGtpbGwgaXRzZWxmCgkjc2xlZXAgMQoJ
I3NlcnZpY2UgYWx0ZXJhdG9yZCBzdG9wCn0KCm9uX21lc3NhZ2UoKQp7CiAgICAgICAgY2FzZSAi
JGluX2FjdGlvbiIgaW4KICAgICAgICAJd3JpdGUpCgkJCWVjaG8gIiRQUk9HOiB3cml0ZSBpbml0
IiA+JjIKCQkJaWYgWyAteiAiJEFVVE9JTlNUQUxMIiBdOyB0aGVuCgkJCQlydW5fcHJlaW5zdGFs
bCAmCgkJCWVsc2UKCQkJCXJ1bl9wcmVpbnN0YWxsCgkJCWZpCiAgICAgICAgICAgICAgICAgICAg
ICAgIDs7Cgllc2FjCn0KCm1lc3NhZ2VfbG9vcAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>8311</attachid>
            <date>2019-09-23 16:04:04 +0300</date>
            <delta_ts>2019-09-23 16:04:04 +0300</delta_ts>
            <desc>Исправлятор проблемы на 8СП x86_64/EFI</desc>
            <filename>fix</filename>
            <type>text/plain</type>
            <size>689</size>
            <attacher name="Leonid Krivoshein">klark</attacher>
            
              <data encoding="base64">IyEvYmluL3NoIC1lZnUKCnJ1bmRpcj0iJHswJS8qfSIKCmNhdCA+IC9ldGMvWDExL3hvcmcuY29u
Zi5kLzEwLW1vbml0b3IuY29uZiA8PEVPRgpTZWN0aW9uICJEZXZpY2UiCiAgICBJZGVudGlmaWVy
ICJDYXJkMCIKICAgIERyaXZlciAiZmJkZXYiCiAgICBCdXNJRCAiUENJOjA6MjowIgpFbmRTZWN0
aW9uCgpFT0YKCmNhdCA+IC90bXAvdHJ5LWluc3RhbGwgPDxFT0YKIyEvYmluL3NoIC1lZnUKCnVt
b3VudCAtZmwgLS0gIiRydW5kaXIiIDI+L2Rldi9udWxsIHx8Ogp4aW5pdCAvdXNyL3NiaW4vYWx0
ZXJhdG9yLWluc3RhbGwyIC0tIHZ0NyAtZHBtcyAtYWMgXAoJLW5vbGlzdGVuIHRjcCAtbG9nZmls
ZSAvdG1wL3gxMS5sb2cgPj4gL3RtcC9pbnN0YWxsMi5sb2cgXAoJMj4mMSB8fCBleGl0IFwkPwov
dXNyL3NiaW4vcG9zdGluc3RhbGwgfHw6CmVjaG8gcyA+IC9wcm9jL3N5c3JxLXRyaWdnZXIKZWNo
byB1ID4gL3Byb2Mvc3lzcnEtdHJpZ2dlcgplY2hvIGIgPiAvcHJvYy9zeXNycS10cmlnZ2VyCgpF
T0YKCmNwIC1MZiAtLSAiJHJ1bmRpci9wcmVpbnN0YWxsIiAvdXNyL2xpYi9hbHRlcmF0b3IvYmFj
a2VuZDMvCmNobW9kICt4IC91c3IvbGliL2FsdGVyYXRvci9iYWNrZW5kMy9wcmVpbnN0YWxsIC90
bXAvdHJ5LWluc3RhbGwKZXhwb3J0IERVUklOR19JTlNUQUxMPTEKZXhlYyAvdG1wL3RyeS1pbnN0
YWxsCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>8312</attachid>
            <date>2019-09-23 22:02:04 +0300</date>
            <delta_ts>2019-09-23 22:02:04 +0300</delta_ts>
            <desc>Исправлятор проблемы на 8СП x86_64/EFI #2</desc>
            <filename>fix2</filename>
            <type>text/plain</type>
            <size>881</size>
            <attacher name="Leonid Krivoshein">klark</attacher>
            
              <data encoding="base64">IyEvYmluL3NoIC1lZnUKCmlmIFsgLXogIiR7QUxURVJBVE9SX0RBVEFESVItfSIgXTsgdGhlbgog
ICAgZWNobyAiVGhpcyBzY3JpcHQgbXVzdCBiZSBydW4gZnJvbSB0aGUgc2Vjb25kIFRUWSEiID4m
MgogICAgZWNobyAiU3dpdGNoIHRvIHR0eTIgKHByZXNzIEFsdC1GMikgYW5kIHRyeSBhZ2Fpbi4u
LiIgPiYyCiAgICBleGl0IDEKZmkKcnVuZGlyPSIkezAlLyp9IgpCdXNJRD0iJChsc3BjaSAtZCA6
OjAzMDAgfGF3ayAne3ByaW50ICQxO30nIHxoZWFkIC1uMSB8c2VkICdzL1tcOlwuXS8gL2cnIHwK
CXdoaWxlIHJlYWQgYSBiIGM7IGRvIHByaW50ZiAiJWQ6JWQ6JWRcbiIgJGEgJGIgJGM7IGRvbmUp
IgpjYXQgPiAvZXRjL1gxMS94b3JnLmNvbmYuZC8xMC1tb25pdG9yLmNvbmYgPDxFT0YKU2VjdGlv
biAiRGV2aWNlIgogICAgSWRlbnRpZmllciAiQ2FyZDAiCiAgICBEcml2ZXIgImZiZGV2IgogICAg
QnVzSUQgIlBDSTokQnVzSUQiCkVuZFNlY3Rpb24KCkVPRgoKY2F0ID4gL3RtcC90cnktaW5zdGFs
bCA8PEVPRgojIS9iaW4vc2ggLWVmdQoKZW52CnVtb3VudCAtZmwgLS0gIiRydW5kaXIiIDI+L2Rl
di9udWxsIHx8Ogp4aW5pdCAvdXNyL3NiaW4vYWx0ZXJhdG9yLWluc3RhbGwyIC0tIHZ0NyAtZHBt
cyAtYWMgXAoJLW5vbGlzdGVuIHRjcCAtbG9nZmlsZSAvdG1wL3gxMS5sb2cgPj4gL3RtcC9pbnN0
YWxsMi5sb2cgXAoJMj4mMSB8fCBleGl0IFwkPwovdXNyL3NiaW4vcG9zdGluc3RhbGwgfHw6CmVj
aG8gcyA+IC9wcm9jL3N5c3JxLXRyaWdnZXIKZWNobyB1ID4gL3Byb2Mvc3lzcnEtdHJpZ2dlcgpl
Y2hvIGIgPiAvcHJvYy9zeXNycS10cmlnZ2VyCgpFT0YKCmNobW9kICt4IC90bXAvdHJ5LWluc3Rh
bGwKZXhlYyAvdG1wL3RyeS1pbnN0YWxsCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>