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

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

    <bug>
          <bug_id>35297</bug_id>
          
          <creation_ts>2018-08-27 16:40:45 +0300</creation_ts>
          <short_desc>libQt5Core.so.5: cannot open shared object file: No such file or directory</short_desc>
          <delta_ts>2020-06-24 12:08:44 +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>libqt5-core</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>WONTFIX</resolution>
          
          <see_also>https://bugzilla.altlinux.org/show_bug.cgi?id=38421</see_also>
          <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="Vitaly Lipatov">lav</reporter>
          <assigned_to name="Sergey V Turchin">zerg</assigned_to>
          <cc>aen</cc>
    
    <cc>aspsk</cc>
    
    <cc>boris</cc>
    
    <cc>boyarsh</cc>
    
    <cc>glebfm</cc>
    
    <cc>iv</cc>
    
    <cc>kernelbot</cc>
    
    <cc>klark.devel</cc>
    
    <cc>ldv</cc>
    
    <cc>mike</cc>
    
    <cc>mithraen</cc>
    
    <cc>rider</cc>
    
    <cc>sbolshakov</cc>
    
    <cc>shrek</cc>
    
    <cc>sin</cc>
    
    <cc>vitty</cc>
    
    <cc>vsu</cc>
    
    <cc>vt</cc>
    
    <cc>zerg</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>173623</commentid>
    <comment_count>0</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2018-08-27 16:40:45 +0300</bug_when>
    <thetext>После обновления Qt5 при запуске любой программы, использующей libQt5Core, получаю ошибку
$ bibletime
bibletime: error while loading shared libraries: libQt5Core.so.5: cannot open shared object file: No such file or directory


$ epmqf /usr/lib64/libQt5Core.so.5
 $ rpm -qf /usr/lib64/libQt5Core.so.5
libqt5-core-5.11.1-alt2.S1.x86_64
Note: /usr/lib64/libQt5Core.so.5 is link to /usr/lib64/libQt5Core.so.5.11.1
 $ rpm -qf /usr/lib64/libQt5Core.so.5.11.1
libqt5-core-5.11.1-alt2.S1.x86_64

$ rpm -V libqt5-core
(ничего)

$ /usr/lib64/libQt5Core.so.5
This is the QtCore library version Qt 5.11.1 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 7.3.1 20180712 (ALT 7.3.1-alt5))
Copyright (C) 2016 The Qt Company Ltd.
Contact: http://www.qt.io/licensing/

Installation prefix: /usr/share/qt5
Library path:        /usr/lib64
Include path:        /usr/include/qt5
Processor features:  sse3 sse2[required] ssse3 cmpxchg16b sse4.1 sse4.2 popcnt aes avx

Пытался спросить в рассылке, пробовал разные способы:
https://lists.altlinux.org/pipermail/devel/2018-August/205227.html

