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

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

    <bug>
          <bug_id>31381</bug_id>
          
          <creation_ts>2015-10-19 18:10:48 +0300</creation_ts>
          <short_desc>1.17.1: threads.c:353: krb5int_key_register: Assertion `destructors_set[keynum] == 0&apos; failed</short_desc>
          <delta_ts>2020-06-28 23:39:15 +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>libkrb5</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergey Y. Afonin">asy</reporter>
          <assigned_to name="Ivan A. Melnikov">iv</assigned_to>
          <cc>iv</cc>
    
    <cc>shaba</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>153197</commentid>
    <comment_count>0</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2015-10-19 18:10:48 +0300</bug_when>
    <thetext>При попытке собрать Cyrus-IMAP 2.5.5 с исполнением юнит-тестов возникает ошибка:

  Test: badservice ...lt-unit: threads.c:342: krb5int_key_register: Assertion `destructors_set[keynum] == 0&apos; failed.

Ошибка немного гуглится для для нескольких разных случаев, упоминается krb5 1.13. Упоминание решения не попалось. Откат до libkrb5-1.12-alt2 проблему устраняет.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153207</commentid>
    <comment_count>1</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2015-10-21 09:55:32 +0300</bug_when>
    <thetext>С 1.13.2-alt1 без изменений.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165362</commentid>
    <comment_count>2</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2017-08-23 11:36:32 +0300</bug_when>
    <thetext>с libkrb5-1.14.5-alt1.M80P.1 без изменений.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174076</commentid>
    <comment_count>3</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2018-09-13 09:52:32 +0300</bug_when>
    <thetext>Cyrus-IMAP 3.0.8 и libkrb5-1.16.1-alt2.S1 без изменений (только строка):

  Test: badservice ...lt-unit: threads.c:353: krb5int_key_register: Assertion `destructors_set[keynum] == 0&apos; failed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174080</commentid>
    <comment_count>4</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2018-09-13 10:41:59 +0300</bug_when>
    <thetext>У меня не воспроизводится. Вот что я пробовал:

Взял из gears cyrus-imapd  3.0.8-alt2 (commit cb42319096123084e1a666d8b28566b1958597ec), поправил в спеке 9 строку чтобы было

%def_with unit_tests

и запустил gear-hsh --commit относительно свежего Сизифа x86_64. Тест badservice прошёл, зато упал другой тест:

Suite: command
  Test: run ...FAILED
    1. cunit/unit.c:115  - CU_FAIL_FATAL(&quot;Code under test exited&quot;)

И это был единственный упавший тест:



Run Summary:    Type  Total    Ran Passed Failed Inactive
              suites     39     39    n/a      0        0
               tests    432    432    431      1        0
             asserts 829842 829842 829841      1      n/a

Elapsed time =    0.080 seconds
FAILED
    1. ./cunit/command.testc:21  - CU_ASSERT_EQUAL_FATAL(r=-1904809469,0=0)
  Test: popen_r ...make[3]: *** [Makefile:6607: check-local] Error 141

Что посоветуете?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174090</commentid>
    <comment_count>5</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2018-09-13 14:32:11 +0300</bug_when>
    <thetext>(In reply to comment #4)

&gt; У меня не воспроизводится.

Действительно. Вычистил контейнер от всего старого, и собралось. Видимо, в какой-то момент проблема ушла, а я не заметил из-за того, что в ovz-контейнере собираю. Может быть позже посмотрю, что мешало, хотя интерес академический скорее. Копию крнтейнера оставил.

&gt; FAILED
&gt;     1. ./cunit/command.testc:21  - CU_ASSERT_EQUAL_FATAL(r=-1904809469,0=0)
&gt;   Test: popen_r ...make[3]: *** [Makefile:6607: check-local] Error 141

Это что-то другое уже, буду смотреть.

&gt; Что посоветуете?

Пока только могу спасибо сказать за подсказку, этот баг закрываю.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174091</commentid>
    <comment_count>6</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2018-09-13 14:37:56 +0300</bug_when>
    <thetext>(In reply to comment #5)

&gt; &gt; У меня не воспроизводится.
&gt; 
&gt; Действительно. Вычистил контейнер от всего старого, и собралось.

В смысле проблема с krb5 на тесте пропала, а не совсем собралось.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174111</commentid>
    <comment_count>7</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2018-09-14 09:32:55 +0300</bug_when>
    <thetext>(In reply to comment #4)

&gt; У меня не воспроизводится. Вот что я пробовал:

У меня, оказывается, libkrb5-devel в зависимостях потерялся, потому и собралось. И у меня после чистки контейнера, и, видимо, в хэшере по-этому же.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174116</commentid>
    <comment_count>8</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2018-09-14 12:10:45 +0300</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #4)
&gt; 
&gt; &gt; У меня не воспроизводится. Вот что я пробовал:
&gt; 
&gt; У меня, оказывается, libkrb5-devel в зависимостях потерялся, потому и
&gt; собралось. И у меня после чистки контейнера, и, видимо, в хэшере по-этому же.

Да, с последним openssl libkrb5-devel перестала приезжать, и её надо добавлять явно. Не знаю, какая часть функционала Cyrus-IMAP пропадает, если libkrb5-devel нет в сборочном окружении, но что-то явно пропадает...

Если в спек добавить BuildRequires: libkrb5-devel, то проблема в хешере вполне воспроизводится. Доставив gdb и libkrb5-debuginfo, можно получить backtrace:

$ cd /usr/src/RPM/BUILD/cyrus-imapd-3.0.8/cunit
$ gdb /usr/src/RPM/BUILD/cyrus-imapd-3.0.8/cunit/.libs/lt-unit
[...]
(gdb) run backend
[...]
lt-unit: threads.c:353: krb5int_key_register: Assertion `destructors_set[keynum] == 0&apos; failed.
lt-unit: threads.c:353: krb5int_key_register: Assertion `destructors_set[keynum] == 0&apos; failed.

Program received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
51      }
(gdb) bt
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1  0x00007ffff6542371 in __GI_abort () at abort.c:79
#2  0x00007ffff6539b1a in __assert_fail_base (fmt=0x7ffff668ce88 &quot;%s%s%s:%u: %s%sAssertion `%s&apos; failed.\n%n&quot;, assertion=assertion@entry=0x7ffff350fe8f &quot;destructors_set[keynum] == 0&quot;,
    file=file@entry=0x7ffff350fe41 &quot;threads.c&quot;, line=line@entry=353, function=function@entry=0x7ffff350ffb0 &lt;__PRETTY_FUNCTION__.5908&gt; &quot;krb5int_key_register&quot;) at assert.c:92
