Bug 31744

Summary: Флеш-плагин падает с ошибкой сегментации после обновления Firefox
Product: Sisyphus Reporter: Evgenii Terechkov <evg>
Component: firefoxAssignee: Alexey Gladkov <legion>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: major    
Priority: P3 CC: egori, glebfm, legion, rauty, rider, sbolshakov, zerg
Version: unstable   
Hardware: all   
OS: Linux   
URL: https://bugzilla.mozilla.org/show_bug.cgi?id=1205199
Attachments:
Description Flags
Лог транзакции apt none

Description Evgenii Terechkov 2016-02-01 06:55:42 MSK
Created attachment 6481 [details]
Лог транзакции apt

После обновления до firefox-44 (прилагаю полный лог транзакции apt) на многих сайтах стал падать с ошибкой сегментации плагин флеша (он обновлялся последний раз две недели назад, до 3:11.2.202.559-alt58).

Сообщение в логе при этом такие:
=8<===========================================================================================================================
root@teer# dmesg -T|grep -i segfault
[Mon Feb  1 08:43:18 2016] plugin-containe[3465]: segfault at 0 ip b34b27a8 sp bf83b2dc error 6 in libmozgtk.so[b34b2000+1000]
[Mon Feb  1 08:43:19 2016] plugin-containe[3476]: segfault at 0 ip b350f7a8 sp bff43acc error 6 in libmozgtk.so[b350f000+1000]
[Mon Feb  1 08:48:24 2016] plugin-containe[3810]: segfault at 0 ip b34a67a8 sp bff72cbc error 6 in libmozgtk.so[b34a6000+1000]
[Mon Feb  1 08:48:25 2016] plugin-containe[3821]: segfault at 0 ip b355d7a8 sp bf858d6c error 6 in libmozgtk.so[b355d000+1000]
[Mon Feb  1 10:51:37 2016] plugin-containe[8394]: segfault at 0 ip b34bd754 sp bfd9612c error 6 in libmozgtk.so[b34bd000+1000]
=8<===========================================================================================================================

Проявляется на x86_64/std-def и i586/std-pae. Есть дампы падений, но они весят по полтора мегабайта в сжатом виде. Сходу в них я ничего не увидел, gdb показывает только адреса памяти.

Не уверен, кто здесь виноват, плагин, firefox или кто-то ещё.
Comment 1 Evgenii Terechkov 2016-02-01 08:05:41 MSK
От расширений firefox не зависит, проявляется на новом пустом профиле браузера.

P.S.: что-то пока не нашел, где бы плагин не крошился. Т.е. от сайта вроде бы не зависит.
Comment 2 Alexey Gladkov 2016-02-01 11:27:47 MSK
Возможно, это связано с тем, что firefox перешёл на GTK3.
Comment 3 Evgenii Terechkov 2016-02-01 11:42:08 MSK
2legion: я смотрю, зависимость на gtk2 там никуда не делась (firefox-44 зависит от libgtk-x11-2.0.so.0). А можно для тестов как-то обратно переключиться на gtk2? Что-то сходу не нашел способа.
Comment 4 Alexey Gladkov 2016-02-01 12:10:16 MSK
Сейчас у них вот такие зависимости:

$ rpmquery -R firefox |grep gtk |cut -d\  -f1
libgtk-3.so.0()(64bit)
libgtk-x11-2.0.so.0()(64bit)

Попробуйте ванильную версию:

http://releases.mozilla.org/pub/firefox/releases/44.0/

Она ещё пока на gtk2. Официальный переход на gtk3 будет в следующей версии.
Comment 5 Evgenii Terechkov 2016-02-01 12:38:02 MSK
Идеально конечно было бы переключиться в рантайме или на крайняк пересобрать srpm/gear с ключом/патчем.

