Firefox: просмотр определенного файла SVG приводит к тому, что система перестает отвечать

Firefox: просмотр определенного файла SVG приводит к тому, что система перестает отвечать

Важный:

Несколько постоянных пользователей SuperUser в настоящее время пытаются сузить масштаб и причину этой проблемы.В настоящее время мы ищем желающих добровольцев.заполнить формуздесьпосле проведения следующего теста:

  1. Установите или запустите последнюю версию Firefox (например, 24.x или 25.x; бета-версия тоже была бы интересна).

  2. Следите за использованием памяти и процессора, используя эквивалент диспетчера задач Windows вашей платформы. У вас должен быть открыт соответствующий диспетчер задачдовы открываете ссылку ниже.

  3. Сохраните любую незаконченную работу в вашем браузере Firefox, так как он может выйти из строя. Мы не несем ответственности за любую потерянную информацию.

  4. Откройте следующую ссылку в новой вкладке:http://openclipart.org/people/GR8DAN/showbizframe.svg

  5. Наблюдайте изменения в использовании процессора и памяти процессом Firefox до и после загрузки изображения. Если разница между использованием памяти Firefoxдо и послеоткрытие вышеуказанной вкладки очень существенно (1 ГБ и более),илиесли Firefox зависает/вылетает,илиесли вы видите устойчиво высокую загрузку ЦП,в вашей системе есть ошибка. В противном случае у вас нет ошибки. В любом случае заполните форму соответствующим образом.

Мы пытаемся сузить симптомы и причины, чтобы обновить ошибку наMozilla баг-трекерчтобы разработчики Mozilla могли решить эту проблему. Мы делаем это специально, потому что это потенциально широкомасштабная, высокоприоритетная проблема; любые веб-сайты, которые позволяют встраивать изображения, могут быть уязвимы для атаки типа «отказ в обслуживании» против значительной части пользователей, посещающих страницу, если это начнет использоваться злонамеренно.

Обновление от 29.11.2013: ошибка была локализована следующим образом:

  • Не зависит от платформы. Ошибка была воспроизведена на Linux, Mac и Windows.

  • Проблема была воспроизведена с видеокартами AMD, Intel и Nvidia.

  • Это происходит только в Firefox и его производных. Chrome, IE, Opera не затронуты.

  • Проблема возникла в Firefox 25.0.1, Firefox 26 Beta, Firefox 27 Alpha и ночной сборке основного кода по состоянию на 28.11.2013.

  • Не все пользователи сталкиваются с крахом Firefox или общесистемной ситуацией Out of Memory (OOM). Такое поведение, по-видимому, ограничивается системами GNU/Linux с 4 ГБ ОЗУ или меньше.

  • В Firefox 27 Alpha и Nightly поведение немного отличается от Firefox 25 и 26 Beta: в более новых двух версиях высокое потребление ЦП и памяти в конечном итоге стабилизируется, если вы позволите изображению загружаться в течение длительного периода времени (от 10 до 20 секунд в большинстве систем). После того, как оно «стабилизируется», состояние памяти и ЦП возвращается к норме. Но в более старых двух выпусках состояние ЦП и памяти сохраняется до тех пор, пока вы не переключитесь на вкладку с отображаемым изображением, или пока вы не закроете Firefox полностью или вкладку.

  • Почти все системы с последними графическими драйверами могут воспроизводить его. У нас есть только одна система в файле, которая не испытываетлюбойсимптомы вообще, и он использует очень старый графический драйвер (около 3 лет). Это указывает на то, что это не какое-то конкретное оборудование, а скорее ошибка в очень старом драйвере, который использовался, что, как ни странно, предотвращает возникновение дефектного поведения.

Исходный вопрос:

Я использую Firefox firefox-25.0-3.fc19.x86_64 на Fedora 19 (ядро 3.11.9-200.fc19.x86_64). Если я откроюэта ссылкапри использовании Firefox моя система перестает отвечать. Запуск htopна втором мониторе показывает огромный скачок использования памяти, мои 3954 МБ оперативной памяти немедленно заполняются, затем своп медленно заполняется, использование одного из процессоров достигает 100%, затем система перестает отвечать, мышь становится медленной, htopобновление занимает десятки секунд и т. д. Если я завершаю процесс FF, все возвращается к норме.

