Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 295525 - <=net-im/skype-2.1.0.47 crashes with x11-libs/qt-4.6.0
Summary: <=net-im/skype-2.1.0.47 crashes with x11-libs/qt-4.6.0
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: Gentoo Net-im project
URL: https://developer.skype.com/jira/brow...
Whiteboard:
Keywords:
: 299448 (view as bug list)
Depends on:
Blocks:
 
Reported: 2009-12-03 07:19 UTC by Evan Teran
Modified: 2010-01-23 13:49 UTC (History)
9 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 Evan Teran 2009-12-03 07:19:53 UTC
I recently installed the masked qt-4.6.0 and have started experiencing crashes with skype. It seems that the new version has introduced a binary incompatibility with the 4.5.x libraries.

I can reliably reproduce the crash by opening skype (which launches fine) and pulling up a chat window. The moment I do anything that might display text in the chat window, I get an abort. Usually simply displaying the chat history is enough.

I've been able to prove that qt is the culprit by manually compiling qt-4.5.3 and installing that into a local directory and running skype with that directory first in the LD_LIBRARY_PATH. Doing this avoids the crash entirely.

Unfortunately, skype is a binary only application, this may become any issue when qt-4.6.x is in consideration for being marked stable.

Perhaps the skype ebuild should also install the necessary qt-4.5.x .so files as precompiled libraries and install them in /opt/skype/ (or /opt/skype/lib)?  /usr/bin/skype already is a shell script which adjusts the LD_LIBRARY_PATH, this would be the simplest adjustment to make it work.

For now, I'll be putting my manually compiled qt files in /opt/skype as a temporary work around :-).

Reproducible: Always




$ emerge --info                               
Portage 2.2_rc54 (default/linux/x86/10.0/desktop, gcc-4.4.2, glibc-2.11-r1, 2.6.31-gentoo-r6 i686)
=================================================================                                 
System uname: Linux-2.6.31-gentoo-r6-i686-Intel-R-_Core-TM-2_Duo_CPU_T7700_@_2.40GHz-with-gentoo-2.0.1
Timestamp of tree: Thu, 03 Dec 2009 00:00:01 +0000                                                    
app-shells/bash:     4.0_p28                                                                          
dev-java/java-config: 2.1.9-r1                                                                        
dev-lang/python:     2.6.2-r1                                                                         
dev-util/cmake:      2.6.4-r3                                                                         
sys-apps/baselayout: 2.0.1                                                                            
sys-apps/openrc:     0.5.2-r2                                                                         
sys-apps/sandbox:    2.2                                                                              
sys-devel/autoconf:  2.13, 2.63-r1                                                                    
sys-devel/automake:  1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10.2                                             
sys-devel/binutils:  2.20                                                                             
sys-devel/gcc-config: 1.4.1                                                                           
sys-devel/libtool:   2.2.6a                                                                           
virtual/os-headers:  2.6.30-r1                                                                        
ACCEPT_KEYWORDS="x86"                                                                                 
ACCEPT_LICENSE="*"                                                                                    
CBUILD="i686-pc-linux-gnu"
CFLAGS="-march=native -O2 -fomit-frame-pointer -pipe"
CHOST="i686-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/config /var/lib/hsqldb"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/cli-php5/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c /etc/udev/rules.d"
CXXFLAGS="-march=native -O2 -fomit-frame-pointer -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="assume-digests collision-protect distlocks fixpackages news parallel-fetch preserve-libs protect-owned sandbox sfperms strict unmerge-logs unmerge-orphans userfetch"
GENTOO_MIRRORS="http://distfiles.gentoo.org http://distro.ibiblio.org/pub/linux/distributions/gentoo"
LANG="en_US.UTF-8"
LDFLAGS="-Wl,-O1"
LINGUAS="en_US en"
MAKEOPTS="-j4"
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="   "
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="X a52 aac accessibility acl acpi alsa apache2 avahi bash-completion berkdb bluetooth boost branding bzip2 cairo cdr chroot cleartype cli cmake consolekit cracklib crypt css cups curl cvs dbus debugger dell dhcp disk-partition divx doc dri dts dvd dvdr eds emboss encode evo examples expat fam ffmpeg firefox flac gdbm gif glitz gmp gnome gnutls gpm graphviz gstreamer gtk hal iconv imagemagick inotify ipv6 jadetex java java6 jpeg jpeg2k kde kpathsea lame ldap libnotify lm_sensors mad mdnsresponder-compat mikmod mjpeg mmap mmx mng modules mono mp3 mp4 mpeg mplayer mudflap mysql ncurses network-cron nls nptl nptlonly nsplugin ogg openal openexr opengl openmp pam pango pch pcre pdf perl phonon php pmu png posix ppds pppd python qt3support qt4 quicktime readline reflection rss samba sdl semantic-desktop session spell spl sqlite sqlite3 sse sse2 ssl ssse3 startup-notification subversion svg sysfs tcl tcpd templates theora threads thumbnail thunar tiff tk truetype unicode usb utempter v4l vcd vim-syntax vnc vorbis webkit win32codecs wmf wmp wxwidgets wxwindows x264 x86 xanim xcomposite xft xine xinerama xml xorg xpm xscreensaver xulrunner xv xvid zeroconf zip zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1 emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" 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 auth_digest authn_anon authn_dbd authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock dbd deflate dir disk_cache env expires ext_filter file_cache filter headers ident imagemap include info log_config logio mem_cache mime mime_magic negotiation proxy proxy_ajp proxy_balancer proxy_connect proxy_http rewrite setenvif so speling status unique_id userdir usertrack vhost_alias" ELIBC="glibc" INPUT_DEVICES="keyboard mouse synaptics evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="en_US en" RUBY_TARGETS="ruby18" USERLAND="GNU" VIDEO_CARDS="nvidia"
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LC_ALL, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
Comment 1 Evan Teran 2009-12-03 07:29:23 UTC
Just a note, I put the manually compiled qt-4.5.3 into /opt/skype with the following setup (only the files linked by /opt/skype/skype):


