Bug 288542 - Marble crashes on closing
Summary: Marble crashes on closing
Status: RESOLVED FIXED
Alias: None
Product: marble
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: Fedora RPMs Linux
: NOR crash
Target Milestone: 1.3 (KDE 4.8)
Assignee: marble-bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-12-09 12:20 UTC by Andreas Krohn
Modified: 2012-01-20 22:30 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In: KDE-4.8.0


Attachments
New crash information added by DrKonqi (3.05 KB, text/plain)
2012-01-01 14:23 UTC, MK
Details
New crash information added by DrKonqi (13.47 KB, text/plain)
2012-01-16 09:47 UTC, Hussam Al-Tayeb
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Andreas Krohn 2011-12-09 12:20:22 UTC
Application: marble (1.2.90 (1.3 Release Candidate 1))
KDE Platform Version: 4.7.90 (4.8 Beta2 (4.7.90)
Qt Version: 4.8.0
Operating System: Linux 3.1.4-1.fc16.x86_64 x86_64
Distribution: "Fedora release 16 (Verne)"

-- Information about the crash:
- What I was doing when the application crashed:
* Start Marble, use it - everything works as expected
* Exit Marble
* Crash!

The crash can be reproduced every time.

-- Backtrace:
Application: Marble – Virtueller Globus (marble), signal: Segmentation fault
Using host libthread_db library "/lib64/libthread_db.so.1".
82	T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS)
[Current thread is 1 (Thread 0x7f1f79a1a840 (LWP 1726))]

Thread 5 (Thread 0x7f1f66130700 (LWP 1745)):
#0  0x00007fff27b9b8de in ?? ()
#1  0x000000307a4041f1 in __GI_clock_gettime (clock_id=1, tp=0x7f1f6612fa20) at ../sysdeps/unix/clock_gettime.c:100
#2  0x00000030800d2004 in do_gettime (frac=0x7f1f6612fa38, sec=0x7f1f6612fa30) at tools/qelapsedtimer_unix.cpp:123
#3  qt_gettime () at tools/qelapsedtimer_unix.cpp:140
#4  0x00000030801a6f9d in QTimerInfoList::updateCurrentTime (this=0x22a8c80) at kernel/qeventdispatcher_unix.cpp:343
#5  0x00000030801a72d3 in QTimerInfoList::timerWait (this=0x22a8c80, tm=...) at kernel/qeventdispatcher_unix.cpp:450
#6  0x00000030801a5d6c in timerSourcePrepareHelper (src=<optimized out>, timeout=0x7f1f6612fb1c) at kernel/qeventdispatcher_glib.cpp:136
#7  0x00000030801a5e15 in timerSourcePrepare (source=<optimized out>, timeout=<optimized out>) at kernel/qeventdispatcher_glib.cpp:169
#8  0x000000307b044012 in g_main_context_prepare (context=0x22a8190, priority=0x7f1f6612fb88) at gmain.c:2746
#9  0x000000307b044e1d in g_main_context_iterate (context=0x22a8190, block=1, dispatch=1, self=<optimized out>) at gmain.c:3053
#10 0x000000307b04544c in g_main_context_iteration (context=0x22a8190, may_block=1) at gmain.c:3136
#11 0x00000030801a6896 in QEventDispatcherGlib::processEvents (this=0x21eeb60, flags=<optimized out>) at kernel/qeventdispatcher_glib.cpp:426
#12 0x0000003080176c82 in QEventLoop::processEvents (this=<optimized out>, flags=...) at kernel/qeventloop.cpp:149
#13 0x0000003080176ed7 in QEventLoop::exec (this=0x7f1f6612fcd0, flags=...) at kernel/qeventloop.cpp:204
#14 0x00007f1f7b6e084b in Marble::RunnerTask::run (this=0x21f6fc0) at /home/andreas/Projects/marble/src/lib/RunnerTask.cpp:37
#15 0x000000308006f492 in QThreadPoolThread::run (this=0x21f7660) at concurrent/qthreadpool.cpp:107
#16 0x000000308007bb1b in QThreadPrivate::start (arg=0x21f7660) at thread/qthread_unix.cpp:298
#17 0x0000003079c07d90 in start_thread (arg=0x7f1f66130700) at pthread_create.c:309
#18 0x00000030790ef3dd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:115