Даже если перезапустить FF в безопасном режиме с отключенными плагинами, поведение то же самое. Я попробовал на машине коллеги, у нее ~8000 МБ ОЗУ, происходит то же самое (высокое использование памяти и 1 процессор достигает 100%), когда использование достигает ~4096 МБ, появляется диалоговое окно с просьбой завершить работу Firefox (может быть, Firefox жестко запрограммирован на использование только 4096 МБ?).

Если я использую плагин (quickjava) для отключения javascript, я могу открыть ссылку без проблемы. Однако на машине моего коллеги это не сработает: я попробовал другие сайты, чтобы убедиться, что JS отключен, но проблема осталась.

Что является причиной этого?

ОБНОВЛЯТЬ: Проблема возникает при просмотреэтот SVG.

решение1

  1. Это не JavaScript; дело в том, что по ссылке, которую вы разместили, отображается множество сложных файлов масштабируемой векторной графики (SVG).
  2. Аппаратно-ускоренный графический стек Fedora печально известен своими ошибками, поэтому вполне возможно, что использование графического стека Firefox приводит к ошибке в графическом стеке (в Mesa, Xorg DDX или ядре).
  3. Также возможно, что SVG-изображения на самом деле отображаются впрограммное обеспечениеи программный рендерер все еще глючит.

Давайте разделять и властвовать:

Отключить аппаратное ускорение

В FF перейдите в «Правка» -> «Настройки», нажмите «Дополнительно», затем на вкладке «Общие» в разделе «Обзор» снимите флажок «Использовать аппаратное ускорение, если доступно».

Теперь попробуйте снова зайти на тот же сайт. Если вынеперегружаем ЦП/память, то мы знаем, что проблема либо в ускорении 2D Canvas GPU (либо в использовании Firefox, либо в графическом стеке бэкэнда), либо в рендерере SVG.

Если выделатьполучите ту же перегрузку ЦП/памяти с отключенным аппаратным ускорением, то это может быть ошибка в парсере SVG, которая, вероятно, выполняется в чистом программном обеспечении. Хотя в этом случае мы, вероятно, столкнулись бы с этой проблемой и в Windows, но у нас ее нет (проверено на FF 24.1.0 на Windows, и она была медленной, но не потребляла все ресурсы ЦП и ОЗУ, как у вас).

Я подозреваю, что в Месе произошла какая-то утечка памяти.

Еще несколько вещей, которые стоит попробовать

  1. Зайдите about:supportв Firefox, нажмите «Копировать текст в буфер обмена» и опубликуйте это здесь (pastebin или что-то в этом роде). Это поможет тем из нас, кто знаком с проблемным пространством, определить, какова ситуация с вашим оборудованием и графическим стеком.
  2. Зайдите about:memoryв Firefox, отметьте галочкой пункт «Verbose», затем нажмите «Measure». Было бы здорово, если бы вы могли это сделатьсразу послевы переходите на страницу, нарушающую правила, — если в этот момент вы можете заставить FF что-то сделать.
  3. Запустите Firefox из терминала следующим образом: LIBGL_DEBUG=verbose firefox -safe-mode. Перейдите прямо на сайт, который OOMs. Дайте ему поработать всего несколько секунд (достаточно, чтобы явно начать проблему, но не позволяйте ей перегрузить вашу систему), затем закройте его. Опубликуйте вывод здесь, вместе с выводом dmesg.

Эти вещи дадут нам больше отладочной информации, чтобы понять, где именно проблема, но большинство этих шагов сосредоточены вокруг предположения, что проблема в графическом стеке. Если это не так, большая часть этого не будет полезна.

Обновлять:Я создалсырая ссылка githubв котором нет javascript или какой-либо ерунды вообще; это просто длинный список SVG. Он должен рухнуть, если у вас есть дефектное поведение, и он устраняет все другие возможные источники проблемы.

Обновление 2:ОП изолировал проблемуэто конкретное изображение.

Связанный контент