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

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

    <bug>
          <bug_id>46191</bug_id>
          
          <creation_ts>2023-05-18 20:23:43 +0300</creation_ts>
          <short_desc>libevent: ошибка сборки с glibc 2.36</short_desc>
          <delta_ts>2023-05-23 20:43:41 +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>libevent</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>45802</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Sheplyakov">asheplyakov</reporter>
          <assigned_to name="placeholder@altlinux.org">placeholder</assigned_to>
          <cc>asheplyakov</cc>
    
    <cc>asheplyakov</cc>
    
    <cc>glebfm</cc>
    
    <cc>iv</cc>
    
    <cc>ldv</cc>
    
    <cc>nir</cc>
    
    <cc>placeholder</cc>
    
    <cc>sin</cc>
    
    <cc>vt</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>226074</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Sheplyakov">asheplyakov</who>
    <bug_when>2023-05-18 20:23:43 +0300</bug_when>
    <thetext>/bin/sh ./libtool  --tag=CC   --mode=link loongarch64-alt-linux-gcc  -pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto -Wall -fno-strict-aliasing  -W -Wfloat-equal -Wundef -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes -Wwrite-strings -Wredundant-decls -Wchar-subscripts -Wcomment -Wformat -Wwrite-strings -Wmissing-declarations -Wredundant-decls -Wnested-externs -Wbad-function-cast -Wswitch -Wno-unused-parameter -Wstrict-aliasing -Winit-self -Wmissing-field-initializers -Wdeclaration-after-statement -Waddress -Wnormalized=id -Woverride-init -Wlogical-op   -o sample/signal-test sample/signal-test.o  libevent.la -lcrypto