Попробую потыкать официальный релиз...
Comment 6 Evgenii Terechkov 2016-02-01 13:04:27 MSK
Попробовал официальную сборку (с http://releases.mozilla.org/pub/firefox/releases/44.0/linux-i686/en-US/), но т.к. сходу не понял, как заставить её использовать уже установленный флеш, пришлось скачать и установить и официальный бинарный пакет флеша.

С ними у меня все проверенный сайты на флеше работали без нареканий.
Comment 7 Anton Farygin 2016-02-01 13:06:13 MSK
Для запуска установленного в системе flash нужно починить это:
https://bugzilla.altlinux.org/show_bug.cgi?id=30572

Лёш, может исправишь уже эту ошибку ? тривиально же
Comment 8 Alexey Gladkov 2016-02-01 13:41:58 MSK
(In reply to comment #7)
> Для запуска установленного в системе flash нужно починить это:
> https://bugzilla.altlinux.org/show_bug.cgi?id=30572
> 
> Лёш, может исправишь уже эту ошибку ? тривиально же

Уже? Ты обратил внимение, что меня даже в наблюдателях нет у #30572 ? Плюс она висит на неком p6, который я не поддерживаю более чем полностью.

Ок, сделаю... особенно в свете, того что NPAPI скоро оторвут совсем.
Comment 9 Sergey V Turchin 2016-02-01 14:59:32 MSK
Повесить на Adobe не получится. Если сделают изменения/исправления или даже 2 разных сборки своего плагина, запакую, что будет возможно. А до тех пор firefox крайний в любом случае.
Comment 10 Sergey V Turchin 2016-02-01 15:00:09 MSK
К тому же, падает наверняка только в Firefox.
Comment 11 Evgenii Terechkov 2016-02-01 17:53:04 MSK
Попробовал на x86_64 удалить пакетный флеш и установил официальный бинарник плагина с сайта -  падает (с пакетным firefox44-gtk3).
Comment 12 Sergey V Turchin 2016-02-01 18:08:32 MSK
(В ответ на комментарий №11)
> Попробовал на x86_64 удалить пакетный флеш и установил официальный бинарник
В пакете именно тот бинарник и лежит.
Comment 13 Sergey V Turchin 2016-02-03 13:04:04 MSK
(В ответ на комментарий №4)
> Она ещё пока на gtk2. Официальный переход на gtk3 будет в следующей версии.
Так, может нам стоит идти по граблям после или хотя бы вместе с паровозом?
IMHO нам стоит переходить на gtk3 в firefox не раньше, чем на +1 версию от апстрима.

P.S.
2 Cas: в p7 такой древний gtk3, что нужно еще умудриться додуматься пытаться собирать с ним современные версии софта. У меня ff из task#149408 кроме падений вообще больше ничего не делает.
Comment 14 Sergey V Turchin 2016-02-03 13:45:12 MSK
https://bugzilla.redhat.com/show_bug.cgi?id=1253086#c23
Это решение?
Comment 15 Alexey Gladkov 2016-02-03 13:59:44 MSK
(In reply to comment #14)
> https://bugzilla.redhat.com/show_bug.cgi?id=1253086#c23
> Это решение?

Серёг, пока не знаю. Попробуем.
Comment 16 Alexey Gladkov 2016-02-03 14:04:25 MSK
Вообще, то что firefox у нас подцепил системный cairo ошибка. Мозилла регулярно ломает совместимость изменяя свою внуреннюю версию и затачиваясь на эти изменения. Вот яркий пример:

https://bugzilla.mozilla.org/show_bug.cgi?id=722975

Поэтому я думаю нам нужно в любом случае откатиться на внутриннюю версию cairo.
Comment 17 Evgenii Terechkov 2016-02-12 12:23:54 MSK
Так внутреннюю или системную cairo нужно использовать? Я запутался :-)

==8<=====================================================================
teer@teer ~ $rpm -q --lastchange firefox
* Ср фев 10 2016 Alexey Gladkov <legion@altlinux.ru> 44.0.1-alt1
- New release (44.0.1).
- Use system cairo.
==8<=====================================================================
Comment 18 Alexey Gladkov 2016-02-12 12:53:43 MSK
(In reply to comment #17)
> Так внутреннюю или системную cairo нужно использовать? Я запутался :-)

Сборка 44.0.1-alt1 работает ?
Comment 19 Evgenii Terechkov 2016-02-12 13:10:09 MSK
Нет, так же падает (писал об этом в https://bugzilla.altlinux.org/show_bug.cgi?id=31787).
Comment 20 Evgenii Terechkov 2016-02-16 07:44:19 MSK
Попробовал 44.0.2-alt2 из сизифа (на i686). Всё работает, ничего не падает.
Comment 21 Evgenii Terechkov 2016-02-16 17:05:36 MSK
(в смысле что флеш-плагин не падает, firefox-44.0.2 пришлось запустить из ванильной сборки, см. https://bugzilla.altlinux.org/show_bug.cgi?id=31787)
Comment 22 Alexey Gladkov 2016-02-17 18:12:56 MSK
Можете попробовать флеш с этой сборкой:

http://git.altlinux.org/repo/159421/

?
Comment 23 Evgenii Terechkov 2016-02-17 19:23:25 MSK
На x86_64 плагин сразу падает, с такой трассировкой:
=8<========================================================
Core was generated by `/usr/lib64/firefox/plugin-container /usr/lib64/browser-plugins/libflashplayer.s'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  gdk_window_lookup () at /usr/src/debug/firefox-44.0.2/mozilla/widget/gtk/mozgtk/mozgtk.c:585
585	STUB(gdk_window_lookup)
(gdb) bt
#0  gdk_window_lookup () at /usr/src/debug/firefox-44.0.2/mozilla/widget/gtk/mozgtk/mozgtk.c:585
#1  0x00007f3d7d339679 in mozilla::plugins::PluginInstanceChild::AnswerNPP_SetWindow (this=0x7f3d6b03d800, aWindow=...)
    at /usr/src/debug/firefox-44.0.2/mozilla/dom/plugins/ipc/PluginInstanceChild.cpp:1197
#2  0x00007f3d7c6c3f6c in mozilla::plugins::PPluginInstanceChild::OnCallReceived (this=0x7f3d6b03d800, msg__=..., reply__=@0x7ffcde51e5a0: 0x0)
    at /usr/src/debug/firefox-44.0.2/mozilla/objdir/ipc/ipdl/PPluginInstanceChild.cpp:2160
#3  0x00007f3d7c6ca853 in mozilla::plugins::PPluginModuleChild::OnCallReceived (this=this@entry=0x7f3d6b012830, msg__=..., reply__=@0x7ffcde51e5a0: 0x0)
    at /usr/src/debug/firefox-44.0.2/mozilla/objdir/ipc/ipdl/PPluginModuleChild.cpp:1202
#4  0x00007f3d7c62d17e in mozilla::ipc::MessageChannel::DispatchInterruptMessage (this=this@entry=0x7f3d6b012898, aMsg=..., stackDepth=stackDepth@entry=0)
    at /usr/src/debug/firefox-44.0.2/mozilla/ipc/glue/MessageChannel.cpp:1456
#5  0x00007f3d7c62e641 in mozilla::ipc::MessageChannel::DispatchMessage (this=this@entry=0x7f3d6b012898, aMsg=...) at /usr/src/debug/firefox-44.0.2/mozilla/ipc/glue/MessageChannel.cpp:1306
#6  0x00007f3d7c62eeb1 in mozilla::ipc::MessageChannel::OnMaybeDequeueOne (this=0x7f3d6b012898) at /usr/src/debug/firefox-44.0.2/mozilla/ipc/glue/MessageChannel.cpp:1279
#7  0x00007f3d7c617547 in MessageLoop::RunTask (this=0x7ffcde51fa68, task=0x7f3d6b0eca60) at /usr/src/debug/firefox-44.0.2/mozilla/ipc/chromium/src/base/message_loop.cc:364
#8  0x00007f3d7c61b9d9 in MessageLoop::DeferOrRunPendingTask (this=<optimized out>, pending_task=...) at /usr/src/debug/firefox-44.0.2/mozilla/ipc/chromium/src/base/message_loop.cc:372
#9  0x00007f3d7c61bae7 in MessageLoop::DoWork (this=0x7ffcde51fa68) at /usr/src/debug/firefox-44.0.2/mozilla/ipc/chromium/src/base/message_loop.cc:459
#10 0x00007f3d7c614e81 in base::MessagePumpForUI::HandleDispatch (this=0x7f3d6b0484c0) at /usr/src/debug/firefox-44.0.2/mozilla/ipc/chromium/src/base/message_pump_glib.cc:261
#11 0x00007f3d7c614eb4 in (anonymous namespace)::WorkSourceDispatch (source=<optimized out>, unused_func=<optimized out>, unused_data=<optimized out>)
    at /usr/src/debug/firefox-44.0.2/mozilla/ipc/chromium/src/base/message_pump_glib.cc:106
#12 0x00007f3d75744047 in g_main_dispatch (context=0x7f3d6b06f500) at gmain.c:3154
#13 g_main_context_dispatch (context=context@entry=0x7f3d6b06f500) at gmain.c:3769
#14 0x00007f3d75744278 in g_main_context_iterate (context=context@entry=0x7f3d6b06f500, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3840
#15 0x00007f3d7574431c in g_main_context_iteration (context=0x7f3d6b06f500, may_block=1) at gmain.c:3901
#16 0x00007f3d7c614a43 in base::MessagePumpForUI::RunWithDispatcher (this=0x7f3d6b0484c0, delegate=<optimized out>, dispatcher=<optimized out>)
    at /usr/src/debug/firefox-44.0.2/mozilla/ipc/chromium/src/base/message_pump_glib.cc:192
#17 0x00007f3d7c6175a6 in RunHandler (this=<optimized out>) at /usr/src/debug/firefox-44.0.2/mozilla/ipc/chromium/src/base/message_loop.cc:227
#18 MessageLoop::Run (this=this@entry=0x7ffcde51fa68) at /usr/src/debug/firefox-44.0.2/mozilla/ipc/chromium/src/base/message_loop.cc:201
#19 0x00007f3d7da507a9 in XRE_InitChildProcess (aArgc=<optimized out>, aArgv=<optimized out>, aGMPLoader=<optimized out>)
    at /usr/src/debug/firefox-44.0.2/mozilla/toolkit/xre/nsEmbedFunctions.cpp:623
#20 0x0000000000408754 in ?? ()
#21 0x0000000000000000 in ?? ()
(gdb) 
=8<========================================================
Comment 24 Evgenii Terechkov 2016-02-18 04:58:08 MSK
На i686 тоже плагин сразу падает с дампом.
Comment 26 Alexey Gladkov 2016-02-18 15:23:53 MSK
Нет. Оно уже есть в 44.0.2-alt3 и всё равно падает:

http://git.altlinux.org/people/legion/packages/firefox.git?p=firefox.git;a=blob;f=mozilla-bug-1205199.patch;h=2c8c036aa12790801e7dc2155f26fb9bfe8c630c;hb=982171c8c25974233e3756fd96455dbccc568cc3

firefox собран с gtk3, но имеет gtk2 как раз для плагинов. Такое ощущение, что выбирается не та версия. Сейчас проверяю ещё одну теорию.
Comment 27 Repository Robot 2016-02-19 06:10:26 MSK
firefox-44.0.2-alt3 -> sisyphus:

* Tue Feb 16 2016 Alexey Gladkov <legion@altlinux> 44.0.2-alt3
- Use GTK3 again.
- Add RedHat patches.
- Add require gst-plugins-ugly (ALT#30732).
- Fix javascript crash (ALT#31787).
- Fix flash player crash (ALT#31744).
Comment 28 Sergey V Turchin 2016-02-19 11:02:20 MSK
(В ответ на комментарий №27)
> - Add require gst-plugins-ugly (ALT#30732).
Может, всё-таки gst-plugins-ugly1.0 ?

$strings /usr/lib64/firefox/libxul.so | grep libgstreamer
libgstreamer-1.0.so.0
Comment 29 Alexey Gladkov 2016-02-19 11:09:03 MSK
(In reply to comment #28)
> (В ответ на комментарий №27)
> > - Add require gst-plugins-ugly (ALT#30732).
> Может, всё-таки gst-plugins-ugly1.0 ?
> 
> $strings /usr/lib64/firefox/libxul.so | grep libgstreamer
> libgstreamer-1.0.so.0

Блин, промазал. Спасибо!
Comment 30 Evgenii Terechkov 2016-02-20 08:42:45 MSK
В 44.0.2-alt3 всё работает. Спасибо за терпение и труд!