С виду всё хорошо. Раз только у меня, должно быть что-то локальное. Но я воспроизвёл на двух машинах.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173631</commentid>
    <comment_count>1</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2018-08-28 00:29:22 +0300</bug_when>
    <thetext>Поскольку я получил такую же ошибку и в hasher, и на аппаратно другой машине (общее у них — использование ядра 2.6.32-ovz-el-alt162), а на машине с ядром 4.x проблемы нет, прихожу к выводу, что проблема вызвана ядром (взаимодействием ld-linux из glibc с ним).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173637</commentid>
    <comment_count>2</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2018-08-28 11:49:01 +0300</bug_when>
    <thetext>2 LDV: Раз ты знаешь, кто виноват, расскажи подробности, пожалуйста.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173638</commentid>
    <comment_count>3</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2018-08-28 12:02:12 +0300</bug_when>
    <thetext>(In reply to comment #2)
&gt; 2 LDV: Раз ты знаешь, кто виноват, расскажи подробности, пожалуйста.

Понятия не имею, но по умолчанию glibc не виноват.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173639</commentid>
    <comment_count>4</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2018-08-28 12:27:51 +0300</bug_when>
    <thetext>Значит, пусть будет ядро ovz-el.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173640</commentid>
    <comment_count>5</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2018-08-28 12:33:52 +0300</bug_when>
    <thetext>Использование Сизифа на ядре 2.6.32-ovz-el не поддерживается.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173644</commentid>
    <comment_count>6</comment_count>
    <who name="Vitaly Chikunov">vt</who>
    <bug_when>2018-08-28 14:41:16 +0300</bug_when>
    <thetext>(In reply to comment #5)
&gt; Использование Сизифа на ядре 2.6.32-ovz-el не поддерживается.

Давно так стало?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173651</commentid>
    <comment_count>7</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2018-08-28 21:39:26 +0300</bug_when>
    <thetext>Поступило совет, решающий проблему:
strip --remove-section=.note.ABI-tag /usr/lib64/libQt5Core.so.5.11.1

Ссылки на эту тему:

https://github.com/kdudka/csmock/commit/96a4a759a7de39f8da109202f4fa14c76a0ae68f
https://github.com/Microsoft/WSL/issues/3023

abi-note.S breaks gABI on 64-bit systems
https://sourceware.org/bugzilla/show_bug.cgi?id=23072
https://github.com/hjl-tools/linux-abi/commit/9a7bc47bf065405c2e7b6c46d692a7d137d5f544</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173653</commentid>
    <comment_count>8</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2018-08-28 22:28:08 +0300</bug_when>
    <thetext>(In reply to comment #7)
&gt; Поступило совет, решающий проблему:
&gt; strip --remove-section=.note.ABI-tag /usr/lib64/libQt5Core.so.5.11.1

Тогда возвращаю на пакет libqt5-core.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173654</commentid>
    <comment_count>9</comment_count>
    <who name="Leonid Krivoshein">klark.devel</who>
    <bug_when>2018-08-28 23:44:06 +0300</bug_when>
    <thetext>(В ответ на комментарий №7)
&gt; Поступил совет, решающий проблему:
&gt; strip --remove-section=.note.ABI-tag /usr/lib64/libQt5Core.so.5.11.1

Там говорится про эффект &quot;атомной бомбы&quot; от такого решения. Как я понял, objdump -s -j .note.ABI-tag /usr/lib/libQt5Core.so.5.11.1 покажет по ABI только требование ядра &gt;= 3.17. Отрывать это для единичных &quot;старьёвщиков&quot; чревато тем, что запускаться-то оно будет, но когда и на чём &quot;взорвётся&quot; -- сказать сложно. Это требование там неслучайно.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173655</commentid>
    <comment_count>10</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2018-08-28 23:54:42 +0300</bug_when>
    <thetext>(В ответ на комментарий №9)
&gt; (В ответ на комментарий №7)
&gt; &gt; Поступил совет, решающий проблему:
&gt; &gt; strip --remove-section=.note.ABI-tag /usr/lib64/libQt5Core.so.5.11.1
&gt; 
&gt; Там говорится про эффект &quot;атомной бомбы&quot; от такого решения. Как я понял,
&gt; objdump -s -j .note.ABI-tag /usr/lib/libQt5Core.so.5.11.1 покажет по ABI только
&gt; требование ядра &gt;= 3.17.
$ objdump -s -j .note.ABI-tag /usr/lib64/libQt5Core.so.5.11.1

/usr/lib64/libQt5Core.so.5.11.1:     формат файла elf64-x86-64

Содержимое раздела .note.ABI-tag:
 46f38c 04000000 10000000 01000000 474e5500  ............GNU.
 46f39c 00000000 03000000 11000000 00000000  ................


Ну 03 11, похожее на 3.17, виднеется.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173660</commentid>
    <comment_count>11</comment_count>
    <who name="Leonid Krivoshein">klark.devel</who>
    <bug_when>2018-08-29 01:49:23 +0300</bug_when>
    <thetext>(В ответ на комментарий №10)
[...] 03000000 11000000 00000000  ................
&gt; 
&gt; Ну 03 11, похожее на 3.17, виднеется.

Да, 3.11.0, если точнее. 3.17 было у 5.10, если не ошибаюсь. Чтоб не дешифровать глазами, можно ещё readelf -n &lt;путь&gt;. Ссылки на gABI, SCO и утверждения про выравнивание -- правда не понятно, к чему там, насколько оно обязательно. Здесь действительно 32-бит реализация. note.ABI-tag полезен для динамического линкёра, чтоб не загрузить чего несовместимого.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173666</commentid>
    <comment_count>12</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2018-08-29 10:01:36 +0300</bug_when>
    <thetext>В общем, кому очень хочется, смотрите
http://git.altlinux.org/people/zerg/packages/qt5-base.git?p=qt5-base.git;a=blob;f=src/corelib/global/minimum-linux_p.h
и
http://git.altlinux.org/people/zerg/packages/qt5-base.git?p=qt5-base.git;a=blob;f=src/corelib/global/minimum-linux.S
и т.д.

P.S.
Лично я в старых ядрах смысла не вижу.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173667</commentid>
    <comment_count>13</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2018-08-29 10:11:11 +0300</bug_when>
    <thetext>(В ответ на комментарий №12)
&gt; Лично я в старых ядрах смысла не вижу.
Точнее, если без renameat2 еще как-то не страшно, но без getentropy определенно не хочется.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173668</commentid>
    <comment_count>14</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2018-08-29 10:13:01 +0300</bug_when>
    <thetext>Поэтому на старых ядрах решайте сами локально.

Наверное, лучше пересобрать себе, а не стрипать, чтоб не взрывалось.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173670</commentid>
    <comment_count>15</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2018-08-29 10:32:43 +0300</bug_when>
    <thetext>Меня больше возмущает отсутствие диагностики. Неужели для несовместимой библиотеки не нашлось другого сообщения об ошибке, кроме No such file or directory?

На втором месте стоит возмущение самой привязкой к версии ядра ради системных вызовов. Эдак скоро мы дойдём до glibcfree-библиотек.

Но главная причина в том, что getrandom появилась в glibc слишком поздно (а по-хорошему должна была появиться _до_ её появления в ядре Linux), и это привело к необходимости обходиться без неё, и свою рол прослойки совместимости она не сыграла.

Статья про getrandom в glibc, которое туда добиралось пару лет после его появления в ядре:
https://lwn.net/Articles/711013/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173678</commentid>
    <comment_count>16</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2018-08-29 12:12:10 +0300</bug_when>
    <thetext>(В ответ на комментарий №11)
&gt; (В ответ на комментарий №10)
&gt; [...] 03000000 11000000 00000000  ................
&gt; &gt; 
&gt; &gt; Ну 03 11, похожее на 3.17, виднеется.
&gt; 
&gt; Да, 3.11.0, если точнее. 3.17 было у 5.10, если не ошибаюсь. Чтоб не
0x11 это 17</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173681</commentid>
    <comment_count>17</comment_count>
    <who name="Leonid Krivoshein">klark.devel</who>
    <bug_when>2018-08-29 13:28:07 +0300</bug_when>
    <thetext>(В ответ на комментарий №12)
&gt; В общем, кому очень хочется, смотрите

Спасибо, интересно! Теперь стало понятнее.
Одно дело догадываться, другое -- знать наверняка.


(В ответ на комментарий №16)
&gt; &gt; &gt; Ну 03 11, похожее на 3.17, виднеется.
&gt; &gt; 
&gt; &gt; Да, 3.11.0, если точнее. 3.17 было у 5.10, если не ошибаюсь. Чтоб не
&gt; 0x11 это 17

Ох, ДА!

&gt; Неужели для несовместимой библиотеки не нашлось другого сообщения
&gt; об ошибке, кроме No such file or directory?

Согласен, только камень в сторону динамического линкёра надо кидать.

&gt; Статья про getrandom в glibc, которое туда добиралось пару лет после его
&gt; появления в ядре:

Спасибо, познавательно!

&gt; На втором месте стоит возмущение самой привязкой к версии ядра ради системных
&gt; вызовов. Эдак скоро мы дойдём до glibcfree-библиотек.

Возможно, по каким-то причинам разработчики QtCore сочли неподходящей glibc реализацию fallback&apos;а. Статья описывает эти возможные причины (и риски) поверхностно.

&gt; Но главная причина в том, что getrandom появилась в glibc слишком поздно

Тоже досадно, но софт не пишется идеальным и законченным сразу. :) Особенно досадно, что приходится то и дело &quot;приседать&quot; для &quot;поддержки штанов&quot; всему старому.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>