libtool: link: loongarch64-alt-linux-gcc -pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto -Wall -fno-strict-aliasing -W -Wfloat-equal -Wundef -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes -Wwrite-strings -Wredundant-decls -Wchar-subscripts -Wcomment -Wformat -Wwrite-strings -Wmissing-declarations -Wredundant-decls -Wnested-externs -Wbad-function-cast -Wswitch -Wno-unused-parameter -Wstrict-aliasing -Winit-self -Wmissing-field-initializers -Wdeclaration-after-statement -Waddress -Wnormalized=id -Woverride-init -Wlogical-op -o sample/.libs/signal-test sample/signal-test.o  ./.libs/libevent.so -lcrypto
ld: ./.libs/libevent.so: undefined reference to `arc4random_addrandom&apos;
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:1497: sample/signal-test] Error 1
make[1]: Leaving directory &apos;/usr/src/RPM/BUILD/libevent-2.1.8&apos;
make[1]: *** Waiting for unfinished jobs....

Похоже на https://github.com/libevent/libevent/pull/1427</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226081</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Sheplyakov">asheplyakov</who>
    <bug_when>2023-05-18 21:25:07 +0300</bug_when>
    <thetext>http://git.altlinux.org/people/asheplyakov/packages/libevent.git tags/2.1.12-alt1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226082</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Sheplyakov">asheplyakov</who>
    <bug_when>2023-05-18 21:27:14 +0300</bug_when>
    <thetext>#321176 FAILED #1 [test-only] sisyphus libevent.git=2.1.12-alt1

FAILED потому что поехало ABI, и нужно пересобрать клиентов (MySQL, chromium, и всякое такое)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226084</commentid>
    <comment_count>3</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2023-05-18 21:41:34 +0300</bug_when>
    <thetext>task add rebuild-unmets?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226087</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Sheplyakov">asheplyakov</who>
    <bug_when>2023-05-18 21:59:09 +0300</bug_when>
    <thetext>(Ответ для Dmitry V. Levin на комментарий #3)
&gt; task add rebuild-unmets?

Вопрос в другом: есть ли какие-то возражения против обновления на 2.1.12 (и последующей массовой пересборки)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226088</commentid>
    <comment_count>5</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2023-05-18 22:05:49 +0300</bug_when>
    <thetext>У пакета много пользователей, но по сути нет мантейнера, поэтому, я думаю, результат пересборки зависимых пакетов будет определяющим.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226090</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Sheplyakov">asheplyakov</who>
    <bug_when>2023-05-18 22:35:58 +0300</bug_when>
    <thetext>(Ответ для Dmitry V. Levin на комментарий #5)
&gt; У пакета много пользователей, но по сути нет мантейнера,

Значит я буду.

&gt; поэтому, я думаю, результат пересборки зависимых пакетов будет определяющим.

Автоматика не осилила, с первого взгляда видно, что chromium надо было собирать последним.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226117</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Sheplyakov">asheplyakov</who>
    <bug_when>2023-05-19 12:29:36 +0300</bug_when>
    <thetext>Падает тест openldap:

[00:21:14] Starting lloadd on TCP/IP port 9011...
[00:21:15] ./scripts/lloadd/test000-rootdse: line 70: 3131293 Aborted                 $SLAPD -f $CONF1.slapd -h $URI6 -d $LVL &gt; $LOG1 2&gt;&amp;1
[00:21:15] Using ldapsearch to retrieve the root DSE...
[00:21:15] &lt;39&gt;May 19 08:16:53 lt-ldapsearch: DIGEST-MD5 common mech free
[00:21:15] Waiting 7 seconds for lloadd to start...
[00:21:22] &lt;39&gt;May 19 08:17:00 lt-ldapsearch: DIGEST-MD5 common mech free
[00:21:22] Waiting 7 seconds for lloadd to start...
[00:21:29] &lt;39&gt;May 19 08:17:07 lt-ldapsearch: DIGEST-MD5 common mech free
[00:21:29] Waiting 7 seconds for lloadd to start...
[00:21:36] &lt;39&gt;May 19 08:17:14 lt-ldapsearch: DIGEST-MD5 common mech free
[00:21:36] Waiting 7 seconds for lloadd to start...
[00:21:43] &lt;39&gt;May 19 08:17:21 lt-ldapsearch: DIGEST-MD5 common mech free
[00:21:43] Waiting 7 seconds for lloadd to start...
[00:21:50] &lt;39&gt;May 19 08:17:28 lt-ldapsearch: DIGEST-MD5 common mech free
[00:21:50] Waiting 7 seconds for lloadd to start...
[00:21:57] ./scripts/lloadd/test000-rootdse: line 100: kill: (3131293) - No such process
[00:21:57] &gt;&gt;&gt;&gt;&gt; Test failed
[00:21:57] &lt;39&gt;May 19 08:17:35 lt-slapd[3131241]: DIGEST-MD5 common mech free
[00:21:57] &lt;39&gt;May 19 08:17:35 lt-slapd[3131235]: DIGEST-MD5 common mech free
[00:21:57] &lt;39&gt;May 19 08:17:35 lt-slapd[3131244]: DIGEST-MD5 common mech free
[00:21:57] &lt;39&gt;May 19 08:17:35 lt-slapd[3131235]: DIGEST-MD5 common mech free
[00:21:57] &lt;39&gt;May 19 08:17:35 lt-slapd[3131244]: DIGEST-MD5 common mech free
[00:21:57] &gt;&gt;&gt;&gt;&gt; 00:00:44 Failed   test000-rootdse for lloadd+mdb after 44 seconds
[00:21:57] (exit 255)

На loongarch падает этот же тест с вот такой диагностикой:

64673ab3.388d97f2 0x7ffff3bf4100 lt-slapd startup: initiated.
64673ab3.3897095e 0x7ffff31370c0 lloadd startup: failed to set up for async name resolution
64673ab3.3899ed86 0x7ffff3bf4100 backend_startup: bi_open 4 (lload) failed!
64673ab3.389a1b4e 0x7ffff3bf4100 lt-slapd shutdown: initiated
lt-slapd: module_init.c:132: lload_back_close: Assertion `lloadd_inited == 1&apos; failed.