lrwxrwxrwx 1 root root   14 2009-12-03 02:19 libQtCore.so -> libQtCore.so.4
lrwxrwxrwx 1 root root   16 2009-12-03 02:19 libQtCore.so.4 -> libQtCore.so.4.5
lrwxrwxrwx 1 root root   18 2009-12-03 02:19 libQtCore.so.4.5 -> libQtCore.so.4.5.3
-rwxr-xr-x 1 root root 2.3M 2009-12-03 02:18 libQtCore.so.4.5.3
lrwxrwxrwx 1 root root   14 2009-12-03 02:20 libQtDBus.so -> libQtDBus.so.4
lrwxrwxrwx 1 root root   16 2009-12-03 02:20 libQtDBus.so.4 -> libQtDBus.so.4.5
lrwxrwxrwx 1 root root   18 2009-12-03 02:20 libQtDBus.so.4.5 -> libQtDBus.so.4.5.3
-rwxr-xr-x 1 root root 456K 2009-12-03 02:18 libQtDBus.so.4.5.3
lrwxrwxrwx 1 root root   13 2009-12-03 02:21 libQtGui.so -> libQtGui.so.4
lrwxrwxrwx 1 root root   15 2009-12-03 02:21 libQtGui.so.4 -> libQtGui.so.4.5
lrwxrwxrwx 1 root root   17 2009-12-03 02:21 libQtGui.so.4.5 -> libQtGui.so.4.5.3
-rwxr-xr-x 1 root root 9.8M 2009-12-03 02:18 libQtGui.so.4.5.3
lrwxrwxrwx 1 root root   17 2009-12-03 02:21 libQtNetwork.so -> libQtNetwork.so.4
lrwxrwxrwx 1 root root   19 2009-12-03 02:22 libQtNetwork.so.4 -> libQtNetwork.so.4.5
lrwxrwxrwx 1 root root   21 2009-12-03 02:22 libQtNetwork.so.4.5 -> libQtNetwork.so.4.5.3
-rwxr-xr-x 1 root root 1.1M 2009-12-03 02:18 libQtNetwork.so.4.5.3
lrwxrwxrwx 1 root root   13 2009-12-03 02:22 libQtXml.so -> libQtXml.so.4
lrwxrwxrwx 1 root root   15 2009-12-03 02:22 libQtXml.so.4 -> libQtXml.so.4.5
lrwxrwxrwx 1 root root   17 2009-12-03 02:22 libQtXml.so.4.5 -> libQtXml.so.4.5.3
-rwxr-xr-x 1 root root 271K 2009-12-03 02:18 libQtXml.so.4.5.3


This fixed the problem perfectly.
Comment 2 Rafał Mużyło 2009-12-03 12:34:44 UTC
Was that full release or one of beta/rc ?

Anyway, either it's a qt4 upstream problem (if that happens
with full release) or skype problem (in that case
only skype upstream can do anything about it).
Comment 3 Mike Auty (RETIRED) gentoo-dev 2009-12-03 14:51:12 UTC
Evan, rather than compiling your own, have you tried installing skype using the qt-static USE flag?  This should install a version of skype that contains its won copy of QT, and save you having to keep it upgraded or anything when skype gets bumped.

