Bug 323407 - Crash in libkdecore.so.5 with Qt5-based app using GStreamer.
Summary: Crash in libkdecore.so.5 with Qt5-based app using GStreamer.
Status: RESOLVED NOT A BUG
Alias: None
Product: kdelibs
Classification: Frameworks and Libraries
Component: kdecore (show other bugs)
Version: 4.10.97
Platform: Arch Linux Linux
: NOR crash
Target Milestone: ---
Assignee: kdelibs bugs
URL:
Keywords:
: 337597 346209 359586 (view as bug list)
Depends on:
Blocks:
 
Reported: 2013-08-12 10:54 UTC by madcatx
Modified: 2016-02-21 12:39 UTC (History)
4 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description madcatx 2013-08-12 10:54:50 UTC
I tried to prototype a Qt5-based media player using GStreamer for a future project. My application always crashes with a backtrace pointing to libkdecore.so.5 when the application tries to switch the pipeline state to GST_STATE_PAUSED. Oddly enough the application works as expected when it is built against Qt4. The application was built with QtCreator 2.8.0, GCC 4.8.1, Qt 5.1 from Arch Linux packages. I can also reproduce the crash with the latest development version of Qt 5.2.0. I tried to build kdelibs with -DCMAKE_BUILD_TYPE=Debug but it did not seem to generate a better backtrace.

#0  0x00007ffff1bc8160 in ?? () from /usr/lib/libkdecore.so.5
#1  0x00007ffff1bc7160 in ?? () from /usr/lib/libkdecore.so.5
#2  0x000000325c20ea9a in call_init () from /lib64/ld-linux-x86-64.so.2
#3  0x000000325c20eb6c in _dl_init_internal () from /lib64/ld-linux-x86-64.so.2
#4  0x000000325c212bd5 in dl_open_worker () from /lib64/ld-linux-x86-64.so.2
#5  0x000000325c20e914 in _dl_catch_error () from /lib64/ld-linux-x86-64.so.2
#6  0x000000325c21244b in _dl_open () from /lib64/ld-linux-x86-64.so.2
#7  0x000000325ce0102b in ?? () from /usr/lib/libdl.so.2
#8  0x000000325c20e914 in _dl_catch_error () from /lib64/ld-linux-x86-64.so.2
#9  0x000000325ce015dd in ?? () from /usr/lib/libdl.so.2
#10 0x000000325ce010c1 in dlopen () from /usr/lib/libdl.so.2
#11 0x00007ffff2a15ad5 in libmodman::module_manager::load_file(std::string, bool) () from /usr/lib/libproxy.so.1
#12 0x00007ffff2a15e7b in libmodman::module_manager::load_dir(std::string, bool) () from /usr/lib/libproxy.so.1
#13 0x00007ffff2a0757e in ?? () from /usr/lib/libproxy.so.1
#14 0x00007ffff2a0826b in px_proxy_factory_new () from /usr/lib/libproxy.so.1
#15 0x00007ffff2c674d9 in ?? () from /usr/lib/gio/modules/libgiolibproxy.so
#16 0x000000326023047c in g_type_create_instance () from /usr/lib/libgobject-2.0.so.0
#17 0x0000003260214f88 in ?? () from /usr/lib/libgobject-2.0.so.0
#18 0x0000003260216a01 in g_object_newv () from /usr/lib/libgobject-2.0.so.0
#19 0x000000326021705c in g_object_new () from /usr/lib/libgobject-2.0.so.0
#20 0x0000003261e59b81 in ?? () from /usr/lib/libgio-2.0.so.0
#21 0x0000003261e59d00 in ?? () from /usr/lib/libgio-2.0.so.0
#22 0x00007ffff3cbefde in ?? () from /usr/lib/libsoup-gnome-2.4.so.1
#23 0x000000326023047c in g_type_create_instance () from /usr/lib/libgobject-2.0.so.0
#24 0x0000003260214f88 in ?? () from /usr/lib/libgobject-2.0.so.0
#25 0x0000003260216a01 in g_object_newv () from /usr/lib/libgobject-2.0.so.0
#26 0x000000326021705c in g_object_new () from /usr/lib/libgobject-2.0.so.0
#27 0x000000325ee6ab1c in soup_session_add_feature_by_type () from /usr/lib/libsoup-2.4.so.1
#28 0x000000325ee6b94b in ?? () from /usr/lib/libsoup-2.4.so.1
#29 0x000000326021672e in g_object_newv () from /usr/lib/libgobject-2.0.so.0
#30 0x0000003260216cd6 in g_object_new_valist () from /usr/lib/libgobject-2.0.so.0
#31 0x000000325ee6e22b in soup_session_async_new_with_options () from /usr/lib/libsoup-2.4.so.1
#32 0x00007ffff3ec73ff in ?? () from /usr/lib/gstreamer-1.0/libgstsouphttpsrc.so
#33 0x00007ffff40fa9de in ?? () from /usr/lib/libgstbase-1.0.so.0
#34 0x00007ffff40fad60 in ?? () from /usr/lib/libgstbase-1.0.so.0
#35 0x00007ffff7d1ee7d in gst_pad_activate_mode () from /usr/lib/libgstreamer-1.0.so.0
#36 0x00007ffff7d1f4ab in gst_pad_set_active () from /usr/lib/libgstreamer-1.0.so.0
#37 0x00007ffff7d04b5b in ?? () from /usr/lib/libgstreamer-1.0.so.0
#38 0x00007ffff7d131dc in gst_iterator_fold () from /usr/lib/libgstreamer-1.0.so.0
#39 0x00007ffff7d04f0a in ?? () from /usr/lib/libgstreamer-1.0.so.0
#40 0x00007ffff7d06a80 in ?? () from /usr/lib/libgstreamer-1.0.so.0
#41 0x00007ffff7d06dda in ?? () from /usr/lib/libgstreamer-1.0.so.0
#42 0x00007ffff40f8f96 in ?? () from /usr/lib/libgstbase-1.0.so.0
#43 0x00007ffff7d08902 in gst_element_change_state () from /usr/lib/libgstreamer-1.0.so.0
#44 0x00007ffff7d08afa in gst_element_change_state () from /usr/lib/libgstreamer-1.0.so.0
#45 0x00007ffff7d08fdc in ?? () from /usr/lib/libgstreamer-1.0.so.0
#46 0x00007ffff7cf1c69 in ?? () from /usr/lib/libgstreamer-1.0.so.0
#47 0x00007ffff4c1a062 in ?? () from /usr/lib/gstreamer-1.0/libgstplayback.so
#48 0x00007ffff7d08902 in gst_element_change_state () from /usr/lib/libgstreamer-1.0.so.0
#49 0x00007ffff7d08fdc in ?? () from /usr/lib/libgstreamer-1.0.so.0
#50 0x00007ffff7cf1c69 in ?? () from /usr/lib/libgstreamer-1.0.so.0
#51 0x00007ffff7d25317 in ?? () from /usr/lib/libgstreamer-1.0.so.0
#52 0x00007ffff4c20792 in ?? () from /usr/lib/gstreamer-1.0/libgstplayback.so
#53 0x00007ffff7d08902 in gst_element_change_state () from /usr/lib/libgstreamer-1.0.so.0
#54 0x00007ffff7d08afa in gst_element_change_state () from /usr/lib/libgstreamer-1.0.so.0
#55 0x00007ffff7d08fdc in ?? () from /usr/lib/libgstreamer-1.0.so.0
#56 0x000000000040123c in main (argc=1, argv=0x7fffffffded8) at ../GstCrash/main.cpp:16

