Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 375939 - www-client/opera: flash complains about GTK+ 2 vs 3 symbol conflict
Summary: www-client/opera: flash complains about GTK+ 2 vs 3 symbol conflict
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Jeroen Roovers (RETIRED)
URL: http://forums.gentoo.org/viewtopic-p-...
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-07-21 22:07 UTC by James Le Cuirot
Modified: 2014-01-12 17:13 UTC (History)
3 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description James Le Cuirot gentoo-dev 2011-07-21 22:07:22 UTC
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
aborting...
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.
Comment 1 James Le Cuirot gentoo-dev 2011-07-21 22:07:42 UTC
Portage 2.1.10.7 (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]
app-shells/bash:          4.1_p9
dev-java/java-config:     2.1.11-r3
dev-lang/python:          2.7.1, 3.1.3
dev-util/ccache:          3.1.4
dev-util/cmake:           2.8.3-r1
dev-util/pkgconfig:       0.25-r2
sys-apps/baselayout:      2.0.1-r1
sys-apps/openrc:          0.8.2
sys-apps/sandbox:         2.5
sys-devel/autoconf:       2.13::<unknown repository>, 2.68
sys-devel/automake:       1.9.6-r3, 1.10.3, 1.11.1
sys-devel/binutils:       2.21
sys-devel/gcc:            3.4.6-r2, 4.5.2
sys-devel/gcc-config:     1.4.1
sys-devel/libtool:        2.4-r1
sys-devel/make:           3.82-r1
sys-kernel/linux-headers: 2.6.36.1 (virtual/os-headers)
sys-libs/glibc:           2.13-r1
Repositories: gentoo java-overlay freeswitch symphony chewi-overlay Mythtv-Ebuilds
ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="*"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=core2 -O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
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"
DISTDIR="/usr/portage/distfiles"
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"
FFLAGS=""
GENTOO_MIRRORS="http://gentoo.virginmedia.com http://gentoo.osuosl.org"
INSTALL_MASK="/etc/asterisk"
LANG="en_GB.UTF-8"
LC_ALL="en_GB.UTF-8"
LDFLAGS="-Wl,--as-needed"
LINGUAS="en en_GB"
MAKEOPTS="-j8"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
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"
SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"
USE="16bit 16k 32k 3ds 48k 7zip S3TC X X509 a52 aac aalib acpi aften aim alaw allegro amd amd64 amr amrnb amrwb asf async audiofile autoipd avahi bash-completion bcp berkdb bjam blender-game bluetooth bogofilter boost branding bzip2 cairo cap cardbus ccache cdaudio cdda cddb cdio cdparanoia cdr cdrom cdsound cegui cgi chardet cleartype cli community console consolekit cracklib crosscompile crypt cscope css ctype cups curl cxx dba dbus dc1394 device-mapper devil dhcp directfb divx dri dts dv dvb dvd dvdnav dvdr dvdread effects emoticon enca encode exceptions exif faac faad fam fastcgi fat fb fbcon fbcondecor fbdev fbsplash ffmpeg fftw filter firefox firefox3 flac fluidsynth fmod fontconfig ftp fuse g722 g729 gallium gd gdbm gdu geos gif gimp gimpprint gkrellm glitz glut gmp gnutls gphoto2 gpm gs gsl gsm gstreamer gtk guitarhero hash hddtemp hog icon iconv icq id3 id3tag ieee1394 ilbc image imagemagick imap imlib inkjar islsm_2.5.8.0 ithreads j2me jabber jack-tmpfs java5 java6 javascript jdbc4 jfs joystick jpeg json kdrive kvm ladcca ladspa lame libffi libnotify libsamplerate libv4l2 libvisual lights lighttpd lirc live lj lm_sensors lufsusermount lvm lzo m17n-lib mad maildir mbox mbrola md5sum mdnsresponder-compat mikmod ming mmap mmx mmxext mng mod mod_muc modplug modules mozbranding mozembed moznocompose moznoirc moznomail mozp3p mozsvg mp2 mp3 mp4 mpeg mpeg2 mpeg4 mplayer mpx msn mudflap multilib musepack music mvl mysql mysqli mythtv ncurses network nfs nfsv3 nfsv4 no-seamonkey nocd nosamples nptl nptlonly nsplugin ntfs offensive ogg openal opencore-amr opengl openmp openssl pam pcre pdf pg-intdatetime phonehome png pnm policykit posix postgres ppds pppd pulseaudio qmax qt3support qt4 quicktime rar readline realmedia reiserfs rtc rtsp ruby samba sasl scanner scenarios scrobbler sdl sdl-image sdl-sound sdlaudio secure-delete session sha512 simplexml skins slang smp sndfile soap sockets socks5 sound soundex sounds soundtouch sox speex spell sse sse2 sse3 sse4 sse4a ssl ssse3 startup-notification stemmer stream subversion svg svgz sysfs sysvipc taglib textures tga theora threads thumbnail thunar tiff timidity tordns transparent-proxy truetype type1 udev uk_rt ulaw unicode unzip upnp usb userlocales utf8 v4l v4l2 vcd vhosts videos vispatch vnc vncviewer vorbis wav web webkit webp wideband wifi win32 win64 wma wmf wmp x264 xattr xcb xchattext xcomposite xext xface xfce xfs xft xml xmms2 xorg xosd xpm xprint xrandr xsl xulrunner xv xvid xvmc xvnc yahoo zeroconf zip zlib zsh-completion" ALSA_CARDS="intel-hda" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="braindump flow karbon kexi kpresenter krita tables words" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="glibc" FREESWITCH_MODULES="console dialplan_xml dptools enum expr g729 sndfile sofia spandsp syslog" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ubx" INPUT_DEVICES="evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="en en_GB" LIRC_DEVICES="all" NGINX_MODULES_HTTP="access autoindex browser charset empty_gif fastcgi geo gzip limit_req limit_zone map proxy referer rewrite split_clients ssi upstream_ip_hash userid" PHP_TARGETS="php5-3" QEMU_SOFTMMU_TARGETS="i386 x86_64" RUBY_TARGETS="ruby18 ruby19" USERLAND="GNU" VIDEO_CARDS="radeon r600" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account" 
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
Comment 2 Alexandre Rostovtsev (RETIRED) gentoo-dev 2011-08-02 17:52:39 UTC
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.
Comment 3 James Le Cuirot gentoo-dev 2011-08-02 17:57:06 UTC
Like I said, I didn't even have gtk3 installed to begin with.
Comment 4 Nikolaj Šujskij 2011-08-02 17:58:37 UTC
(In reply to comment #2)
> 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.

 And I do have no other plugins.
Comment 5 Alexandre Rostovtsev (RETIRED) gentoo-dev 2011-08-02 18:17:49 UTC
(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?
Comment 6 Alexandre Rostovtsev (RETIRED) gentoo-dev 2011-08-02 18:23:49 UTC
Also, please copy/paste opera's about:plugins page to a text file and attach it.
Comment 7 Pavel Shirov 2011-08-03 05:42:32 UTC
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.
Comment 8 Pavel Shirov 2011-08-03 05:45:30 UTC
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.
Comment 9 Jeroen Roovers (RETIRED) gentoo-dev 2011-08-03 14:10:50 UTC
(In reply to comment #7)
> I think this is the same bug as #363387 and GTK+ message are just unrelated to
> it.

It's only a duplicate when operapluginwrapper actually segfaults.

If nobody sees those segmentation faults anymore, then that bug should be closed.
Comment 10 James Le Cuirot gentoo-dev 2011-08-03 14:15:11 UTC
> 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.
Comment 11 Nikolaj Šujskij 2011-08-12 13:52:09 UTC
People report that it could be fixed with building x11-libs/cairo[-qt4], though it seems not to work here.
Comment 12 Pavel Shirov 2011-08-15 04:56:46 UTC
(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.
Comment 13 James Le Cuirot gentoo-dev 2011-09-18 23:07:14 UTC
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...?
Comment 14 Nikolaj Šujskij 2011-09-20 06:08:55 UTC
(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.
Comment 15 Jeroen Roovers (RETIRED) gentoo-dev 2011-09-21 00:58:55 UTC
(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. :)
Comment 16 Nikolaj Šujskij 2011-10-09 08:37:53 UTC
Here's another workaround from Opera crew:
http://my.opera.com/ruario/blog/show.dml/31874332?startidx=100#comment71651702
Worked for me.
Comment 17 Martin Gysel (bearsh) 2011-10-18 12:46:30 UTC
(In reply to comment #16)
> Here's another workaround from Opera crew:
> http://my.opera.com/ruario/blog/show.dml/31874332?startidx=100#comment71651702
> Worked for me.

worked for me as well although I added the line into my /usr/bin/opera script...
Comment 18 Jeroen Roovers (RETIRED) gentoo-dev 2011-12-16 18:18:32 UTC
*** Bug 394963 has been marked as a duplicate of this bug. ***
Comment 19 Rick Harris 2011-12-25 07:07:09 UTC
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
export LD_PRELOAD="/usr/lib64/libgtk-x11-2.0.so"

Thanks to Jeroen for the hint from http://bugs.gentoo.org/show_bug.cgi?id=363387#c83
Comment 20 Nikolaj Šujskij 2012-01-29 10:43:30 UTC
Has LD_PRELOAD hack been dropped? I've plugins stopped working after upgrade to 11.61
Comment 21 Jeroen Roovers (RETIRED) gentoo-dev 2012-01-29 18:00:17 UTC
(In reply to comment #20)
> Has LD_PRELOAD hack been dropped? I've plugins stopped working after upgrade to
> 11.61

Bug #363387 comment #88.
Comment 22 Gilles Dartiguelongue (RETIRED) gentoo-dev 2013-01-20 12:27:08 UTC
Removing gnome from CC, there is nothing for us to do here.
Comment 23 James Le Cuirot gentoo-dev 2014-01-12 17:13:36 UTC
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.