i-rinat / freshplayerplugin

ppapi2npapi compatibility layer
MIT License
727 stars 52 forks source link

why freshplayerplugin can not be detected? #324

Closed bruceauyeung closed 8 years ago

bruceauyeung commented 8 years ago

i installed freshplayerplugin-0.3.4-18.1.x86_64.rpm. this package's contents:

rpm -ql freshplayerplugin-0.3.4-18.1.x86_64 /etc/freshwrapper.conf /usr/lib64/browser-plugins/libfreshwrapper-flashplayer.so /usr/share/doc/packages/freshplayerplugin /usr/share/doc/packages/freshplayerplugin/COPYING /usr/share/doc/packages/freshplayerplugin/ChangeLog /usr/share/doc/packages/freshplayerplugin/LICENSE /usr/share/doc/packages/freshplayerplugin/README.md

firefox detect plugins in the following directories, including /usr/lib64/browser-plugins

strace -y /usr/bin/firefox 2>&1 | grep acces | grep -v search | grep plugins access("/home/bruce/.mozilla/firefox/x6eklphf.default/extensions/support@lastpass.com/plugins", F_OK) = -1 ENOENT (No such file or directory) access("/home/bruce/.mozilla/firefox/x6eklphf.default/plugins", F_OK) = -1 ENOENT (No such file or directory) access("/usr/lib64/browser-plugins", F_OK) = 0 access("/home/bruce/.mozilla/plugins", F_OK) = 0 access("/usr/lib64/firefox/browser/plugins", F_OK) = -1 ENOENT (No such file or directory) access("/usr/lib64/mozilla/plugins", F_OK) = -1 ENOENT (No such file or directory)

plz refer to https://developer.mozilla.org/en-US/docs/Plugins/Guide/Plug-in_Basics if needed.

the question is : by default, firefox can not detect flash player plugin, (checked through about:plugins), although flashplayer plugin is supposed to be detected. but when i copy /usr/lib64/browser-plugins/libfreshwrapper-flashplayer.so into ~/.mozilla/plugins, it CAN detect flash player plugin, (checked through about:plugins) and if i make a symlink to /usr/lib64/browser-plugins/libfreshwrapper-flashplayer.so in ~/.mozilla/plugins, it also CAN NOT detect flash player plugin, (checked through about:plugins) can you please tell me why ? many thanks!

firefox:45 os:openSUSE Leap 42.1 64bit

i-rinat commented 8 years ago

Since library load is required to probe a plugin, that slows down startup time. That's why Firefox caches information about plugins in pluginreg.dat file in your Firefox profile directory. (I think in your case it would be /home/bruce/.mozilla/firefox/x6eklphf.default/pluginreg.dat.) Failed load attempts are cached in that file too, so Firefox don't even try next time. Remove that file and restart the browser. Then it will try to load every plugin again.

You can also use touch command to "renew" file libfreshwrapper-flashplayer.so. Then Firefox at the next start will notice that file is updated, and will try to load it again.

bruceauyeung commented 8 years ago

thanks for your reply! i deleted /home/bruce/.mozilla/firefox/x6eklphf.default/pluginreg.dat, and then run strace -y /usr/bin/firefox 2>&1 | grep acces | grep -v search | grep plugins