Thread 4 (Thread 0x7f1f6592f700 (LWP 1746)):
#0  0x00000030790e6a43 in __GI___poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>) at ../sysdeps/unix/sysv/linux/poll.c:87
#1  0x000000307b044f88 in g_main_context_poll (n_fds=1, fds=0x199cba0, priority=<optimized out>, timeout=728, context=0x229cf80) at gmain.c:3386
#2  g_main_context_iterate (context=0x229cf80, block=<optimized out>, dispatch=1, self=<optimized out>) at gmain.c:3068
#3  0x000000307b04544c in g_main_context_iteration (context=0x229cf80, may_block=1) at gmain.c:3136
#4  0x00000030801a6896 in QEventDispatcherGlib::processEvents (this=0x1c72ea0, flags=<optimized out>) at kernel/qeventdispatcher_glib.cpp:426
#5  0x0000003080176c82 in QEventLoop::processEvents (this=<optimized out>, flags=...) at kernel/qeventloop.cpp:149
#6  0x0000003080176ed7 in QEventLoop::exec (this=0x7f1f6592ecd0, flags=...) at kernel/qeventloop.cpp:204
#7  0x00007f1f7b6e084b in Marble::RunnerTask::run (this=0x21f7d10) at /home/andreas/Projects/marble/src/lib/RunnerTask.cpp:37
#8  0x000000308006f492 in QThreadPoolThread::run (this=0x21f7e30) at concurrent/qthreadpool.cpp:107
#9  0x000000308007bb1b in QThreadPrivate::start (arg=0x21f7e30) at thread/qthread_unix.cpp:298
#10 0x0000003079c07d90 in start_thread (arg=0x7f1f6592f700) at pthread_create.c:309
#11 0x00000030790ef3dd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:115

Thread 3 (Thread 0x7f1f6512e700 (LWP 1747)):
#0  0x00007fff27b9b8de in ?? ()
#1  0x000000307a4041f1 in __GI_clock_gettime (clock_id=1, tp=0x7f1f6512da20) at ../sysdeps/unix/clock_gettime.c:100
#2  0x00000030800d2004 in do_gettime (frac=0x7f1f6512da38, sec=0x7f1f6512da30) at tools/qelapsedtimer_unix.cpp:123
#3  qt_gettime () at tools/qelapsedtimer_unix.cpp:140
#4  0x00000030801a6f9d in QTimerInfoList::updateCurrentTime (this=0x2204880) at kernel/qeventdispatcher_unix.cpp:343
#5  0x00000030801a72d3 in QTimerInfoList::timerWait (this=0x2204880, tm=...) at kernel/qeventdispatcher_unix.cpp:450
#6  0x00000030801a5d6c in timerSourcePrepareHelper (src=<optimized out>, timeout=0x7f1f6512db1c) at kernel/qeventdispatcher_glib.cpp:136
#7  0x00000030801a5e15 in timerSourcePrepare (source=<optimized out>, timeout=<optimized out>) at kernel/qeventdispatcher_glib.cpp:169
#8  0x000000307b044012 in g_main_context_prepare (context=0x21fd6f0, priority=0x7f1f6512db88) at gmain.c:2746
#9  0x000000307b044e1d in g_main_context_iterate (context=0x21fd6f0, block=1, dispatch=1, self=<optimized out>) at gmain.c:3053
#10 0x000000307b04544c in g_main_context_iteration (context=0x21fd6f0, may_block=1) at gmain.c:3136
#11 0x00000030801a6896 in QEventDispatcherGlib::processEvents (this=0x226d850, flags=<optimized out>) at kernel/qeventdispatcher_glib.cpp:426
#12 0x0000003080176c82 in QEventLoop::processEvents (this=<optimized out>, flags=...) at kernel/qeventloop.cpp:149
#13 0x0000003080176ed7 in QEventLoop::exec (this=0x7f1f6512dcd0, flags=...) at kernel/qeventloop.cpp:204
#14 0x00007f1f7b6e084b in Marble::RunnerTask::run (this=0x21f3f20) at /home/andreas/Projects/marble/src/lib/RunnerTask.cpp:37
#15 0x000000308006f492 in QThreadPoolThread::run (this=0x21fe840) at concurrent/qthreadpool.cpp:107
#16 0x000000308007bb1b in QThreadPrivate::start (arg=0x21fe840) at thread/qthread_unix.cpp:298
#17 0x0000003079c07d90 in start_thread (arg=0x7f1f6512e700) at pthread_create.c:309
#18 0x00000030790ef3dd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:115

