LINUX.ORG.RU

Что не так с этим флешем в Firefox на генте?

 , , , ,


0

1

Всем привет. Честно говоря, не уверен, что пишу по адресу, но вдруг кто идею подкинет. Смысл вот в чем: есть две генты - дома и на работе. Рабочая гента была склонирована с домашней, поэтому различия в пакетах очень незначительные, а конфиги вообще одинаковые, кроме ядра и package.use. Проблема вот в чем: в один прекрасный момент на домашней системе в огнелисе отвалился флеш. Отвалился совсем.

Если запускать фаер из консольки, там появляется что-то такое:

Assertion failure: IsSingleThreaded(), at /var/tmp/portage/www-client/firefox-kde-opensuse-41.0.2/work/mozilla-release/security/sandbox/linux/Sandbox.cpp:470
[16016] WARNING: pipe error (68): Соединение разорвано другой стороной: file /var/tmp/portage/www-client/firefox-kde-opensuse-41.0.2/work/mozilla-release/ipc/chromium/src/chrome/common/ipc_channel_posix.cc, line 459

На то, что это мод фаерфокса можно внимание не обращать, поскольку ошибка характерна вообще для любого фаера, включая firefox-bin.

Браузер работает вполне сносно, не падает, ничего такого, просто не работает флеш, как будто его нет, но при этом в списке плагинов он есть. Пробовал adobe-flash и freshplayer - оба одинаково не работают. При этом на рабочем компе все в порядке. И именно вопрос, почему там все в порядке меня и беспокоит.

Кроме того, я пробовал и firefox-developer-bin (это который 43 версии). Там вроде бы для вкладкок используются отдельные процессы. Короче, я в нем не могу открыть ни один сайт, потому что любая вкладка падает сразу же с такой же ошибкой, как я выше написал.

На багзилле генты этот баг уже есть, но там девелоперы - ленивые задницы и они в упор не понимают, что же от них хотят.

Что я хотел бы вообще узнать?

1. Почему так?

2. Как можно сравнить список установленных пакетов на двух системах, кроме diff для двух eix -I? Если никак, то как из вывода eix исключить время установки пакета, но оставить версии и USE-флаги?

3. Кого еще можно пнуть, чтобы багом занялись?

Если кому интересно, фиксится все достаточно просто: надо в mozilla-release/security/sandbox/linux/Sandbox.cpp найти и закомментить

MOZ_RELEASE_ASSERT(IsSingleThreaded());

После этого флеш волшебным образом начинает работать.



Последнее исправление: Slaviro (всего исправлений: 1)
Ответ на: комментарий от Chaser_Andrey

https://bugs.gentoo.org/show_bug.cgi?id=562388

Ну, вообще вот этот. Гента при том, что это проблема именно генты. Например, на арче, который вообще ничего не патчит, такого глюка нет. Да и на генте, как я написал, на одной есть, на другой нет.

Slaviro
() автор топика
Ответ на: комментарий от Slaviro

Например, на арче, который вообще ничего не патчит, такого глюка нет.

firefox-bin ничего не патчит.

init_6 ★★★★★
()
Ответ на: комментарий от Slaviro

Например, на арче, который вообще ничего не патчит, такого глюка нет.

Да? А я вот такой багрепорт видел:

I am running Firefox 40 (the special OpenSuse fork that has KDE integration, but it's otherwise identical, I think) and my Linux distro is Arch Linux. I get the following terminal output when I try to use flash, it repeats continuously:

Assertion failure: IsSingleThreaded(), at /usr/src/packages/BUILD/firefox-kde-opensuse/src/mozilla-release/security/sandbox/linux/Sandbox.cpp:442
[Parent 14769] WARNING: pipe error (49): Connection reset by peer: file /usr/src/packages/BUILD/firefox-kde-opensuse/src/mozilla-release/ipc/chromium/src/chrome/common/ipc_channel_posix.cc, line 459

i-rinat ★★★★★
()

Слушай, а у тебя случайно не проприетарный драйвер от nVidia?

Если да, включена ли у тебя __GL_THREADED_OPTIMIZATIONS? Если явно не включал, поищи в настройках что-то с threaded optimizations и убедись, что оно выключено.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Блин, огромное просто спасибо! Это реально было причиной. Отключил - и сразу и флеш завелся, и firefox-developer-bin. Просто офигеть. Как ты это вообще связал?

Slaviro
() автор топика
Ответ на: комментарий от Slaviro

Да вот хотел сначала тебя попросить вставить перед assert'ом что-то типа while(1);, чтобы можно было не спеша подцепиться gdb к работающему процессу и посмотреть, что там за нити запущены. Потом осенило, что abort() сам по себе можно использовать для сброса корки, которую уже можно препарировать. Вспомнил о том багрепорте; там пользователь сгенерил корку и получил бектрейс. Открыл его, поглядел. Пошёл глядеть, как работает IsSingleThreaded(); увидел, что он срабатывает, когда в /proc/<pid>/task больше одного элемента. Снова посмотрел в бектрейс, увидел во второй нити libnvidia-glcore.so.352.41, вспомнил о фиче проприетарных дров nVidia выносить обработку OpenGL в отдельный поток.

i-rinat ★★★★★
()
17 декабря 2015 г.
Ответ на: комментарий от i-rinat

Так вот почему многопоточный OpenGL до сих пор не включен по умолчанию...

ZenitharChampion ★★★★★
()

флеш - а что это?

anonymous
()
Ответ на: комментарий от i-rinat

Вот теперь в самом деле торт.

anonymous
()
Ответ на: комментарий от Slaviro

Можешь проверить, работает ли Firefox Nightly с включенными __GL_THREADED_OPTIMIZATIONS?

В багрепорте просят проверить, а до машины с nVidia я ещё не скоро доберусь.

i-rinat ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.