Bug 22583 - libcryptopp-5.6.0-alt3 broken on x86_64 (SHA256 infinite loop)
: libcryptopp-5.6.0-alt3 broken on x86_64 (SHA256 infinite loop)
Status: NEW
: Sisyphus
(All bugs in Sisyphus/libcryptopp)
: unstable
: all Linux
: P3 critical
Assigned To:
:
:
:
: 22582
:
  Show dependency tree
 
Reported: 2009-12-20 21:00 by
Modified: 2010-04-18 20:11 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2009-12-20 21:00:46
Пакет 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 From 2009-12-20 21:37:55 -------
Хм, с CRYPTOPP_DISABLE_X86ASM тест libcryptopp проходит, но amule при запуске
падает с SIGSEGV в CryptoPP::SHA256::Transform ().
------- Comment #2 From 2009-12-20 22:49:03 -------
Оказывается, отключить ассемблерные реализации через CRYPTOPP_DISABLE_X86ASM в
этой прекрасной библиотеке просто так нельзя, поскольку от этого у неё ломается
ABI (config.h там мало того что торчит наружу, так ещё и параметры его
используются в куче прочих заголовков). Так что отключение неработающего
ассемблерного кода возможно только вместе с пересборкой всех клиентов (и с
простановкой каких-то жёстких зависимостей на этот вариант конфигурации), либо
придётся ждать исправления binutils.
------- Comment #3 From 2009-12-21 01:11:58 -------
(В ответ на комментарий №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 From 2010-04-18 20:11:56 -------
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 || :