#3  0x00007ffff6539b92 in __GI___assert_fail (assertion=assertion@entry=0x7ffff350fe8f &quot;destructors_set[keynum] == 0&quot;, file=file@entry=0x7ffff350fe41 &quot;threads.c&quot;, line=line@entry=353,
    function=function@entry=0x7ffff350ffb0 &lt;__PRETTY_FUNCTION__.5908&gt; &quot;krb5int_key_register&quot;) at assert.c:101
#4  0x00007ffff350b38c in krb5int_key_register (keynum=keynum@entry=K5_KEY_GSS_SPNEGO_STATUS, destructor=destructor@entry=0x0) at threads.c:353
#5  0x00007fffef5647b0 in gss_spnegoint_lib_init () at spnego_mech.c:316
#6  0x00007fffef53ef94 in gssint_mechglue_init () at g_initialize.c:121
#7  gssint_mechglue_init__aux () at g_initialize.c:102
#8  0x00007ffff448be87 in __pthread_once_slow (once_control=0x7fffef772aa0 &lt;gssint_mechglue_init.once&gt;, init_routine=0x7fffef53ef70 &lt;gssint_mechglue_init__aux&gt;) at pthread_once.c:116
#9  0x00007ffff448bf45 in __GI___pthread_once (once_control=once_control@entry=0x7fffef772aa0 &lt;gssint_mechglue_init.once&gt;, init_routine=&lt;optimized out&gt;) at pthread_once.c:143
#10 0x00007ffff350b009 in k5_once (once=once@entry=0x7fffef772aa0 &lt;gssint_mechglue_init.once&gt;, fn=&lt;optimized out&gt;) at threads.c:562
#11 0x00007fffef543067 in gssint_mechglue_initialize_library () at g_initialize.c:156
#12 0x00007fffef5430dd in gss_indicate_mechs (minorStatus=minorStatus@entry=0x7fffffff8f2c, mechSet_out=mechSet_out@entry=0x7fffffff8e98) at g_initialize.c:277
#13 0x00007fffef545078 in gss_indicate_mechs_by_attrs (minor=0x7fffffff8f2c, desired_mech_attrs=0x7fffffff8f30, except_mech_attrs=0x7fffffff8f40, critical_mech_attrs=0x0,
    mechs=0x7fffef97c1c8) at g_mechattr.c:113