Also, these crashes have started happening with skype-2.1.0.47 too.
Comment 4 Evan Teran 2009-12-04 16:29:15 UTC
yes, qt-static solves the problem. Perhaps there should be a version check in the ebuild that suggests qt-static if you have qt-4.6.0 installed?
Comment 5 Ben de Groot (RETIRED) gentoo-dev 2009-12-09 18:09:00 UTC
Most likely a skype upstream problem, as Qt upstream says 4.6.0 is binary compatible with 4.5.3.
Comment 6 Mike Auty (RETIRED) gentoo-dev 2009-12-09 18:40:43 UTC
Here's the upstream bug for those that are interested:

https://developer.skype.com/jira/browse/SCL-533
Comment 7 Samuli Suominen (RETIRED) gentoo-dev 2010-01-03 10:04:32 UTC
*** Bug 299448 has been marked as a duplicate of this bug. ***
Comment 8 shade 2010-01-04 16:42:19 UTC
hi, i had same bug, so i asked my beta skype tester friend about it. Its a gentoo bug, not skype one. Gentoo while installation modifies skype binary and skype does not like it. check md5 sum of file installed and one from package. 

Here are few words from my friend from testers team.

[17:14:45] Paul : funny question - does md5 of skype binary match the one in downloaded package?
[17:15:11] shade: hmm, from skype hompage? I didnt check
[17:15:15] Paul : because fedora has prelink which breaks binary
[17:15:35] Paul : you install skype, it works until next prelink run (crontabbed)

2nd important part

[17:29:00] Paul : skype binary has proprietary encryption so it won't work when modified
[17:29:37] Paul : fedora rpm of skype even has rule file for prelink to exclude it
[17:29:37] Shade: can i post you last line on that bug?
[17:29:53] Paul : yes, and that about prelink rule file too
[17:30:51] Paul : [stalwart@delta ~]$ cat /etc/prelink.conf.d/skype.conf 
-b /usr/bin/skype
[17:31:27] Paul : check if you have prelink installed, and if you do - create this rulefile
[17:31:38] shade: i dont have it installed
[17:31:51] Paul : then you have something else that modifies binary
Comment 9 Mike Auty (RETIRED) gentoo-dev 2010-01-04 17:41:34 UTC
Thanks for your comments shade, but please do check the md5sums of your binaries before making assertions that this bug is Gentoo specific.

The dynamic skype-2.1.0.47 package's binary md5sum matches that installed by the skype-2.1.0.47 ebuild installed with USE="-qt-static" on my system (a93e449b032e21cdbc43e3f903c46dc4 in this case).  The static one should match that installed by the skype ebuild with USE="qt-static".

Also, whilst skype do include many checksums to avoid debugging and disassembly these checks would kick in much sooner in order to prevent you making calls or using their network protocol, rather than only being triggered when a text field is present.  Also, if it were a binary check, downgrading to qt-4.5 wouldn't solve the problem, which it does in this case.

Finally, several other users have reported the problem, and there is an upstream bug report including a fedora core user (which can be found in the URL field or in comment 6).  Please follow the developments there...

Perhaps this was intended for a different bug (maybe bug 299368)?  I just wanted to clarify for anyone reading this that this issue is not Gentoo specific.
Comment 10 shade 2010-01-04 18:47:34 UTC
yes, sory mike, it was for bug http://bugs.gentoo.org/show_bug.cgi?id=299368 
and for static use.
Comment 11 Samuli Suominen (RETIRED) gentoo-dev 2010-01-06 13:07:17 UTC
I guess the ebuild could have something like this,

pkg_setup() {
if use x86 && ! use qt-static; then
  if has_version ">=x11-libs/qt-core-4.6.0"; then
    eerror "Sorry, but Skype 2.1.0.47 doesn't support Qt 4.6.0."
    die "Enable USE qt-static."
  fi
fi
}

because it's not possible to check if Qt 4.6.0 is installed from profiles,
so package.use.forcing there doesn't make sense for stable users.
Comment 12 Mike Auty (RETIRED) gentoo-dev 2010-01-06 13:15:57 UTC
Surely in EAPI=2 we could set a dependency of !qt-static? (<qt-core-4.6) or something similar?  Portage should be able to work out everything else...

