dmitrmax (dmitrmax) wrote,
dmitrmax
dmitrmax

Category:

Баг-красавец, но не мой

На работе новый комп на основе AMD Ryzen 9 3950X. Поставили туда Debian, все дела, стал настраивать по-тихоньку для себя и дошел до момента, когда потребовалось поставить KeepassXC. А поскольку в других местах у меня он везде последней версии 2.6.2, а в Debian buster он только версии 2.5.4, то для исключения проблем совместимости, решил собрать бэкпорт.

А при построении пакета там обязательным шагом собираются и прогоняются юнит-тесты. И вот они-то и не проходят. "Что за ерунда?" - думаю я. Стал разбираться. Проблемы возникают в тесте, который оперирует стандартной Qt'шной hash-таблицей QHash - случается что при добавлении двух разных ключей, срабатывает проверка, что второй ключ уже содержится в таблице.

Long story short: случается это не всегда, а когда ключем являются значения типа QUuid. QUuid должны содержать в себе рандомные 16 байт, но как оказалось, оба QUuid'а состояли из всех единичных битов! Но как же так? Оказывает, что Qt умеет определять поддержку процессором инструкции RDRAND, которая аппаратно выдает случайное число, и в моём случае процессор поддерживает эту инструкцию, так образом QUuid формировался с её помощью. Ну а почему вдруг аппаратная инструкция выдает вместо случайных чисел одни FF'ы? А оказывается в микрокоде AMD был баг, а у меня был не обновленный BIOS, который не содержал обновления микрокода.

Требуйте доливу пива после отстою пены обновления BIOS после получения новой тачки!
Tags: debian, linux, programming, железо, пиздец
Subscribe

  • Это энтерпрайз, детка!

    Когда сталкиваешься с каким-то форменным нелогичным пиздецом, когда сделано так, чтобы удобно было манагерам, а не клиентам, когда угль может…

  • Кража личности и денег

    Интересный материал появился на Фонтанке о том, как потерять телефон, учетку от ГосУслуг и попасть на кучу денег. Хотя в статье не описаны…

  • Русский проект

    Как это часто бывает, зашел на Ютьюб туда-сюда по ссылке сходил и попал на это. Тем, кто застал 90-е, наверное, будет что вспомнить. Который из…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 0 comments