#14 0x00007fffef7779c4 in ?? () from /usr/lib64/sasl2-3/libgs2.so
#15 0x00007fffef778c6f in gs2_client_plug_init () from /usr/lib64/sasl2-3/libgs2.so
#16 0x00007ffff7160697 in sasl_client_add_plugin () from /lib64/libsasl2.so.3
#17 0x00007ffff716bcf4 in _sasl_load_plugins () from /lib64/libsasl2.so.3
#18 0x00007ffff7160ee9 in sasl_client_init () from /lib64/libsasl2.so.3
#19 0x000000000042f0cc in init_sasl (isclient=1) at ./cunit/backend.testc:1197
#20 set_up () at ./cunit/backend.testc:1302
#21 0x000000000040bfb7 in __cunit_wrap_fixture (name=name@entry=0x4df1c0 &quot;/usr/src/RPM/BUILD/cyrus-imapd-3.0.8/cunit/backend.testc:set_up&quot;, fn=fn@entry=0x42ec20 &lt;set_up&gt;) at cunit/unit.c:167
#22 0x000000000042e430 in __cunit_test_badservice () at cunit/backend.testc-cunit.c:16
#23 0x00007ffff6acde91 in ?? () from /usr/lib64/libcunit.so.1
#24 0x00007ffff6ace19f in ?? () from /usr/lib64/libcunit.so.1
#25 0x00007ffff6ace586 in CU_run_suite () from /usr/lib64/libcunit.so.1
#26 0x000000000040b230 in run_tests () at cunit/unit.c:360
#27 main (argc=&lt;optimized out&gt;, argv=&lt;optimized out&gt;) at cunit/unit.c:456
(gdb)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174118</commentid>
    <comment_count>9</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2018-09-14 12:43:06 +0300</bug_when>
    <thetext>Что характерно, тесты из backend успешно проходят, если их запускать по-одному -- например так:

  cd /usr/src/RPM/BUILD/cyrus-imapd-3.0.8/cunit
  for test in `./unit -l | grep backend` ; do ./unit -v &quot;$test&quot;; done

Видимо, на данный момент libgssapi_krb5.so.2 не рассчитана на то, что</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174119</commentid>
    <comment_count>10</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2018-09-14 12:44:06 +0300</bug_when>
    <thetext>упс, случайный click

(In reply to comment #9)
&gt; Видимо, на данный момент libgssapi_krb5.so.2 не рассчитана на то, что
... её будут выгружать, загружать, и снова выгружать, и так далее.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174124</commentid>
    <comment_count>11</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2018-09-14 13:57:04 +0300</bug_when>
    <thetext>(In reply to comment #8)

&gt; если libkrb5-devel нет в сборочном окружении, но что-то явно пропадает...

Пропадает поддержка gssapi. Тут проблема ещё в том, что я у себя этот механизм не использую (и через sasl тоже) и не могу быстро оценить реальную работоспособность.

(In reply to comment #9)

&gt; Что характерно, тесты из backend успешно проходят, если их запускать
&gt; по-одному. Видимо, на данный момент libgssapi_krb5.so.2 не рассчитана
&gt; на то, что её будут выгружать, загружать, и снова выгружать, и так далее.

Интересный вариант. Но когда-то (с 1.12) ведь работало. Что ещё непонятно, это почему больше ни у кого не вылезло при сборке Cyrus-IMAP (хотя вот в Федоре какой-то свой набор тестов используют). Надо у остальных посмотреть.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174182</commentid>
    <comment_count>12</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2018-09-17 11:56:35 +0300</bug_when>
    <thetext>https://github.com/cyrusimap/cyrus-imapd/issues/2526</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190821</commentid>
    <comment_count>13</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2020-06-28 23:39:15 +0300</bug_when>
    <thetext>libkrb5-1.17.1, воспроизводится.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>