Thread 2 (Thread 0x7f1f6492d700 (LWP 1748)):
#0  0x00007fff27b9b8de in ?? ()
#1  0x000000307a4041f1 in __GI_clock_gettime (clock_id=1, tp=0x7f1f6492ca20) at ../sysdeps/unix/clock_gettime.c:100
#2  0x00000030800d2004 in do_gettime (frac=0x7f1f6492ca38, sec=0x7f1f6492ca30) at tools/qelapsedtimer_unix.cpp:123
#3  qt_gettime () at tools/qelapsedtimer_unix.cpp:140
#4  0x00000030801a6f9d in QTimerInfoList::updateCurrentTime (this=0x2201d80) at kernel/qeventdispatcher_unix.cpp:343
#5  0x00000030801a72d3 in QTimerInfoList::timerWait (this=0x2201d80, tm=...) at kernel/qeventdispatcher_unix.cpp:450
#6  0x00000030801a5d6c in timerSourcePrepareHelper (src=<optimized out>, timeout=0x7f1f6492cb1c) at kernel/qeventdispatcher_glib.cpp:136
#7  0x00000030801a5e15 in timerSourcePrepare (source=<optimized out>, timeout=<optimized out>) at kernel/qeventdispatcher_glib.cpp:169
#8  0x000000307b044012 in g_main_context_prepare (context=0x21fd600, priority=0x7f1f6492cb88) at gmain.c:2746
#9  0x000000307b044e1d in g_main_context_iterate (context=0x21fd600, block=1, dispatch=1, self=<optimized out>) at gmain.c:3053
#10 0x000000307b04544c in g_main_context_iteration (context=0x21fd600, may_block=1) at gmain.c:3136
#11 0x00000030801a6896 in QEventDispatcherGlib::processEvents (this=0x21f0a20, flags=<optimized out>) at kernel/qeventdispatcher_glib.cpp:426
#12 0x0000003080176c82 in QEventLoop::processEvents (this=<optimized out>, flags=...) at kernel/qeventloop.cpp:149
#13 0x0000003080176ed7 in QEventLoop::exec (this=0x7f1f6492ccd0, flags=...) at kernel/qeventloop.cpp:204
#14 0x00007f1f7b6e084b in Marble::RunnerTask::run (this=0x21f7470) at /home/andreas/Projects/marble/src/lib/RunnerTask.cpp:37
#15 0x000000308006f492 in QThreadPoolThread::run (this=0x21f6f90) at concurrent/qthreadpool.cpp:107
#16 0x000000308007bb1b in QThreadPrivate::start (arg=0x21f6f90) at thread/qthread_unix.cpp:298
#17 0x0000003079c07d90 in start_thread (arg=0x7f1f6492d700) at pthread_create.c:309
#18 0x00000030790ef3dd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:115

