Bug 47078 - glibc-core: неполные зависимости -- нерабочий pthread_cancel
Summary: glibc-core: неполные зависимости -- нерабочий pthread_cancel
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: glibc-core (show other bugs)
Version: unstable
Hardware: all Linux
: P5 normal
Assignee: Gleb F-Malinovskiy
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-07-31 13:16 MSK by Alexey Sheplyakov
Modified: 2023-08-20 10:38 MSK (History)
6 users (show)

See Also:


Attachments
Тестовый пакет pthread_cancel_sample (2.72 KB, application/x-rpm)
2023-07-31 13:16 MSK, Alexey Sheplyakov
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Alexey Sheplyakov 2023-07-31 13:16:57 MSK
Created attachment 13951 [details]
Тестовый пакет pthread_cancel_sample

Начиная с glibc 2.36 pthread функции находятся в libc.so.6 (а libpthread.so - пустышка для совместимости, она только от libc.so.6 зависит).
Для работы pthread_cancel требуется libgcc_s.
Такой зависимости у glibc-core нет.
Многопоточное приложение, которое пересобрано с новой glibc, зависит только от libc.so.6 (чтобы убедиться в этом, можно собрать приложенный src.rpm -- это тестовая программа из man pthread_cancel).

Приложения, использующие pthread_cancel, _пока что_ работают по счастливой случайности - пакеты, которые пока не пересобраны с новой glibc, зависят от (пустышки) libpthread.so.0 из пакета glibc-pthread. А у пакета glibc-pthread есть зависимость от libgcc_s.

Нужно добавить к libc-core зависимость от libgcc_s.
Comment 1 Ivan A. Melnikov 2023-07-31 13:25:54 MSK
Для воспроизведения проблемы в Сизифе сейчас достаточно пересобрать libdb4.7.

hsh libdb4.7-4.7.25-alt12.src.rpm
hsh pthread_cancel_sample-0.0.1-alt1.src.rpm
hsh --init --pkg-build-list 'pthread_cancel_sample'

В полученное окружение libgcc1 не попадает.

$ hsh-shell
[...]
-bash-4.4$ pthread_cancel_sample
libgcc_s.so.1 must be installed for pthread_cancel to work
Aborted
-bash-4.4$
Comment 2 Alexey Sheplyakov 2023-07-31 14:45:07 MSK
#326131 TESTED #1 [test-only] sisyphus glibc.git=2.37.0.22.3593050c27-alt2
Comment 3 Repository Robot 2023-08-20 09:00:05 MSK
glibc-6:2.38.0.6.g7ac405a74c-alt1 -> sisyphus:

 Sat Aug 19 2023 Gleb F-Malinovskiy <glebfm@altlinux> 6:2.38.0.6.g7ac405a74c-alt1
 - Updated to glibc-2.38-6-g7ac405a74c.
 - Moved the libgcc_s requirement to the core subpackage (ALT#47078).
 - Added the --enable-fortify-source=3 flag to compile the libraries and
   utilities with the -D_FORTIFY_SOURCE=3 flag.
Comment 4 Gleb F-Malinovskiy 2023-08-20 10:38:03 MSK
Я ещё добавил Requires(pre): glibc-core в libgcc1, чтобы rpm не разрывал этот цикл в случайном месте и устанавливал сначала glibc-core, а потом libgcc1:

https://git.altlinux.org/gears/g/gcc13.git?p=gcc13.git;a=commitdiff;h=9017c454898e169555bc89950c45007a74deb509