strace -y /usr/bin/firefox 2>&1 | grep acces | grep -v search | grep plugins access("/home/bruce/.mozilla/firefox/x6eklphf.default/extensions/support@lastpass.com/plugins", F_OK) = -1 ENOENT (No such file or directory) access("/home/bruce/.mozilla/firefox/x6eklphf.default/plugins", F_OK) = -1 ENOENT (No such file or directory) access("/usr/lib64/browser-plugins", F_OK) = 0 access("/usr/lib64/browser-plugins/skypebuttons.so", F_OK) = 0 access("/usr/lib64/browser-plugins/libfreshwrapper-flashplayer.so", F_OK) = 0 access("/usr/lib64/browser-plugins/packagekit-plugin.so", F_OK) = 0 access("/home/bruce/.mozilla/plugins", F_OK) = 0 access("/home/bruce/.mozilla/plugins/libaliedit64.so", F_OK) = 0 access("/usr/lib64/firefox/browser/plugins", F_OK) = -1 ENOENT (No such file or directory) access("/usr/lib64/mozilla/plugins", F_OK) = -1 ENOENT (No such file or directory) access("/home/bruce/.mozilla/firefox/x6eklphf.default/extensions/support@lastpass.com/plugins", F_OK) = -1 ENOENT (No such file or directory) access("/home/bruce/.mozilla/firefox/x6eklphf.default/plugins", F_OK) = -1 ENOENT (No such file or directory) access("/usr/lib64/browser-plugins", F_OK) = 0 access("/home/bruce/.mozilla/plugins", F_OK) = 0 access("/usr/lib64/firefox/browser/plugins", F_OK) = -1 ENOENT (No such file or directory) access("/usr/lib64/mozilla/plugins", F_OK) = -1 ENOENT (No such file or directory)

now there is a line related to freshplayer

access("/usr/lib64/browser-plugins/libfreshwrapper-flashplayer.so", F_OK) = 0

but still there is no flash plugin in about:plugins

i-rinat commented 8 years ago

I don't know why it happens.

I've just tried to test it on openSUSE Leap. Installed Firefox, downloaded freshwrapper source snapshot, installed dependencies, built, and copied resulting library into /usr/lib64/browser-plugins/. Then in started Firefox I've seen it in about:plugins page. There were also messages in the console, about missing libpepflashplayer.so — I didn't install nor Chrome, neither PepperFlash.

So it could be something related to unix file permissions. If you launch ldd /usr/lib64/browser-plugins/libfreshwrapper-flashplayer.so from your user (not root), does it say something about missing libraries or inability to open file?

bruceauyeung commented 8 years ago

the following is ldd command's outout, i dont know linux c programming, please help.