Thread 1 (Thread 0x7f1f79a1a840 (LWP 1726)):
[KCrash Handler]
#6  0x0000003080189e92 in QObjectPrivate::deleteChildren (this=0x200c590) at kernel/qobject.cpp:1907
#7  0x000000308019013c in QObject::~QObject (this=0x1d2f010, __in_chrg=<optimized out>) at kernel/qobject.cpp:926
#8  0x00007f1f7b6dc7a9 in Marble::MarbleRunnerManager::~MarbleRunnerManager (this=0x1d2f010, __in_chrg=<optimized out>) at /home/andreas/Projects/marble/src/lib/MarbleRunnerManager.cpp:139
#9  0x0000003080189e95 in QObjectPrivate::deleteChildren (this=0x200d0f0) at kernel/qobject.cpp:1907
#10 0x00000030814143d0 in QWidget::~QWidget (this=0x1d47ab0, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1675
#11 0x00007f1f7b6c62b7 in ~RoutingInputWidget (this=0x1d47ab0, __in_chrg=<optimized out>) at /home/andreas/Projects/marble/src/lib/routing/RoutingInputWidget.cpp:270
#12 Marble::RoutingInputWidget::~RoutingInputWidget (this=0x1d47ab0, __in_chrg=<optimized out>) at /home/andreas/Projects/marble/src/lib/routing/RoutingInputWidget.cpp:273
#13 0x0000003080189e95 in QObjectPrivate::deleteChildren (this=0x20034c0) at kernel/qobject.cpp:1907
#14 0x00000030814143d0 in QWidget::~QWidget (this=0x1dd17c0, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1675
#15 0x00007f1f7b6c9179 in Marble::RoutingWidget::~RoutingWidget (this=0x1dd17c0, __in_chrg=<optimized out>) at /home/andreas/Projects/marble/src/lib/routing/RoutingWidget.cpp:260
#16 0x0000003080189e95 in QObjectPrivate::deleteChildren (this=0x20217a0) at kernel/qobject.cpp:1907
#17 0x00000030814143d0 in QWidget::~QWidget (this=0x1dc39f0, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1675
#18 0x00000030814146a9 in QWidget::~QWidget (this=0x1dc39f0, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1699
#19 0x0000003080189e95 in QObjectPrivate::deleteChildren (this=0x2021410) at kernel/qobject.cpp:1907
#20 0x00000030814143d0 in QWidget::~QWidget (this=0x2021040, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1675
#21 0x00000030818564a9 in QScrollArea::~QScrollArea (this=0x2021040, __in_chrg=<optimized out>) at widgets/qscrollarea.cpp:176
#22 0x0000003080189e95 in QObjectPrivate::deleteChildren (this=0x19a2750) at kernel/qobject.cpp:1907
#23 0x00000030814143d0 in QWidget::~QWidget (this=0x1ae0070, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1675
#24 0x00007f1f7b5f22b9 in Marble::MarbleControlBox::~MarbleControlBox (this=0x1ae0070, __in_chrg=<optimized out>) at /home/andreas/Projects/marble/src/lib/MarbleControlBox.cpp:110
#25 0x0000003080189e95 in QObjectPrivate::deleteChildren (this=0x19be310) at kernel/qobject.cpp:1907
#26 0x00000030814143d0 in QWidget::~QWidget (this=0x19be070, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1675
#27 0x0000003081829739 in QSplitter::~QSplitter (this=0x19be070, __in_chrg=<optimized out>) at widgets/qsplitter.cpp:1056
#28 0x0000003080189e95 in QObjectPrivate::deleteChildren (this=0x1adfcb0) at kernel/qobject.cpp:1907
#29 0x00000030814143d0 in QWidget::~QWidget (this=0x18f6a30, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1675
#30 0x000000000041b632 in ~ControlView (this=0x18f6a30, __in_chrg=<optimized out>) at /home/andreas/Projects/marble/src/ControlView.cpp:82
#31 Marble::ControlView::~ControlView (this=0x18f6a30, __in_chrg=<optimized out>) at /home/andreas/Projects/marble/src/ControlView.cpp:85
#32 0x00007f1f7bc66633 in KParts::Part::~Part (this=0x1aa7540, __vtt_parm=0x4430f0, __in_chrg=<optimized out>) at /usr/src/debug/kdelibs-4.7.90/kparts/part.cpp:209
#33 0x000000000042bbc6 in Marble::MarblePart::~MarblePart (this=0x1aa7540, __in_chrg=<optimized out>, __vtt_parm=<optimized out>) at /home/andreas/Projects/marble/src/marble_part.cpp:187
#34 0x000000000042bc49 in Marble::MarblePart::~MarblePart (this=0x1aa7540, __in_chrg=<optimized out>, __vtt_parm=<optimized out>) at /home/andreas/Projects/marble/src/marble_part.cpp:193
#35 0x0000000000420921 in ~MainWindow (this=0x1896c30, __in_chrg=<optimized out>, __vtt_parm=<optimized out>) at /home/andreas/Projects/marble/src/KdeMainWindow.cpp:66
#36 Marble::MainWindow::~MainWindow (this=0x1896c30, __in_chrg=<optimized out>, __vtt_parm=<optimized out>) at /home/andreas/Projects/marble/src/KdeMainWindow.cpp:67
#37 0x0000003080190a18 in QObject::event (this=0x1896c30, e=<optimized out>) at kernel/qobject.cpp:1175
#38 0x00000030814197bb in QWidget::event (this=0x1896c30, event=0x50a2af0) at kernel/qwidget.cpp:8809
#39 0x00000030817eb25b in QMainWindow::event (this=0x1896c30, event=0x50a2af0) at widgets/qmainwindow.cpp:1478
#40 0x00007f1f7a7863a8 in KXmlGuiWindow::event (this=0x1896c30, ev=0x50a2af0) at /usr/src/debug/kdelibs-4.7.90/kdeui/xmlgui/kxmlguiwindow.cpp:126
#41 0x00000030813c96f4 in notify_helper (e=0x50a2af0, receiver=0x1896c30, this=0x183a6c0) at kernel/qapplication.cpp:4518
#42 QApplicationPrivate::notify_helper (this=0x183a6c0, receiver=0x1896c30, e=0x50a2af0) at kernel/qapplication.cpp:4490
#43 0x00000030813ce573 in QApplication::notify (this=0x7fff27b52720, receiver=0x1896c30, e=0x50a2af0) at kernel/qapplication.cpp:4379
#44 0x00007f1f7a68a766 in KApplication::notify (this=0x7fff27b52720, receiver=0x1896c30, event=0x50a2af0) at /usr/src/debug/kdelibs-4.7.90/kdeui/kernel/kapplication.cpp:311
#45 0x0000003080177b4c in QCoreApplication::notifyInternal (this=0x7fff27b52720, receiver=0x1896c30, event=0x50a2af0) at kernel/qcoreapplication.cpp:876
#46 0x000000308017b5da in sendEvent (event=0x50a2af0, receiver=0x1896c30) at kernel/qcoreapplication.h:231
#47 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x17dcc00) at kernel/qcoreapplication.cpp:1500
#48 0x00000030801a6403 in sendPostedEvents () at kernel/qcoreapplication.h:236
#49 postEventSourceDispatch (s=0x18234e0) at kernel/qeventdispatcher_glib.cpp:279
#50 0x000000307b044a7d in g_main_dispatch (context=0x181f4e0) at gmain.c:2425
#51 g_main_context_dispatch (context=0x181f4e0) at gmain.c:2995
#52 0x000000307b045278 in g_main_context_iterate (context=0x181f4e0, block=<optimized out>, dispatch=1, self=<optimized out>) at gmain.c:3073
#53 0x000000307b04544c in g_main_context_iteration (context=0x181f4e0, may_block=1) at gmain.c:3136
#54 0x00000030801a682f in QEventDispatcherGlib::processEvents (this=0x181cc20, flags=<optimized out>) at kernel/qeventdispatcher_glib.cpp:424
#55 0x000000308146c43e in QGuiEventDispatcherGlib::processEvents (this=<optimized out>, flags=<optimized out>) at kernel/qguieventdispatcher_glib.cpp:207
#56 0x0000003080176c82 in QEventLoop::processEvents (this=<optimized out>, flags=...) at kernel/qeventloop.cpp:149
#57 0x0000003080176ed7 in QEventLoop::exec (this=0x7fff27b52690, flags=...) at kernel/qeventloop.cpp:204
#58 0x000000308017b8d5 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1148
#59 0x000000000041a8d0 in main (argc=7, argv=0x7fff27b53fd8) at /home/andreas/Projects/marble/src/kdemain.cpp:398

Reported using DrKonqi
Comment 1 Dennis Nienhüser 2011-12-31 10:02:29 UTC
Git commit 4a1af05a822894d77bacac0932df6d38e74bcc10 by Dennis Nienhüser.
Committed on 31/12/2011 at 10:55.
Pushed by nienhueser into branch 'master'.

Do not unload plugins in PluginManager dtor.

According to qt documentation this is not needed. Not unloading plugins
avoids timing issues at destruction time: Plugin related instances can
be deleted after the deletion of MarbleModel now. Previously
MarbleModel deleted the PluginManager, which unloaded the plugins and
then created dangling pointers for plugin related instances not cleaned
up at that time.

Should be backported to the KDE/4.8 branch after testing.
Related: bug 274558

M  +20   -31   src/lib/PluginManager.cpp

http://commits.kde.org/marble/4a1af05a822894d77bacac0932df6d38e74bcc10
Comment 2 MK 2012-01-01 14:23:19 UTC
Created attachment 67301 [details]
New crash information added by DrKonqi

marble (1.2.2 (stable release)) on KDE Platform 4.7.3 (4.7.3) using Qt 4.7.4

- What I was doing when the application crashed:
used marble, then closed marble and it crashed

-- Backtrace (Reduced):
#6  0x00007fb0ad3c8421 in notify_helper (e=0x5408600, receiver=0x45a2fb0, this=0x11079b0) at kernel/qapplication.cpp:4486
#7  QApplicationPrivate::notify_helper (this=0x11079b0, receiver=0x45a2fb0, e=0x5408600) at kernel/qapplication.cpp:4458
#8  0x00007fb0ad3cd291 in QApplication::notify (this=0x7ffff6384340, receiver=0x45a2fb0, e=0x5408600) at kernel/qapplication.cpp:4365
#9  0x00007fb0aea4d126 in KApplication::notify (this=0x7ffff6384340, receiver=0x45a2fb0, event=0x5408600) at ../../kdeui/kernel/kapplication.cpp:311
#10 0x00007fb0ae017afc in QCoreApplication::notifyInternal (this=0x7ffff6384340, receiver=0x45a2fb0, event=0x5408600) at kernel/qcoreapplication.cpp:787
Comment 3 Hussam Al-Tayeb 2012-01-16 09:47:51 UTC
Created attachment 67879 [details]
New crash information added by DrKonqi