Also, I'm not sure it's an x86 only problem, so if you were intending to implement the check, the x86 bit probably shouldn't be in there.  5:)
Comment 13 Samuli Suominen (RETIRED) gentoo-dev 2010-01-06 13:39:17 UTC
(In reply to comment #12)
> Surely in EAPI=2 we could set a dependency of !qt-static? (<qt-core-4.6) or
> something similar?  Portage should be able to work out everything else...
> 
> Also, I'm not sure it's an x86 only problem, so if you were intending to
> implement the check, the x86 bit probably shouldn't be in there.  5:)
> 

The emul-linux-x86-qtlibs package is using stable Qt 4.5.x, the version that's marked stable on x86. That's how emul- pkgs are built. [1]

[1] http://www.gentoo.org/proj/en/base/amd64/emul/content.xml

So this problem should be restricted as x86-only problem.
Comment 14 Samuli Suominen (RETIRED) gentoo-dev 2010-01-06 13:41:51 UTC
(In reply to comment #12)
> Surely in EAPI=2 we could set a dependency of !qt-static? (<qt-core-4.6) or
> something similar?  Portage should be able to work out everything else...

Yes, this is possible, but by downgrading Qt4 you break your system, as it's binary compatible only for upgrading, so it should be  !qt-static ( !>=x11-libs/qt-core-4.6 ) block instead if you want to take the depend approach.
Comment 15 Mike Auty (RETIRED) gentoo-dev 2010-01-06 13:54:21 UTC
Hmmm, ok.

You're quite right, I'd forgotten Skype don't do a 64-bit native version, sorry about that.

The pkg_setup snippet feels like it'll just fail to install skype (leaving an old version which probably suffers the same problem), and a version bump wouldn't help in this instance either.  It will only help people newly installing Skype, and even though it's possible to run get it running (under 4.5) will instead tell them they can't install it all.

Using the dependencies would allow people to have a working system and a working Skype, but only if the qt-4.6 downgrade weren't a problem.  I have the horrible feeling that portage will try and upgrade all the other qt-* packages, and then die because those need everything else at qt-4.6, rather than keeping everything at the 4.5 level.

The best solution would be for Skype to release a new version, but their usual timescale for things like this is many, many months.

So I'm not sure what to suggest, but I'd definitely avoid using the pkg_setup method, since it will only irritate new Skype users and won't help people who already have it installed...
Comment 17 Richard H. 2010-01-10 09:02:16 UTC
PLEASE revert this! It breaks compatibility with kopete, even in the stable version! If I have to choose, I won't upgrade to Qt-4.6, simple as that. But the recent Update (forcing qt-static) broke a needed functionality and I spent hours of debugging now - until I found out it's the static version which kopete can't work with!
Comment 18 Mike Auty (RETIRED) gentoo-dev 2010-01-10 12:55:54 UTC
You can manually revert this change just on your system by creating the file /etc/portage/profile/package.force.use and putting in the line "net-im/skype -qt-static".  However, it'll then be up to you to mask qt-4.6 and ensure that once skype is usable with qt-4.6 that you remove all the local force issues...

I agree, forcing all users to carry the extra weight of a statically compiled and non-updatable version of qt when installing skype isn't a great solution (Flameeyes may well file an unbundling bug against it).  Forcing users to recompile all their qt programs after a downgrade to 4.5 might not be such a bad price to pay, but it's up to the maintainer to decide...
Comment 19 Richard H. 2010-01-10 14:07:56 UTC
Is 4.6 approaching that fast? If so, I will file an upstream bug report if not already done, but if not, for met they way to go is clear. Right after I wrote this, I did exact the package.use.force thing, and am happy now. But how to tell for example my parents that after a simple upgrade some functionality is lost? shouldn't stable be preferred and unstable should simply set this USE-flag? And some news be issued when actually Qt-4.6 comes stable? I am just wondering a bit...

I'll just repeat this: Kopete has Skype functionality built-in. Even in stable. And it works, but ONLY with -qt-static. This functionality is silently broken if you just upgrade your (stable) system. That's what I am talking about. To the maintainer: Just reconsider if this is really the right way to go. Thank you.
Comment 20 Mike Auty (RETIRED) gentoo-dev 2010-01-20 22:27:45 UTC
Just so everybody's aware, skype-2.1.0.81 is out and no longer crashes with qt-4.6.0.  As such I'm going to reopen this, since upstream have done their job and fixed the problem.  5:)

There's already a request to get it into the tree (bug 301651).  From there it would probably be best to remove the forced USE mask to allow dynamic qt, and either forcibly remove the USE flag from ebuilds where it will break, or set up dependencies to force use of qt-4.5 for the older ebuilds...
Comment 21 Samuli Suominen (RETIRED) gentoo-dev 2010-01-23 13:49:03 UTC
+*skype-2.1.0.81 (23 Jan 2010)
+
+  23 Jan 2010; Samuli Suominen <ssuominen@gentoo.org>
+  +skype-2.1.0.81.ebuild:
+  Version bump wrt #301651, thanks to Bailey Kong and others.

It's fixed (and in profiles/ in a way it won't be a problem for this version anymore.)