There have been many reports of Flash failing to run in Opera lately. Unlike bug #363387, which has reports of segfaults, this bug report is to do with a GTK+ symbol conflict error that appears in the console.
Gtk-ERROR **: GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same process is not supported
Opera Plugin Proxy: Could not start up plugin
I have traced the source of this error message and posted my findings at the forums, which I will also paste below.
I've tried to look deeply into this and I have to say it is very puzzling indeed. The actual error comes from GTK+ 2 itself, not from Opera. The message itself is really confusing. It's supposed to say "GTK+ 3 symbols detected", not "GTK+ 2.x symbols detected" and it originally did say that but someone later extended the test and probably got confused. In any case, it checks for the presence of the symbol gtk_widget_device_is_shadowed. The strange thing is that this symbol doesn't appear to be present in any of Opera's code or Flash's code or any code at all except for GTK+ 3. I didn't even have GTK+ 3 installed until just now so nothing could have been loading it. It's got nothing to do with NVIDIA, at least in my case, as I have a Radeon card. I tried shortcircuiting the test with "return FALSE" to see if that helped and sure enough, it did. But why the problem is occurring in the first place is a mystery to me.
I've now delved even deeper, right down to the implementation of g_module_symbol in glib. This part doesn't make sense either. It calls dlsym() on the symbol. The first time, when Opera itself starts, this correctly returns NULL and dlerror() returns "undefined symbol: gtk_widget_device_is_shadowed" like it should. However, the second time, when operapluginwrapper-native is run, it does return NULL but dlerror() also returns NULL. Why? I have no idea. The man page states that you can't assume NULL to be an error condition so you must therefore check dlerror(). Surely there should also be an error the second time around, though? The next step would be to dig into glibc but I really don't want to go there.
Portage 220.127.116.11 (default/linux/amd64/10.0, gcc-4.5.2, glibc-2.13-r1, 2.6.39-gentoo x86_64)
System uname: Linux-2.6.39-gentoo-x86_64-Intel-R-_Core-TM-_i7_CPU_K_875_@_2.93GHz-with-gentoo-2.0.1
Timestamp of tree: Thu, 21 Jul 2011 12:15:02 +0000
distcc 3.1 x86_64-pc-linux-gnu [disabled]
ccache version 3.1.4 [disabled]
dev-lang/python: 2.7.1, 3.1.3
sys-devel/autoconf: 2.13::<unknown repository>, 2.68
sys-devel/automake: 1.9.6-r3, 1.10.3, 1.11.1
sys-devel/gcc: 3.4.6-r2, 4.5.2
sys-kernel/linux-headers: 18.104.22.168 (virtual/os-headers)
Repositories: gentoo java-overlay freeswitch symphony chewi-overlay Mythtv-Ebuilds
CFLAGS="-march=core2 -O2 -pipe"
CONFIG_PROTECT="/etc /usr/share/gnupg/qualified.txt /var/lib/hsqldb"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/eselect/postgresql /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php5.3/ext-active/ /etc/php/cgi-php5.3/ext-active/ /etc/php/cli-php5.3/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/splash /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-march=core2 -O2 -pipe"
FEATURES="assume-digests binpkg-logs distlocks ebuild-locks fixlafiles fixpackages news parallel-fetch protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTDIR_OVERLAY="/usr/local/portage/layman/java-overlay /usr/local/portage/layman/freeswitch /usr/local/portage /home/chewi/chewi-overlay /usr/local/portage/layman/MythTV/Gentoo"
Unset: CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
My first guess is that this error might be caused by another plugin that uses gtk3.
Try disabling anything gtk3-based (e.g. totem plugins from gnome3) in opera's about:plugins.
Like I said, I didn't even have gtk3 installed to begin with.
(In reply to comment #2)
> My first guess is that this error might be caused by another plugin that uses
> Try disabling anything gtk3-based (e.g. totem plugins from gnome3) in opera's
And I do have no other plugins.
(In reply to comment #3)
> Like I said, I didn't even have gtk3 installed to begin with.
Very strange :/
Well, could you give the exact installed versions and enabled USE flags that you have for opera, adobe-flash, nspluginwrapper, gtk+, and glib?
Also, is there an older version of opera that can run flash on your machine?
Also, please copy/paste opera's about:plugins page to a text file and attach it.
I think this is the same bug as #363387 and GTK+ message are just unrelated to it. At least on x86.
It is most likely caused by operapluginwrapper. It started with Opera 11.10 where operapluginwrapper used to segfault. The workaround for this was replacing operapluginwrapper from Opera 11.01. After upgrading to Opera 11.50 it stopped to post segfault message (and seems to be fixed for x86_64) but still doesn't works as before. And replacing operapluginwrapper from 11.01 doesn't works anymore. Probably upstream changed the wrapper's API/etc so it is not compatible anymore and doesn't generates segfaults now. I'm talking about x86.
I've already posted on bug #363387 that I've found what operapluginwrapper started to import libpthreads.so.0 symbols from opera 11.50. Seems this is why it's not working to replace operapluginwrapper from 11.01 anymore.
Alexandre, I've tried to clean my pluginpath to leave only adobe-flash plugin there. about:plugins were reporting only it (so it didn't hooked anything from other paths). Still it doesn't works. So it is not related to other plugins.
(In reply to comment #7)
> I think this is the same bug as #363387 and GTK+ message are just unrelated to
It's only a duplicate when operapluginwrapper actually segfaults.
If nobody sees those segmentation faults anymore, then that bug should be closed.
> I think this is the same bug as #363387 and GTK+ message are just unrelated to
> it. At least on x86.
No way. I've not seen any segfaults and as I described earlier, modifying GTK+ 2 actually made Flash work.
People report that it could be fixed with building x11-libs/cairo[-qt4], though it seems not to work here.
(In reply to comment #11)
> People report that it could be fixed with building x11-libs/cairo[-qt4], though
> it seems not to work here.
Wow! This worked for me, flash now works in opera. Thanks to the parafin for this workaround.
Just updated my entire system and still hit the problem. Tried x11-libs/cairo[-qt4] as suggested and that actually worked. Good find. But who knows WHY it works...?
(In reply to comment #13)
> Just updated my entire system and still hit the problem. Tried
> x11-libs/cairo[-qt4] as suggested and that actually worked. Good find. But who
> knows WHY it works...?
I'm afraid only Opera folks could debug this issue.
(In reply to comment #14)
> (In reply to comment #13)
> > Just updated my entire system and still hit the problem. Tried
> > x11-libs/cairo[-qt4] as suggested and that actually worked. Good find. But who
> > knows WHY it works...?
> I'm afraid only Opera folks could debug this issue.
Or it could be a conflict between Qt and GTK+ 2|3 that is caused by cairo. :)
Here's another workaround from Opera crew:
Worked for me.
(In reply to comment #16)
> Here's another workaround from Opera crew:
> Worked for me.
worked for me as well although I added the line into my /usr/bin/opera script...
*** Bug 394963 has been marked as a duplicate of this bug. ***
In response to the original poster's problem with gtk2/gtk3 conflict.
I was getting this in opera-11.60.1185 when trying to load the totem-3.2.1 nsplugin.
Fixed by commenting/deleting the line from /usr/bin/opera
Thanks to Jeroen for the hint from http://bugs.gentoo.org/show_bug.cgi?id=363387#c83
Has LD_PRELOAD hack been dropped? I've plugins stopped working after upgrade to 11.61
(In reply to comment #20)
> Has LD_PRELOAD hack been dropped? I've plugins stopped working after upgrade to
Bug #363387 comment #88.
Removing gnome from CC, there is nothing for us to do here.
This has ultimately been resolved by the masking of the qt4 flag against cairo. Opera probably doesn't care and I see it caused bug #412177 too. That was marked FIXED so I am doing the same here.