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

  • Зеленый - хороший цвет для крокодила, а не для банка

    "В сентябре 2020 года Красногорский городской суд Московской области вынес приговор бывшему начальнику сектора управления прямых продаж Московского…

  • Новосратовка

    На Фонтанке новость-реклама о том, что зеленый змий начал финансирование одного застройщика в целях имплементации проекта по возведению очередного…

  • Госуслуги и иностранный номер телефона

    Додолбал МинЦифры до обещания в 2021 году устранить необходимость иметь именно российский мобильный номер для того, чтобы иметь возможность создать…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 0 comments