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
Then mentioning of QPrinterInfo seems similar to the VLC related crash with mixing Qt4 and Qt5 libraries in the same ELF address space.
Ok, I'll take that hint and closely inspect all the libraries this qt5 build is using
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.
Looks like there's a similar issue with libmarblewidget linking libquazip too :(
I remember other plugins were crashing too when they mixed qt4 and qt5 dependencies.
Qt is unmaintained. There should no longer be mixing issues.