Bug 22583 - libcryptopp-5.6.0-alt3 broken on x86_64 (SHA256 infinite loop)
Summary: libcryptopp-5.6.0-alt3 broken on x86_64 (SHA256 infinite loop)
Status: CLOSED WORKSFORME
Alias: None
Product: Sisyphus
Classification: Development
Component: libcryptopp (show other bugs)
Version: unstable
Hardware: all Linux
: P3 critical
Assignee: Vitaly Lipatov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on: 22582
Blocks:
  Show dependency tree
 
Reported: 2009-12-20 21:00 MSK by Sergey Vlasov
Modified: 2021-07-01 14:30 MSK (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Sergey Vlasov 2009-12-20 21:00:46 MSK
Пакет libcryptopp-5.6.0-alt3 на x86_64 получился нерабочим из-за ошибки https://bugzilla.altlinux.org/show_bug.cgi?id=22582 в binutils; в результате сейчас, например, amule при запуске практически сразу зависает с 100% CPU.

Ошибка обнаруживается при запуске "./cryptest v" после сборки библиотеки (тест SHA256 тоже зависает либо завершается с segmentation fault); этот тест следовало бы выполнять при сборке пакета, чтобы не пропускать в Сизиф заведомо сломанные сборки.

В качестве объезда до исправления binutils можно, например, добавить в config.h #define CRYPTOPP_DISABLE_X86ASM.

Вот этот способ тестирования, кстати, неправильный:

./cryptest v 2>&1 | tee cryptest.log
grep -qs '^FAILED' cryptest.log && exit 1 || :

Проблема в том, что не обнаруживается аварийное завершение теста (например, segmentation fault), если тест не успел выдать FAILED.  Нужно, например, так:

( ./cryptest v 2>&1 || printf "\nFAILED: exit %%s\n" "$?" ) | tee cryptest.log
grep -qs '^FAILED' cryptest.log && exit 1 || :
Comment 1 Sergey Vlasov 2009-12-20 21:37:55 MSK
Хм, с CRYPTOPP_DISABLE_X86ASM тест libcryptopp проходит, но amule при запуске падает с SIGSEGV в CryptoPP::SHA256::Transform ().
Comment 2 Sergey Vlasov 2009-12-20 22:49:03 MSK
Оказывается, отключить ассемблерные реализации через CRYPTOPP_DISABLE_X86ASM в этой прекрасной библиотеке просто так нельзя, поскольку от этого у неё ломается ABI (config.h там мало того что торчит наружу, так ещё и параметры его используются в куче прочих заголовков). Так что отключение неработающего ассемблерного кода возможно только вместе с пересборкой всех клиентов (и с простановкой каких-то жёстких зависимостей на этот вариант конфигурации), либо придётся ждать исправления binutils.
Comment 3 Vitaly Lipatov 2009-12-21 01:11:58 MSK
(В ответ на комментарий №0)
...
> Ошибка обнаруживается при запуске "./cryptest v" после сборки библиотеки (тест
> SHA256 тоже зависает либо завершается с segmentation fault); этот тест
> следовало бы выполнять при сборке пакета, чтобы не пропускать в Сизиф заведомо
> сломанные сборки.
Я пытался его выполнять, но он настолько затянулся по времени, что я не решился его включить. Возможно, у меня он тоже зависал... Хотя я на 32-битах проверял.

> Проблема в том, что не обнаруживается аварийное завершение теста (например,
> segmentation fault), если тест не успел выдать FAILED.  Нужно, например, так:
> 
> ( ./cryptest v 2>&1 || printf "\nFAILED: exit %%s\n" "$?" ) | tee cryptest.log
> grep -qs '^FAILED' cryptest.log && exit 1 || :
Спасибо, исправлю.
Comment 4 Sergey Vlasov 2010-04-18 20:11:56 MSD
Ping!
https://bugzilla.altlinux.org/show_bug.cgi?id=22582 в binutils давно исправлено.

Поправка к коду проверки результатов теста:

( ./cryptest v 2>&1 || printf '\nFAILED: exit %%s\n' "$?" ) | tee cryptest.log
grep -qs '^FAILED' cryptest.log && exit 1 || :
Comment 5 Vitaly Lipatov 2021-07-01 14:30:59 MSK
В Сизифе 8.5.0, о проблемах неизвестно. Тест во время сборки проходит.