ldd /usr/lib64/browser-plugins/libfreshwrapper-flashplayer.so linux-vdso.so.1 (0x00007fffd0bff000) libasound.so.2 => /usr/lib64/libasound.so.2 (0x00007fd70624d000) libgio-2.0.so.0 => /usr/lib64/libgio-2.0.so.0 (0x00007fd705ecd000) libXrandr.so.2 => /usr/lib64/libXrandr.so.2 (0x00007fd705cbd000) libXrender.so.1 => /usr/lib64/libXrender.so.1 (0x00007fd705aad000) libX11.so.6 => /usr/lib64/libX11.so.6 (0x00007fd70576d000) libXcursor.so.1 => /usr/lib64/libXcursor.so.1 (0x00007fd70555d000) libGL.so.1 => /usr/lib64/libGL.so.1 (0x00007fd7052c5000) libevent_pthreads-2.0.so.5 => /usr/lib64/libevent_pthreads-2.0.so.5 (0x00007fd7050bd000) libevent-2.0.so.5 => /usr/lib64/libevent-2.0.so.5 (0x00007fd704e6d000) libpangocairo-1.0.so.0 => /usr/lib64/libpangocairo-1.0.so.0 (0x00007fd704c5d000) libcairo.so.2 => /usr/lib64/libcairo.so.2 (0x00007fd704935000) libpangoft2-1.0.so.0 => /usr/lib64/libpangoft2-1.0.so.0 (0x00007fd70471d000) libpango-1.0.so.0 => /usr/lib64/libpango-1.0.so.0 (0x00007fd7044cd000) libgobject-2.0.so.0 => /usr/lib64/libgobject-2.0.so.0 (0x00007fd704275000) libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 (0x00007fd703f65000) libfreetype.so.6 => /usr/lib64/libfreetype.so.6 (0x00007fd703ccd000) libcrypto.so.1.0.0 => /lib64/libcrypto.so.1.0.0 (0x00007fd7038d5000) libdl.so.2 => /lib64/libdl.so.2 (0x00007fd7036cd000) librt.so.1 => /lib64/librt.so.1 (0x00007fd7034c5000) libm.so.6 => /lib64/libm.so.6 (0x00007fd7031bd000) libgtk-x11-2.0.so.0 => /usr/lib64/libgtk-x11-2.0.so.0 (0x00007fd702b7d000) libgdk-x11-2.0.so.0 => /usr/lib64/libgdk-x11-2.0.so.0 (0x00007fd7028c5000) libpulse.so.0 => /usr/lib64/libpulse.so.0 (0x00007fd702675000) libjack.so.0 => /usr/lib64/libjack.so.0 (0x00007fd70242d000) libsoxr.so.0 => /usr/lib64/libsoxr.so.0 (0x00007fd7021c5000) libv4l2.so.0 => /usr/lib64/libv4l2.so.0 (0x00007fd701fb5000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fd701d95000) libc.so.6 => /lib64/libc.so.6 (0x00007fd7019ed000) /lib64/ld-linux-x86-64.so.2 (0x000056465d3be000) libgmodule-2.0.so.0 => /usr/lib64/libgmodule-2.0.so.0 (0x00007fd7017e5000) libz.so.1 => /lib64/libz.so.1 (0x00007fd7015cd000) libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fd7013a5000) libresolv.so.2 => /lib64/libresolv.so.2 (0x00007fd70118d000) libXext.so.6 => /usr/lib64/libXext.so.6 (0x00007fd700f75000) libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x00007fd700d55000) libXfixes.so.3 => /usr/lib64/libXfixes.so.3 (0x00007fd700b4d000) libexpat.so.1 => /usr/lib64/libexpat.so.1 (0x00007fd70091d000) libglapi.so.0 => /usr/lib64/libglapi.so.0 (0x00007fd7006ed000) libXdamage.so.1 => /usr/lib64/libXdamage.so.1 (0x00007fd7004e5000)
libX11-xcb.so.1 => /usr/lib64/libX11-xcb.so.1 (0x00007fd7002dd000)
libxcb-glx.so.0 => /usr/lib64/libxcb-glx.so.0 (0x00007fd7000c5000)
libxcb-dri2.so.0 => /usr/lib64/libxcb-dri2.so.0 (0x00007fd6ffebd000)
libxcb-dri3.so.0 => /usr/lib64/libxcb-dri3.so.0 (0x00007fd6ffcb5000)
libxcb-present.so.0 => /usr/lib64/libxcb-present.so.0 (0x00007fd6ffaad000)
libxcb-sync.so.1 => /usr/lib64/libxcb-sync.so.1 (0x00007fd6ff8a5000)
libxshmfence.so.1 => /usr/lib64/libxshmfence.so.1 (0x00007fd6ff69d000)
libXxf86vm.so.1 => /usr/lib64/libXxf86vm.so.1 (0x00007fd6ff495000)
libdrm.so.2 => /usr/lib64/libdrm.so.2 (0x00007fd6ff285000)
libfontconfig.so.1 => /usr/lib64/libfontconfig.so.1 (0x00007fd6ff045000)
libpixman-1.so.0 => /usr/lib64/libpixman-1.so.0 (0x00007fd6fed95000)
libEGL.so.1 => /usr/lib64/libEGL.so.1 (0x00007fd6feb6d000) libpng16.so.16 => /usr/lib64/libpng16.so.16 (0x00007fd6fe92d000) libxcb-shm.so.0 => /usr/lib64/libxcb-shm.so.0 (0x00007fd6fe725000) libxcb-render.so.0 => /usr/lib64/libxcb-render.so.0 (0x00007fd6fe515000) libharfbuzz.so.0 => /usr/lib64/libharfbuzz.so.0 (0x00007fd6fe2b5000) libffi.so.4 => /usr/lib64/libffi.so.4 (0x00007fd6fe0a5000) libpcre.so.1 => /usr/lib64/libpcre.so.1 (0x00007fd6fde3d000) libbz2.so.1 => /usr/lib64/libbz2.so.1 (0x00007fd6fdc2d000) libatk-1.0.so.0 => /usr/lib64/libatk-1.0.so.0 (0x00007fd6fda05000) libgdk_pixbuf-2.0.so.0 => /usr/lib64/libgdk_pixbuf-2.0.so.0 (0x00007fd6fd7dd000) libXinerama.so.1 => /usr/lib64/libXinerama.so.1 (0x00007fd6fd5d5000) libXi.so.6 => /usr/lib64/libXi.so.6 (0x00007fd6fd3c5000) libXcomposite.so.1 => /usr/lib64/libXcomposite.so.1 (0x00007fd6fd1bd000) libpulsecommon-7.0.so => /usr/lib64/pulseaudio/libpulsecommon-7.0.so (0x00007fd6fcf3d000) libjson-c.so.2 => /usr/lib64/libjson-c.so.2 (0x00007fd6fcd2d000) libdbus-1.so.3 => /lib64/libdbus-1.so.3 (0x00007fd6fcae5000) libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007fd6fc75d000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fd6fc545000) libgomp.so.1 => /usr/lib64/libgomp.so.1 (0x00007fd6fc31d000) libv4lconvert.so.0 => /usr/lib64/libv4lconvert.so.0 (0x00007fd6fc0a5000) libXau.so.6 => /usr/lib64/libXau.so.6 (0x00007fd6fbe9d000) libxcb-xfixes.so.0 => /usr/lib64/libxcb-xfixes.so.0 (0x00007fd6fbc95000) libgbm.so.1 => /usr/lib64/libgbm.so.1 (0x00007fd6fba85000) libwayland-client.so.0 => /usr/lib64/libwayland-client.so.0 (0x00007fd6fb875000) libwayland-server.so.0 => /usr/lib64/libwayland-server.so.0 (0x00007fd6fb65d000) libgraphite2.so.3 => /usr/lib64/libgraphite2.so.3 (0x00007fd6fb42d000) libsystemd.so.0 => /usr/lib64/libsystemd.so.0 (0x00007fd6fb1fd000) libsndfile.so.1 => /usr/lib64/libsndfile.so.1 (0x00007fd6faf8d000) libjpeg.so.8 => /usr/lib64/libjpeg.so.8 (0x00007fd6fad35000) liblzma.so.5 => /usr/lib64/liblzma.so.5 (0x00007fd6fab0d000) libgcrypt.so.20 => /usr/lib64/libgcrypt.so.20 (0x00007fd6fa825000) libFLAC.so.8 => /usr/lib64/libFLAC.so.8 (0x00007fd6fa5e5000) libvorbisenc.so.2 => /usr/lib64/libvorbisenc.so.2 (0x00007fd6fa115000) libspeex.so.1 => /usr/lib64/libspeex.so.1 (0x00007fd6f9ef5000) libgpg-error.so.0 => /usr/lib64/libgpg-error.so.0 (0x00007fd6f9ced000) libogg.so.0 => /usr/lib64/libogg.so.0 (0x00007fd6f9ae5000) libvorbis.so.0 => /usr/lib64/libvorbis.so.0 (0x00007fd6f98b5000)

i-rinat commented 8 years ago

From ldd output I can tell that all dependencies are fine, it should work.

Just to be sure, try to run from root:

touch /usr/lib64/browser-plugins/libfreshwrapper-flashplayer.so

That will update timestamp on that file. Then try to restart Firefox and look into about:plugins again.

bruceauyeung commented 8 years ago

after i touch /usr/lib64/browser-plugins/libfreshwrapper-flashplayer.so, flashplayerplugin works now! but why delete pluginreg.bat does not work ? doesn't delete pluginreg.bat force firefox to rescan all plugins ?

i-rinat commented 8 years ago

but why delete pluginreg.bat does not work?

There could a more sophisticated checks inside source code. Or it could be you removed some other file, or perhaps, from another profile.

bruceauyeung commented 8 years ago

my openSUSE Leap 42.1 and my firefox are totally fresh installations. i didn't remove any files, maybe there is a more sophisticated check we don't know, as you said. thanks again!