Переход Firefox на zlib-rs выявил ошибку в микрокоде Intel Raptor Lake (13/14 поколения)



Организация Trifecta Tech Foundation (разработчик ntpd-rs, sudo-rs, zlib-rs) рассказала о переходе Firefox на библиотеку zlib-rs для сжатия gzip. Переход с zlib на zlib-rs дал ускорение от 3.3 до 32.5 раз при единичных операциях декодирования и от 2.7 до 10.86 раз при декодировании непрерывного потока.

Однако после интеграции zlib-rs в Firefox 151 пользователи столкнулись с аварийными завершениями из-за выхода за границы буфера (в Rust это приводило к панике, в Си — к незаметному повреждению данных). Проблема воспроизводилась не у всех, а в бета-тестировании не проявилась. После выяснения закономерности оказалось, что сбой вызван ошибкой в микрокоде CPU Intel Raptor Lake (13 и 14 поколения): инструкция mov byte ptr [rsi + rdi + 1], ch записывала в память не биты 8-15 (регистр CH), а биты 0-7 (регистр CL). LLVM 22 генерировал эту инструкцию, в LLVM 23 она уже не генерируется.

В Firefox 152 ошибка устранена обходным путём (патч в zlib-rs), но проблема остаётся на уровне микрокода Intel.

🐧Обсудить в Чате Linux
Просмотры: 1 341
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти