Bug 22583

Summary: libcryptopp-5.6.0-alt3 broken on x86_64 (SHA256 infinite loop)
Product: Sisyphus Reporter: Sergey Vlasov <vsu>
Component: libcryptoppAssignee: Vitaly Lipatov <lav>
Status: CLOSED WORKSFORME QA Contact: qa-sisyphus
Severity: critical    
Priority: P3 CC: lav
Version: unstable   
Hardware: all   
OS: Linux   
Bug Depends on: 22582    
Bug Blocks:    

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, о проблемах неизвестно. Тест во время сборки проходит.