Я столкнулся с самой странной ошибкой в нескольких последних версиях Firefox, так как я перешел на Windows 10 (Pro).
После каждой перезагрузки Firefox, по-видимому, полностью глючит: сохраненные и новые вкладки пусты, страницы не загружаются, и программа не завершает работу в обычном режиме. Когда я пытаюсь закрыть его, процесс начинает использовать больше ресурсов процессора (около 20%), но это все. Я должен убить его через диспетчер задач.
Я сделал подарок, чтобы проиллюстрировать это: http://i.imgur.com/S1a8WXX.gif
Сначала я попробовал все следующее, но безрезультатно:
- сбросить профиль
- запустить Firefox в безопасном режиме
- использовать другую версию (пробовал стандартную, разработчик и ночные версии)
- отключить антивирус
- отключить Smart Screen
- проверьте журнал событий Windows (ничего не видел о Firefox)
- полностью переустановить Windows 10
Единственное, что, казалось, работало временно, это переустановка Firefox.
В конце концов, я обнаружил, что простая замена исполняемого файла на его копию решает проблему до следующей перезагрузки.
Копия во всех аспектах идентична оригиналу. Тот же размер, тот же MD5, те же разрешения, те же атрибуты.
Все, что я делаю, это кликаю и перетаскиваю исполняемый файл в папке программы, переименовываю старый в «firefox old.exe», переименовываю копию в «firefox.exe».
Исполняемый файл «firefox old.exe» продолжает демонстрировать то же странное поведение, в то время как новый, хотя и идентичный, работает.
Пока я не перезагружаюсь. Затем я должен сделать те же самые шаги снова.
Насколько я могу судить, все остальные программы, включая браузеры, ведут себя нормально.
Может кто-нибудь сказать мне, что здесь происходит?
Как две одинаковые копии одного и того же исполняемого файла могут вести себя по-разному?
Любые подсказки о том, как диагностировать это?
Обновление: проблема не возникает при каждой перезагрузке.
Обновление 2: если я сначала запускаю работающий «firefox.exe», то ранее вызывающий ошибку «firefox old.exe», пока другой еще открыт, они оба работают нормально. Который был бы аргументом для проблемы профиля. Но опять же, очистка профилей ничего не изменила.
Обновление 3: установка и запуск Firefox без прав администратора ничего не меняет. С другой стороны, переносимая версия 55.0.2(64-разрядная версия) и установленная версия ESR 52.3.0(64-разрядная версия) не затрагиваются.Кроме того, в Firefox Developer Edition 56.0b3(64-разрядная версия) простое изменение имени исполняемого файла на что-либо, кроме "firefox", и оставление его таким образом, по-видимому, предотвращает повторное появление ошибки после перезагрузки.
Обновление 4: поведение, кажется, меняется, но я не знаю почему. Теперь, просто запустив переименованную копию исполняемого файла, такого как «firefox2.exe», и закрыв ее, вы снова заработаете обычный «firefox.exe». Я также попытался загрузиться в безопасном режиме, который не решил проблему. Как ни странно, вышеупомянутое «исправление» не работало в безопасном режиме. Пробовал сканировать реестр на предмет изменений, но я не нашел ничего значимого, насколько я могу судить.
Обновление 5: я пытаюсь отладить процесс с помощью Process Monitor и Windbg, но я не эксперт, и я даже не знаю, что искать в огромном количестве сгенерированных журналов…
Обновление 6: я наконец-то получил новую информацию.
Когда я запускаю работающий firefox2.exe с аргументом -console
, консоль выводит только следующие две строки:
Unable to read VR Path Registry from C:\Users\Victor\AppData\Local\openvr\openvrpaths.vrpath
Unable to read VR Path Registry from C:\Users\Victor\AppData\Local\openvr\openvrpaths.vrpath
Но когда я запускаю firefox.exe, я получаю следующее:
Unable to read VR Path Registry from C:\Users\Victor\AppData\Local\openvr\openvrpaths.vrpath
Unable to read VR Path Registry from C:\Users\Victor\AppData\Local\openvr\openvrpaths.vrpath
[Parent 592] WARNING: Failed to launch tab subprocess: file z:/build/build/src/ipc/glue/GeckoChildProcessHost.cpp, line 604
[Parent 592] WARNING: Failed to launch tab subprocess: file z:/build/build/src/ipc/glue/GeckoChildProcessHost.cpp, line 604
[Parent 592] WARNING: Failed to launch tab subprocess: file z:/build/build/src/ipc/glue/GeckoChildProcessHost.cpp, line 604
[Parent 592] WARNING: Failed to launch tab subprocess: file z:/build/build/src/ipc/glue/GeckoChildProcessHost.cpp, line 604
[Parent 592] WARNING: Failed to launch tab subprocess: file z:/build/build/src/ipc/glue/GeckoChildProcessHost.cpp, line 604
[Parent 592] WARNING: Failed to launch tab subprocess: file z:/build/build/src/ipc/glue/GeckoChildProcessHost.cpp, line 604
Extension error: [Exception... "Component returned failure code: 0xc1f30001 (NS_ERROR_NOT_INITIALIZED) [nsIMessageSender.sendAsyncMessage]" nsresult: "0xc1f30001 (NS_ERROR_NOT_INITIALIZED)" location: "JS frame :: resource://gre/modules/ExtensionParent.jsm :: _onExtensionBrowser :: line 346" data: no] undefined 346
[[Exception stack...
(полный вывод здесь: https://pastebin.com/hZ90jRbz )
Затем снова, когда я пытаюсь закрыть его:
[Parent 592] WARNING: Failed to launch tab subprocess: file z:/build/build/src/ipc/glue/GeckoChildProcessHost.cpp, line 604
Extension error: [Exception... "Component returned failure code: 0xc1f30001 (NS_ERROR_NOT_INITIALIZED) [nsIMessageSender.sendAsyncMessage]" nsresult: "0xc1f30001 (NS_ERROR_NOT_INITIALIZED)" location: "JS frame :: resource://gre/modules/ExtensionParent.jsm :: _onExtensionBrowser :: line 346" data: no] undefined 346
[[Exception stack...
(полный вывод: https://pastebin.com/6d2RkbQY )
Обновление 7: после поиска в консоли некоторых результатов я обнаружил на форуме WINE тему о баге, который несколько напоминает мой.
Пост говорит:
Последний Firefox 51.0.1 (32-разрядный). Wine 2.0 (но такое же поведение в более ранних версиях). При использовании winecfg для установки более новой версии Windows (например, Windows 7), а затем запуска Firefox, он запускается с полностью пустой вкладкой. Настройки меню и т.д. Работают, но вкладка пуста. Кажется, связано с этим:
[Parent 37] WARNING: Failed to launch tab subprocess: file c:/builds/moz2_slave/m-rel-w64-00000000000000000000/build/src/ipc/glue/GeckoChildProcessHost.cpp, line 574
Забавно, что впервые после установки этого 32-битного префикса Win7 отображаются вкладки, но после закрытия и перезапуска браузера все вкладки пусты. Есть идеи? Необходимо запустить с более высокой версией Windows, поскольку для некоторых надстроек и других программ требуется более высокая версия, чем XP.
Поток указывает на сообщение об ошибке, в котором я нашел это «исправление»:
Пришлось изменить эту строку в user.prefs с true на false для Firefox 54, поскольку e10s теперь используется по умолчанию (для пользователей без надстроек в любом случае и для Win7):
user_pref("browser.tabs.remote.autostart.2", false);
Это фактически отключает многопроцессорное выполнение. Что несколько «решает» проблему. (Есть некоторые проблемы с некоторыми расширениями, такими как uBlock Origin.)
Но почему?
Обновление 8: теперь, после двух перезагрузок, Developer Edition работает без каких-либо изменений, и стандартная версия ошибки. Я до сих пор не знаю, как это понять.
PS: Я также спрашивал на сайтах поддержки Mozilla и Microsoft, но пока не получил ответа.