Организация Trifecta Tech Foundation, развивающая такие проекты, как ntpd-rs , sudo-rs , zlib-rs и bzip2-rs , рассказала о переходе Firefox на использование библиотеки zlib-rs для сжатия и распаковки c использованием метода gzip. Кроме защиты от проблем , вызванных ошибками при работе с памятью, переход с zlib на zlib-rs привёл к заметному повышению производительности - в проведённых тестах ускорение составило от 3.3 до 32.5 раз при единичных операциях декодирования и от 2.7 до 10.86 раз при декодировании непрерывного потока. Библиотека zlib-rs была задействована в выпуске Firefox 151, но после её интеграции некоторые пользователи столкнулись с проблемой , приводившей к аварийному завершению из-за выхода за допустимые границы. Отмечается, что в коде на языке Rust проблема приводила к аварийной остановке, в то время как в Си подобная ситуация привела бы к незаметному повреждению данных без остановки работы. В качестве решения в выпуске 151.0.1 было возвращено использование старой библиотеки zlib. Первое проявление проблемы было замечено в процессе тестирования ранних сборок более года назад, но на системах разработчиков её не удавалось воспроизвести. В конечном счёте, после года тестирования на пользователях бета-выпусков было решено активировать zlib-rs в релизе Firefox 151. После новой серии отчётов о проблемах и разбора закономерности было выяснено , что сбой вызван ошибкой в микрокоде CPU Intel на базе микроархитектуры Raptor Lake 13 и 14 поколений, связанной с использованием не того регистра. Проблема возникала из-за того, что генератор кода LLVM использовал инструкцию "mov byte ptr [rsi + rdi + 1], ch" при записи в память результатов кодирования Хаффмана . При выполнении данной инструкции на CPU Raptor Lake вместо 8-15 битов из регистра RCX, соответствующих указанному в инструкции регистру CH, в память записывались биты 0-7, соответствующие регистру CL. При подготовке выпуска Firefox 152 ошибка была устранена обходным путём и патч перенесён в основной состав zlib-rs. Генерация проблемной инструкции замечена в LLVM 22 (в находящейся в разработке ветке LLVM 23 она не генерируется).
При переводе Firefox на zlib-rs разработчики натолкнулись на ошибку в CPU Intel
Срочно
- Обновление nginx 1.31.2 с устранением уязвимостей, эксплуатируемых через HTTP/3, HTTP2 и gRPC
- Компания Epic Games опубликовала систему управления версиями Lore
- Компания Canonical представила систему распознавания речи Myna
- В ядре Linux 7.2 прекращена поддержка стека протоколов AppleTalk
- Уязвимости в MySQL, VirtualBox, Solaris и других продуктах Oracle
Реагировать
Лента
- Обновление nginx 1.31.2 с устранением уязвимостей, эксплуатируемых через HTTP/3, HTTP2 и gRPC
- Компания Epic Games опубликовала систему управления версиями Lore
- Компания Canonical представила систему распознавания речи Myna
- В ядре Linux 7.2 прекращена поддержка стека протоколов AppleTalk
- Уязвимости в MySQL, VirtualBox, Solaris и других продуктах Oracle
- GrapheneOS портирован на Android 17
- Выпуск VirtualBox 7.2.10
- Выпуск мобильной платформы Android 17
- Выпуск Firefox 152 с обновлённым конфигуратором и поддержкой JPEG XL
- Релиз графической библиотеки LDL 0.3, оптимизированной для маломощных систем
- Релиз среды рабочего стола KDE Plasma 6.7
- Релиз FreeBSD 15.1
- Конкурс разработчиков СПО Код Логики
- В GCC утверждено добавление бэкенда для WebAssembly
- Проект Curl на месяц прекратит приём отчётов об уязвимостях