Closed nyanpasu64 closed 7 years ago
Hello.
I tried typecatcher on freshly installed Ubuntu 16.04 amd64 in virtual machine, and it worked fine there.
But here is what happens. Typecatcher uses GTK+ 3 version of WebKitGTK. When it loads freshplayerplugin, it brings GTK+ 2 into the same address space. Different major versions of GTK+ sometimes load together without error, but sometimes they fail, as in your case.
GTK+ 3 build of Firefox uses a special trick — it loads GTK+ 3 in the main browser process, but GTK+ 2 in plugin-container process, because (NPAPI) Flash 11.2 is linked with GTK+ 2. WebKit2GTK also uses a separate plugin host process. To solve exactly the same issue.
So while it's possible to link freshplayerplugin with GTK+ 3 to solve your issue, it will cause issues in Firefox and other browsers.
Nonetheless, there is a way to link freshplayerplugin with GTK+ 3. Use
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DWITH_GTK=3 ..
at configuration step, and then usual make
.
I think, that will fix crashing Typecatcher. But most probably freshplayerplugin in Firefox will crash.
Why does Freshplayer (Flash?) require GTK+ at all?
On Sat, Jun 11, 2016 at 1:07 PM, Rinat Ibragimov notifications@github.com wrote:
Nonetheless, there is a way to link freshplayerplugin with GTK+ 3. Use
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DWITH_GTK=3 ..
at configuration step, and then usual make.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/i-rinat/freshplayerplugin/issues/335#issuecomment-225391500, or mute the thread https://github.com/notifications/unsubscribe/AA3yJdrLm7EWk4azRuI9Xmee5ZDDDohYks5qKxWRgaJpZM4Iwh06 .
Why does Freshplayer (Flash?) require GTK+ at all?
It's used for:
I don't think any of these could be implemented without X event loop. Currently, GLib and GTK+ do event handling.
is it possible to prevent freshplayer from loading in libwebkitgtk?
is it possible to prevent freshplayer from loading in libwebkitgtk?
I don't know a working recipe. But it should be possible, it's a software, after all.
If you were asking about whenever could it be done in freshplayerplugin itself, answer is no. Any filtering code in freshwrapper have a chance to execute only when plugin is loaded. But by that time you already have two major GTK+ versions in the same address space already.
So it should be filtering code in WebKitGTK. I believe, there already should be a way to disable all plugins completely.
I've just added implementation for #336, which now allows freshplayerplugin to get required functions at run time. It's no longer linked to GTK+ directly, and the same binary can survive in GTK+ 3 and GTK+ 2 applications.
I saw no crashes in virtual machine with Ubuntu 16.04, but saw both GTK+ versions loaded. With new freshwrapper version I see only GTK+ 3. There was GTK+ 2 from NPAPI Flash, but once I removed it, there only GTK+ 3 left. Didn't try actual Flash content though. Test page with Flash content works too, and process have only GTK+ 3.
Could you test again with the recent version to see if that fixes the bug?
well I installed freshplayer from PPA, in other words, a binary package.
do I need to compile and overwrite the system package?
On Sat, Jun 18, 2016 at 1:00 PM, Rinat Ibragimov notifications@github.com wrote:
I've just added implementation for #336 https://github.com/i-rinat/freshplayerplugin/issues/336, which now allows freshplayerplugin to get required functions at run time. It's no longer linked to GTK+ directly, and the same binary can survive in GTK+ 3 and GTK+ 2 applications.
I saw no crashes in virtual machine with Ubuntu 16.04, but saw both GTK+ versions loaded. With new freshwrapper version I see only GTK+ 3. There was GTK+ 2 from NPAPI Flash, but once I removed it, there only GTK+ 3 left. Didn't try actual Flash content though.
Could you test again with the recent version to see if that fixes the bug?
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/i-rinat/freshplayerplugin/issues/335#issuecomment-226962065, or mute the thread https://github.com/notifications/unsubscribe/AA3yJYCGo1F6I8ph17gELDZ4iDPWVaT1ks5qNE5ygaJpZM4Iwh06 .
do I need to compile and overwrite the system package?
Yep. Compiling is a required step. But you don't need to install it to test. You just set environment variables VDPAU_DRIVER=va_gl
and VDPAU_DRIVER_PATH=$PWD
(last assumes you are in the build directory. $PWD
is a special variable which points to current directory.) And then try to launch VLC from the same terminal emulator session. Or you can just overwrite existing instance of libvdpau_va_gl.so.1
in system directory.
(Oh, I don't know what I'm reading. Was doing changes to another project recently. Ignore previous comment.)
do I need to compile and overwrite the system package?
Yes, compilation is a required step. As for installing, you can either overwrite existing binary, or put compiled binary into ~/.mozilla/plugins/
. In latter case, it's better to remove previously installed package.
I still get a crash, with make install
, system freshplayerplugin uninstalled, apt-get autoremove
. Manually removing /usr/local/lib/mozilla/plugins/libfreshwrapper-flashplayer.so
fixes the crash.
Backtrace looks odd: it crashes inside dynamic library loader, before any bit of freshplayerplugin have a chance to execute.
By the way, is there NPAPI Flash (11.2) plugin installed in your system?
Also crashes webkitgtk as used by Claws Mail: https://bugzilla.redhat.com/1348985
Linker script is used to hide weak library symbols. They tend to appear if any C++ is used. I hide them because combination of ABI change in gcc 5, Firefox's custom allocator, and freshwrapper caused mixing of general libc6 allocator and jemalloc. But I can't figure out whenever this is the reason, and if it is, how to fix it.
Crashing inside dynamic linker is something beyond my comprehension.
By the way, is there NPAPI Flash (11.2) plugin installed in your system?
I just uninstalled it, didn't help.
@jimbo1qaz, It would be nice if you could create a virtual machine image where bug could be reproduced. I tried different combinations, but it worked fine, without crashes.
funny, I created a Debian VM with freshplayer from git, and pepperflashplugin-nonfree. It doesn't crash, and displays "NOT SANDBOXED" and opens like normal. I'll try with Ubuntu git, then Ubuntu PPA.
On my main PC, I get some "interesting" messages that didn't appear before: http://hastebin.com/agiruziqay.vhdl
I think my system is somewhat screwy. Other apps also misbehave in unusual ways.
OS: Ubuntu 16.04 x64, WebUpd8 Freshplayer PPA.
Typecatcher is a Google Fonts viewer/downloader.
Procedure
apt-get install browser-plugin-freshplayer-pepperflash
/usr/lib/browser-plugin-freshplayer-pepperflash/libfreshwrapper-flashplayer.so
etc.freshplayerplugin
, which depends on the above.Run typecatcher.
Result
Typecatcher takes longer than normal to load. It segfaults before showing a GUI. I debugged the crash using gdb:
Apparently, freshplayerplugin is crashing
/usr/lib/x86_64-linux-gnu/libwebkitgtk-3.0.so.0
.