Bug 344692

Summary: marble-qt (qt5 build) crashes loading libAprsPlugin.so plugin, need to ensure qt5 libqextserialport is used
Product: [Applications] marble Reporter: Rex Dieter <rdieter>
Component: generalAssignee: marble-bugs
Status: RESOLVED UNMAINTAINED    
Severity: crash CC: nienhueser
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Fedora RPMs   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Rex Dieter 2015-03-01 06:24:00 UTC
When doing a qt5 marble build, libmarblewidget crashes on attempts to load plugins.

Backtrace:

(gdb) bt
#0  0x00007fffcb08c97c in _GLOBAL__sub_I_qprinterinfo.cpp(void) (this=0x7fffcbbc1718 <QPrinterInfoPrivate::shared_null+24>) at ../../src/corelib/tools/qlist.h:121
Python Exception <type 'exceptions.RuntimeError'> maximum recursion depth exceeded:
#1  0x00007fffcb08c97c in _GLOBAL__sub_I_qprinterinfo.cpp(void) (name=..., this=0x7fffcbbc1700 <QPrinterInfoPrivate::shared_null>) at painting/qprinterinfo_p.h:71
#2  0x00007fffcb08c97c in _GLOBAL__sub_I_qprinterinfo.cpp(void) (__initialize_p=1, __priority=65535) at painting/qprinterinfo.cpp:35
#3  0x00007fffcb08c97c in _GLOBAL__sub_I_qprinterinfo.cpp(void) () at painting/qprinterinfo.cpp:163
#4  0x00007ffff7deaf2a in call_init (l=<optimized out>, argc=argc@entry=1, argv=argv@entry=0x7fffffffdc48, env=env@entry=0x7fffffffdc58) at dl-init.c:76
#5  0x00007ffff7deb03b in _dl_init (env=<optimized out>, argv=<optimized out>, argc=<optimized out>, l=<optimized out>) at dl-init.c:34
#6  0x00007ffff7deb03b in _dl_init (main_map=main_map@entry=0x7e9100, argc=1, argv=0x7fffffffdc48, env=0x7fffffffdc58) at dl-init.c:124
#7  0x00007ffff7defa31 in dl_open_worker (a=a@entry=0x7fffffffcac8) at dl-open.c:566
#8  0x00007ffff7deadd4 in _dl_catch_error (objname=objname@entry=0x7fffffffcab8, errstring=errstring@entry=0x7fffffffcac0, mallocedp=mallocedp@entry=0x7fffffffcab7, operate=operate@entry=0x7ffff7def570 <dl_open_worker>, args=args@entry=0x7fffffffcac8)
    at dl-error.c:187
#9  0x00007ffff7deeec3 in _dl_open (file=0x7e8b38 "/usr/lib64/marble/plugins/libAprsPlugin.so", mode=-2147483647, caller_dlopen=0x7ffff33e0df0 <QLibraryPrivate::load_sys()+1760>, nsid=-2, argc=<optimized out>, argv=<optimized out>, env=0x7fffffffdc58)
    at dl-open.c:650
#10 0x00007ffff1509039 in dlopen_doit (a=a@entry=0x7fffffffcce0) at dlopen.c:66
#11 0x00007ffff7deadd4 in _dl_catch_error (objname=0x692cc0, errstring=0x692cc8, mallocedp=0x692cb8, operate=0x7ffff1508fe0 <dlopen_doit>, args=0x7fffffffcce0) at dl-error.c:187
#12 0x00007ffff150969d in _dlerror_run (operate=operate@entry=0x7ffff1508fe0 <dlopen_doit>, args=args@entry=0x7fffffffcce0) at dlerror.c:163
#13 0x00007ffff15090d1 in __dlopen (file=<optimized out>, mode=<optimized out>) at dlopen.c:87
#14 0x00007ffff33e0df0 in QLibraryPrivate::load_sys() (this=0x7e8890) at plugin/qlibrary_unix.cpp:223
#15 0x00007ffff33d9a85 in QLibraryPrivate::load() (this=0x7e8890) at plugin/qlibrary.cpp:529
#16 0x00007ffff33da0ab in QLibraryPrivate::loadPlugin() (this=0x7e8890) at plugin/qlibrary.cpp:577
#17 0x00007ffff33ced38 in QPluginLoader::instance() (this=this@entry=0x7e84f0) at plugin/qpluginloader.cpp:189
#18 0x00007ffff78eaa7e in Marble::PluginManagerPrivate::loadPlugins() (this=0x7671b0) at /usr/src/debug/marble-14.12.3/src/lib/marble/PluginManager.cpp:210
#19 0x00007ffff78eb9cb in Marble::PluginManager::addPositionProviderPlugin(Marble::PositionProviderPlugin const*) (this=0x7711f8, plugin=plugin@entry=0x7e4360) at /usr/src/debug/marble-14.12.3/src/lib/marble/PluginManager.cpp:92
#20 0x00007ffff784b40a in Marble::MarbleModel::MarbleModel(QObject*) (this=0x797910, parent=<optimized out>) at /usr/src/debug/marble-14.12.3/src/lib/marble/MarbleModel.cpp:203
#21 0x00007ffff78470de in Marble::MarbleAbstractPresenter::MarbleAbstractPresenter() (this=0x797900) at /usr/src/debug/marble-14.12.3/src/lib/marble/MarbleAbstractPresenter.cpp:39
#22 0x00007ffff784372c in Marble::MarbleWidget::MarbleWidget(QWidget*) (this=0x793750, parent=<optimized out>) at /usr/src/debug/marble-14.12.3/src/lib/marble/MarbleWidget.cpp:103


Reproducible: Always
Comment 1 Christoph Feck 2015-03-01 10:21:04 UTC
Then mentioning of QPrinterInfo seems similar to the VLC related crash with mixing Qt4 and Qt5 libraries in the same ELF address space.
Comment 2 Rex Dieter 2015-03-01 13:43:16 UTC
Ok, I'll take that hint and closely inspect all the libraries this qt5 build is using
Comment 3 Rex Dieter 2015-03-01 13:51:47 UTC
Thanks for the hint!

I think I found the culprit, the plugin referenced here (libAprsPlugin.so)  is linking a qt4 libqextserialport

Looks like another possible candidate for making parallel-installable qt4/qt5 versions (and also to ensure one doesn't use the wrong one!).

I'll keep this bug open to track that issue.
Comment 4 Rex Dieter 2015-03-01 14:02:12 UTC
Looks like there's a similar issue with libmarblewidget linking libquazip too :(
Comment 5 Dennis Nienhüser 2015-03-01 18:48:45 UTC
I remember other plugins were crashing too when they mixed qt4 and qt5 dependencies.
Comment 6 Christoph Feck 2018-12-20 18:51:39 UTC
Qt is unmaintained. There should no longer be mixing issues.