Это похоже на https://github.com/libevent/libevent/issues/1155</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226123</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Sheplyakov">asheplyakov</who>
    <bug_when>2023-05-19 13:51:55 +0300</bug_when>
    <thetext>(Ответ для Alexey Sheplyakov на комментарий #7)
&gt; Падает тест openldap:
&gt; 
&gt; [00:21:14] Starting lloadd on TCP/IP port 9011...
&gt; [00:21:15] ./scripts/lloadd/test000-rootdse: line 70: 3131293 Aborted       
&gt; $SLAPD -f $CONF1.slapd -h $URI6 -d $LVL &gt; $LOG1 2&gt;&amp;1
&gt; [00:21:15] Using ldapsearch to retrieve the root DSE...
&gt; [00:21:15] &lt;39&gt;May 19 08:16:53 lt-ldapsearch: DIGEST-MD5 common mech free
&gt; [00:21:15] Waiting 7 seconds for lloadd to start...
&gt; [00:21:22] &lt;39&gt;May 19 08:17:00 lt-ldapsearch: DIGEST-MD5 common mech free
&gt; [00:21:22] Waiting 7 seconds for lloadd to start...
&gt; [00:21:29] &lt;39&gt;May 19 08:17:07 lt-ldapsearch: DIGEST-MD5 common mech free
&gt; [00:21:29] Waiting 7 seconds for lloadd to start...
&gt; [00:21:36] &lt;39&gt;May 19 08:17:14 lt-ldapsearch: DIGEST-MD5 common mech free
&gt; [00:21:36] Waiting 7 seconds for lloadd to start...
&gt; [00:21:43] &lt;39&gt;May 19 08:17:21 lt-ldapsearch: DIGEST-MD5 common mech free
&gt; [00:21:43] Waiting 7 seconds for lloadd to start...
&gt; [00:21:50] &lt;39&gt;May 19 08:17:28 lt-ldapsearch: DIGEST-MD5 common mech free
&gt; [00:21:50] Waiting 7 seconds for lloadd to start...
&gt; [00:21:57] ./scripts/lloadd/test000-rootdse: line 100: kill: (3131293) - No
&gt; such process
&gt; [00:21:57] &gt;&gt;&gt;&gt;&gt; Test failed
&gt; [00:21:57] &lt;39&gt;May 19 08:17:35 lt-slapd[3131241]: DIGEST-MD5 common mech free
&gt; [00:21:57] &lt;39&gt;May 19 08:17:35 lt-slapd[3131235]: DIGEST-MD5 common mech free
&gt; [00:21:57] &lt;39&gt;May 19 08:17:35 lt-slapd[3131244]: DIGEST-MD5 common mech free
&gt; [00:21:57] &lt;39&gt;May 19 08:17:35 lt-slapd[3131235]: DIGEST-MD5 common mech free
&gt; [00:21:57] &lt;39&gt;May 19 08:17:35 lt-slapd[3131244]: DIGEST-MD5 common mech free
&gt; [00:21:57] &gt;&gt;&gt;&gt;&gt; 00:00:44 Failed   test000-rootdse for lloadd+mdb after 44
&gt; seconds
&gt; [00:21:57] (exit 255)
&gt; 
&gt; На loongarch падает этот же тест с вот такой диагностикой:
&gt; 
&gt; 64673ab3.388d97f2 0x7ffff3bf4100 lt-slapd startup: initiated.
&gt; 64673ab3.3897095e 0x7ffff31370c0 lloadd startup: failed to set up for async
&gt; name resolution
&gt; 64673ab3.3899ed86 0x7ffff3bf4100 backend_startup: bi_open 4 (lload) failed!
&gt; 64673ab3.389a1b4e 0x7ffff3bf4100 lt-slapd shutdown: initiated
&gt; lt-slapd: module_init.c:132: lload_back_close: Assertion `lloadd_inited ==
&gt; 1&apos; failed.
&gt; 
&gt; Это похоже на https://github.com/libevent/libevent/issues/1155

Ошибка вызвана тем, что /etc/resolv.conf в сборочнице пустой.
Код в openldap (servers/lloadd/daemon.c) делает следующее:

1235 int
1236 lloadd_daemon( struct event_base *daemon_base )
1237 {
1238     int i, rc;
1239     LloadTier *tier;
1240     struct event_base *base;
1241     struct event *event;
1242     struct timeval second = { 1, 0 };
1243 
1244     assert( daemon_base != NULL );
1245 
1246     dnsbase = evdns_base_new( daemon_base, EVDNS_BASE_INITIALIZE_NAMESERVERS );
1247     if ( !dnsbase ) {
1248         Debug( LDAP_DEBUG_ANY, &quot;lloadd startup: &quot;
1249                 &quot;failed to set up for async name resolution\n&quot; );
1250         return -1;
1251     }

evdns_base_new выдаёт ошибку, если не удалось разобрать /etc/resolv.conf (или он отсутствует), и lloadd не стартует.


Для эксплуатации openldap (nfs, и прочих сетевых служб) поведение &quot;не работает DNS - выругался и упал&quot; - правильное и желательное, а для тестов в изолированном окружении - не очень.
Загвоздка в том, что у libevent нет &quot;ручек&quot; (файла настроек, переменных окружения), чтобы переключиться между режимами &quot;нормальная эксплуатация&quot; и &quot;тестирование&quot;, и разработчик(и) libevent не видят в ней необходимости, см. https://github.com/libevent/libevent/issues/1155#issuecomment-918826471

В libevent 2.1.8 проверка на наличие и правильность /etc/resolv.conf сломана, её починили позже, а именно в
https://github.com/libevent/libevent/commit/c3f353450e94248ee677a068ed2c4ed29d64f79e


Есть несколько вариантов решения:

1) Отключить тест lloadd в openldap
2) Соорудить какой-то непустой /etc/resolv.conf
3) Запатчить libevent, чтобы она игнорировала битый/отсутствующий /etc/resolv.conf (очень, очень плохой вариант).
4) Перенаправить операции с /etc/resolv.conf (stat, open) (cmocka или ещё какой LD_PRELOAD).

Лично я предпочитаю вариант 2 (непустой /etc/resolv.conf), но не знаю, как его соорудить в хешернице.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226168</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Sheplyakov">asheplyakov</who>
    <bug_when>2023-05-22 06:30:59 +0300</bug_when>
    <thetext>&gt; &gt; Это похоже на https://github.com/libevent/libevent/issues/1155
&gt; 
&gt; Ошибка вызвана тем, что /etc/resolv.conf в сборочнице пустой.
&gt; evdns_base_new выдаёт ошибку, если не удалось разобрать /etc/resolv.conf
&gt; (или он отсутствует), и lloadd не стартует.
&gt; 
&gt; 
&gt; Для эксплуатации openldap (nfs, и прочих сетевых служб) поведение &quot;не
&gt; работает DNS - выругался и упал&quot; - правильное и желательное, а для тестов в
&gt; изолированном окружении - не очень.
&gt; Загвоздка в том, что у libevent нет &quot;ручек&quot; (файла настроек, переменных
&gt; окружения), чтобы переключиться между режимами &quot;нормальная эксплуатация&quot; и
&gt; &quot;тестирование&quot;, и разработчик(и) libevent не видят в ней необходимости, см.
&gt; https://github.com/libevent/libevent/issues/1155#issuecomment-918826471
&gt; 
&gt; В libevent 2.1.8 проверка на наличие и правильность /etc/resolv.conf
&gt; сломана, её починили позже, а именно в
&gt; https://github.com/libevent/libevent/commit/
&gt; c3f353450e94248ee677a068ed2c4ed29d64f79e
&gt; 
&gt; 
&gt; Есть несколько вариантов решения:
&gt; 
&gt; 1) Отключить тест lloadd в openldap
&gt; 2) Соорудить какой-то непустой /etc/resolv.conf
&gt; 3) Запатчить libevent, чтобы она игнорировала битый/отсутствующий
&gt; /etc/resolv.conf (очень, очень плохой вариант).
&gt; 4) Перенаправить операции с /etc/resolv.conf (stat, open) (cmocka или ещё
&gt; какой LD_PRELOAD).
&gt; 
&gt; Лично я предпочитаю вариант 2 (непустой /etc/resolv.conf), но не знаю, как
&gt; его соорудить в хешернице.

В итоге сделал, чтобы пустой /etc/resolv.conf не вызывал ошибки.
Во-первых, это сохраняет текущее поведение и соблюдает принцип наименьшего удивления.
Во-вторых, в libevent 2.2 такое поведение будет &quot;из коробки&quot;, см. https://github.com/libevent/libevent/commit/ebd7e8d7930df0ef9f11a23309c59cded735e7c4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226169</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Sheplyakov">asheplyakov</who>
    <bug_when>2023-05-22 06:32:02 +0300</bug_when>
    <thetext>#321176 EPERM #9 sisyphus libevent.git=2.1.12-alt1 MySQL.git=8.0.30-alt1.1 openldap.git=2.6.4-alt1 avahi.git=avahi-0.8-alt2 bfgminer.git=5.5.0-alt2 bitcoin.git=24.0.1-alt1 hiredis.git=1.1.0-alt1 ccnet.git=7.1.1-alt1 memcached.git=1.6.19-alt1 srpm=fstrm-0.6.1-alt1_2.src.rpm fvwm3.git=1.0.5-alt2 gearmand.git=1.1.19.1-alt1 getstream.git=20120411-alt4 libcamera.git=0.0.5-alt1.1 libcoeurl.git=0.1.1-alt2 srpm=libevhtp-1.2.18-alt1_4.src.rpm srpm=libverto-0.3.2-alt1_1.src.rpm srpm=links2-2.29-alt1.src.rpm lldpd.git=1.0.16-alt1 lua5.1-module-event.git=lua5.1-event-0.4.6-alt1 lua5.3-module-event.git=lua5.3-event-0.4.6-alt1 lua5.4-module-event.git=lua5.4-event-0.4.6-alt1 netatalk.git=3.1.13-alt1 nfs.git=nfs-2.6.3-al
t1 nsd.git=4.6.1-alt1 ocproxy.git=1.60-alt1 unbound.git=1.17.1-alt1 srpm=perl-Event-Lib-1.03-alt7.src.rpm pgbouncer.git=1.16.1-alt1 qt5-webengine.git=5.15.13-alt2 qt6-webengine.git=6.4.2-alt1 rsyslog.git=8.2304.0-alt1 scanssh.git=2.1.2-alt1 seafile.git=8.0.6-alt1 srpm=seamonkey-2.53.14-alt1.src.rpm sstp-client.git=1.0.12-alt1 suricata.git=6.0.10-alt1 taler.git=0.15.0.1-alt6 thrift.git=0.18.1-alt1 thunderbird.git=102.11.0-alt1 tmate.git=2.4.0-alt2 tmux.git=3.3a-alt2 tor.git=0.4.7.13-alt1 trickle.git=1.07-alt5 ustreamer.git=ustreamer-5.38-alt1 webdis.git=0.1.20-alt1 zabbix.git=6.0.16-alt1 chromium.git=113.0.5672.63-alt1 coturn.git=4.5.2-alt1 srpm=chromium-gost-111.0.5563.64-alt1.src.rpm transmission.git=3.00-alt2.1 ossec-hids.git=3.6.0-alt2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226293</commentid>
    <comment_count>11</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2023-05-23 20:43:41 +0300</bug_when>
    <thetext>libevent-2.1.12-alt1 -&gt; sisyphus:

 Thu May 18 2023 Alexey Sheplyakov &lt;asheplyakov@altlinux&gt; 2.1.12-alt1
 - 2.1.12
 - Use python3 to run python scripts (closes: #40742).
 - Fixed build with glibc 2.36 and newer (closes: #46191).</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>