Адрес: ул. Б. Очаковская 32 Москва Россия
Наши официальные канал и чат в telegram
Поднимем Devuan на вершину Distrowatch! Просто перейдите по ссылке один раз в день.

При переводе Firefox на zlib-rs разработчики натолкнулись на ошибку в CPU Intel

Новости собранные из разных RSS источников
Аватара пользователя
root:#
Site Admin
Сообщения: 1943
Зарегистрирован: Вт ноя 08, 2022 3:27 pm
Благодарил (а): 59 раз
Поблагодарили: 28 раз

При переводе Firefox на zlib-rs разработчики натолкнулись на ошибку в CPU Intel

Сообщение root:# »

При переводе Firefox на zlib-rs разработчики натолкнулись на ошибку в CPU Intel
Организация 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 она не генерируется).
Источник: https://www.opennet.ru/opennews/art.shtml?num=65705