marble (1.2.95 (1.3 Release Candidate 1)) on KDE Platform 4.7.98 (4.8 RC2+ (4.7.98) using Qt 4.8.0

- What I was doing when the application crashed:
marble 4.8rc2 crashes on closing the application under Qt 4.8

-- Backtrace (Reduced):
#7  0xb679f78d in QObjectPrivate::deleteChildren (this=0x8896f50) at kernel/qobject.cpp:1908
#8  0xb67a5f04 in QObject::~QObject (this=0x8896d40, __in_chrg=<optimized out>) at kernel/qobject.cpp:927
#9  0xb75afe57 in Marble::MarbleRunnerManager::~MarbleRunnerManager (this=0x8896d40, __in_chrg=<optimized out>) at /home/hussam/packages/archlinux/packages/kdeedu-marble/trunk/src/marble-4.7.97/src/lib/MarbleRunnerManager.cpp:136
#10 0xb75afe92 in Marble::MarbleRunnerManager::~MarbleRunnerManager (this=0x8896d40, __in_chrg=<optimized out>) at /home/hussam/packages/archlinux/packages/kdeedu-marble/trunk/src/marble-4.7.97/src/lib/MarbleRunnerManager.cpp:139
#11 0xb679f790 in QObjectPrivate::deleteChildren (this=0x8896db0) at kernel/qobject.cpp:1908
Comment 4 Dennis Nienhüser 2012-01-18 21:17:00 UTC
Git commit 460e57a0ab45eaf606635a52bf0e3f2df5183c8b by Dennis Nienhüser.
Committed on 18/01/2012 at 20:37.
Pushed by nienhueser into branch 'KDE/4.8'.

Do not delete plugin instances. Fixes segfaults with multiple widgets.
(cherry picked from commit 8f5d08a5d4dd8a78536327bd73ac170303655790)
Related: bug 274558
FIXED-IN: KDE-4.8.0

M  +5    -21   src/lib/PluginManager.cpp
M  +2    -0    src/plugins/runner/monav/MonavPlugin.cpp
M  +2    -0    src/plugins/runner/monav/MonavPlugin.h

http://commits.kde.org/marble/460e57a0ab45eaf606635a52bf0e3f2df5183c8b
Comment 5 Dennis Nienhüser 2012-01-18 21:17:00 UTC
Git commit 8c126cf90013bb231a96270d7574ef011b1c322a by Dennis Nienhüser.
Committed on 31/12/2011 at 10:55.
Pushed by nienhueser into branch 'KDE/4.8'.

Do not unload plugins in PluginManager dtor.

According to qt documentation this is not needed. Not unloading plugins
avoids timing issues at destruction time: Plugin related instances can
be deleted after the deletion of MarbleModel now. Previously
MarbleModel deleted the PluginManager, which unloaded the plugins and
then created dangling pointers for plugin related instances not cleaned
up at that time.

Should be backported to the KDE/4.8 branch after testing.
Related: bug 274558
(cherry picked from commit 4a1af05a822894d77bacac0932df6d38e74bcc10)

M  +20   -31   src/lib/PluginManager.cpp

http://commits.kde.org/marble/8c126cf90013bb231a96270d7574ef011b1c322a
Comment 6 Andreas Krohn 2012-01-19 07:45:52 UTC
works for me - thanks!
Comment 7 Dennis Nienhüser 2012-01-20 22:30:37 UTC
Git commit 1246d4e04dbdba4b4a3b6c00f2c105d79794c4b7 by Dennis Nienhüser.
Committed on 31/12/2011 at 10:55.
Pushed by nienhueser into branch 'Touch/1.3'.

Do not unload plugins in PluginManager dtor.

According to qt documentation this is not needed. Not unloading plugins
avoids timing issues at destruction time: Plugin related instances can
be deleted after the deletion of MarbleModel now. Previously
MarbleModel deleted the PluginManager, which unloaded the plugins and
then created dangling pointers for plugin related instances not cleaned
up at that time.

Should be backported to the KDE/4.8 branch after testing.
Related: bug 274558
(cherry picked from commit 4a1af05a822894d77bacac0932df6d38e74bcc10)

M  +20   -31   src/lib/PluginManager.cpp

http://commits.kde.org/marble/1246d4e04dbdba4b4a3b6c00f2c105d79794c4b7
Comment 8 Dennis Nienhüser 2012-01-20 22:30:37 UTC
Git commit b6d75a4e70bea2bf0313453f5d83b30a5f52deb9 by Dennis Nienhüser.
Committed on 18/01/2012 at 20:37.
Pushed by nienhueser into branch 'Touch/1.3'.

Do not delete plugin instances. Fixes segfaults with multiple widgets.
(cherry picked from commit 8f5d08a5d4dd8a78536327bd73ac170303655790)
Related: bug 274558
FIXED-IN: KDE-4.8.0

M  +5    -21   src/lib/PluginManager.cpp
M  +2    -0    src/plugins/runner/monav/MonavPlugin.cpp
M  +2    -0    src/plugins/runner/monav/MonavPlugin.h

http://commits.kde.org/marble/b6d75a4e70bea2bf0313453f5d83b30a5f52deb9