Reproducible: Always




Sample application which illustrates the problem:
https://spideroak.com/share/JVQWIQ3BORMHG5DFOI/Neptunium/home/madcat/SpiderOak/Free4all/GstCrash.tar.xz
Comment 1 Jekyll Wu 2013-08-13 03:38:15 UTC
> I tried to build kdelibs with -DCMAKE_BUILD_TYPE=Debug but it did not seem to generate a better backtrace.

If you are using some PKGBUILD to build and install kdelibs, do not forget to add '!strip' into the options array.
Comment 2 madcatx 2013-08-13 10:16:31 UTC
Thanks, that was it. The top of the backtrace now looks like this:

#0  QBasicAtomicInt::ref (this=0x7ffff798c270 <QHashData::shared_null+16>) at /usr/include/qt4/QtCore/qatomic_x86_64.h:121
        ret = <optimized out>
#1  0x00007ffff1c2f160 in __static_initialization_and_destruction_0 (__priority=65535, __initialize_p=1) at /home/madcat/abs/kdelibs/src/kdelibs-4.10.97/kdecore/auth/kauthactionwatcher.cpp:44
No locals.
#2  0x000000325c20ea9a in call_init () from /lib64/ld-linux-x86-64.so.2
#3  0x000000325c20eb6c in _dl_init_internal () from /lib64/ld-linux-x86-64.so.2
...
Comment 3 Christoph Feck 2013-08-29 23:09:51 UTC
That's an odd backtrace. Does your Qt5 application use GStreamer directly, or do you use Phonon libraries? The issue here is that some "libproxy" tries to load KDE libraries, but the Qt 4 versions, which will of course cause symbol conflicts with Qt5.

I suggest to ask gstreamer or glibc developers, where to report issues about library "libproxy".
Comment 4 madcatx 2013-08-30 15:42:09 UTC
In my opening post is a link to a MWE which crashes for me. "libproxy" appears to be a library for automatic proxy configuration management and it's a dependency of libsoup which in turn is used by GStreamer to access network resources. Very brief research suggests that "libproxy" can interface with kdelibs which is probably why it loads the incorrect libs and bombs the application.

This is obviously not a KDE issue, I'm sorry to bother you with this...
Comment 5 Christoph Feck 2014-07-19 16:34:00 UTC
*** Bug 337597 has been marked as a duplicate of this bug. ***
Comment 6 Christoph Feck 2015-04-28 21:09:28 UTC
*** Bug 346209 has been marked as a duplicate of this bug. ***
Comment 7 Thomas Lübking 2016-02-21 12:39:16 UTC
*** Bug 359586 has been marked as a duplicate of this bug. ***