Bug 299077

Summary: Crash on a dangling m_model pointer in AbstractItemView [use dummy models similar to those in Qt]
Product: plasma4 Reporter: Nicholas Parsons <nicholas.parsons>
Component: widget-folderviewAssignee: Ignat Semenov <i.semenov.kde>
Status: RESOLVED FIXED    
Severity: crash CC: afiestas, alex.williams, cfeck, deanguan, ivypes, jefquebec, plasma-bugs, steve_atty, titibanjekistan, troyrileys8709, wodencafe
Priority: NOR    
Version: 4.8.4   
Target Milestone: ---   
Platform: Ubuntu Packages   
OS: Linux   
Latest Commit: Version Fixed In: 4.9.5
Attachments: New crash information added by DrKonqi

Description Nicholas Parsons 2012-04-30 04:49:50 UTC
Application: plasma-desktop (0.4)
KDE Platform Version: 4.8.2 (4.8.2)
Qt Version: 4.8.1
Operating System: Linux 3.2.0-24-generic-pae i686
Distribution: Ubuntu 12.04 LTS

-- Information about the crash:
- What I was doing when the application failed:
Attempting to change the Workspace Apperance (the theme)
- Unusual behavior I noticed:
Screen turned black for a second or so and then arrived at the theme chosen
- Custom settings of the application:
Theme was installed from within the program via KDE-look

The crash can be reproduced some of the time.

-- Backtrace:
Application: Plasma Desktop Shell (plasma-desktop), signal: Segmentation fault
Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1".
[Current thread is 1 (Thread 0xb1ac5740 (LWP 1526))]

Thread 4 (Thread 0xa9e94b40 (LWP 1529)):
#0  0xb2c73dcd in clock_gettime () from /lib/i386-linux-gnu/librt.so.1
#1  0xb6377315 in do_gettime (frac=0xa9e93fb0, sec=0xa9e93fa8) at tools/qelapsedtimer_unix.cpp:123
#2  qt_gettime () at tools/qelapsedtimer_unix.cpp:140
#3  0xb6461226 in QTimerInfoList::updateCurrentTime (this=0xa9502074) at kernel/qeventdispatcher_unix.cpp:343
#4  0xb646157a in QTimerInfoList::timerWait (this=0xa9502074, tm=...) at kernel/qeventdispatcher_unix.cpp:450
#5  0xb645fe23 in timerSourcePrepareHelper (src=<optimized out>, timeout=0xa9e940bc) at kernel/qeventdispatcher_glib.cpp:136
#6  0xb645febd in timerSourcePrepare (source=0xa9502040, timeout=<optimized out>) at kernel/qeventdispatcher_glib.cpp:169
#7  0xb2bbc762 in g_main_context_prepare () from /lib/i386-linux-gnu/libglib-2.0.so.0
#8  0xb2bbcf6f in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#9  0xb2bbd1c1 in g_main_context_iteration () from /lib/i386-linux-gnu/libglib-2.0.so.0
#10 0xb64608e7 in QEventDispatcherGlib::processEvents (this=0xa9500468, flags=...) at kernel/qeventdispatcher_glib.cpp:426
#11 0xb642c50d in QEventLoop::processEvents (this=0xa9e94240, flags=...) at kernel/qeventloop.cpp:149
#12 0xb642c7a9 in QEventLoop::exec (this=0xa9e94240, flags=...) at kernel/qeventloop.cpp:204
#13 0xb631594c in QThread::exec (this=0xa092b80) at thread/qthread.cpp:501
#14 0xb6409b5d in QInotifyFileSystemWatcherEngine::run (this=0xa092b80) at io/qfilesystemwatcher_inotify.cpp:248
#15 0xb6318de0 in QThreadPrivate::start (arg=0xa092b80) at thread/qthread_unix.cpp:298
#16 0xb2ccdd4c in start_thread () from /lib/i386-linux-gnu/libpthread.so.0
#17 0xb763cace in clone () from /lib/i386-linux-gnu/libc.so.6

Thread 3 (Thread 0xa8f9eb40 (LWP 1532)):
#0  0xb764a5f8 in pthread_mutex_lock () from /lib/i386-linux-gnu/libc.so.6
#1  0xb2bfc390 in g_mutex_lock () from /lib/i386-linux-gnu/libglib-2.0.so.0
#2  0xb2bbd020 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#3  0xb2bbd1c1 in g_main_context_iteration () from /lib/i386-linux-gnu/libglib-2.0.so.0
#4  0xb64608e7 in QEventDispatcherGlib::processEvents (this=0xa8600468, flags=...) at kernel/qeventdispatcher_glib.cpp:426
#5  0xb642c50d in QEventLoop::processEvents (this=0xa8f9e240, flags=...) at kernel/qeventloop.cpp:149
#6  0xb642c7a9 in QEventLoop::exec (this=0xa8f9e240, flags=...) at kernel/qeventloop.cpp:204
#7  0xb631594c in QThread::exec (this=0xa308c10) at thread/qthread.cpp:501
#8  0xb6409b5d in QInotifyFileSystemWatcherEngine::run (this=0xa308c10) at io/qfilesystemwatcher_inotify.cpp:248
#9  0xb6318de0 in QThreadPrivate::start (arg=0xa308c10) at thread/qthread_unix.cpp:298
#10 0xb2ccdd4c in start_thread () from /lib/i386-linux-gnu/libpthread.so.0
#11 0xb763cace in clone () from /lib/i386-linux-gnu/libc.so.6

Thread 2 (Thread 0xa82c1b40 (LWP 1533)):
#0  0xb778a424 in __kernel_vsyscall ()
#1  0xb2cd196b in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/i386-linux-gnu/libpthread.so.0
#2  0xb764a3dc in pthread_cond_wait () from /lib/i386-linux-gnu/libc.so.6
#3  0xb3c8e029 in ?? () from /usr/lib/i386-linux-gnu/libQtScript.so.4
#4  0xb3c8e06f in ?? () from /usr/lib/i386-linux-gnu/libQtScript.so.4
#5  0xb2ccdd4c in start_thread () from /lib/i386-linux-gnu/libpthread.so.0
#6  0xb763cace in clone () from /lib/i386-linux-gnu/libc.so.6

Thread 1 (Thread 0xb1ac5740 (LWP 1526)):
[KCrash Handler]
#7  0xaf1d83d2 in ListView::updateSizeHint (this=0xa2e3778) at ../../../../plasma/applets/folderview/listview.cpp:209
#8  0xaf1d47fb in qt_static_metacall (_a=0xbfe0cd50, _id=12, _o=0xa2e3778, _c=<optimized out>) at ./abstractitemview.moc:96
#9  AbstractItemView::qt_static_metacall (_o=0xa2e3778, _c=QMetaObject::InvokeMetaMethod, _id=12, _a=0xbfe0cd50) at ./abstractitemview.moc:78
#10 0xb64446b1 in QMetaObject::activate (sender=0xa2f2368, m=0xb75495f8, local_signal_index=0, argv=0x0) at kernel/qobject.cpp:3547
#11 0xb73e5595 in Plasma::Svg::repaintNeeded (this=0xa2f2368) at ./svg.moc:221
#12 0xb73e8e45 in themeChanged (this=0xa2ebb58) at ../../plasma/svg.cpp:618
#13 Plasma::SvgPrivate::themeChanged (this=0xa2ebb58) at ../../plasma/svg.cpp:601
#14 0xb73ea8fb in qt_static_metacall (_a=0xbfe0cee0, _id=2, _o=0xa2f2368, _c=<optimized out>) at ./svg.moc:114
#15 Plasma::Svg::qt_static_metacall (_o=0xa2f2368, _c=QMetaObject::InvokeMetaMethod, _id=2, _a=0xbfe0cee0) at ./svg.moc:106
#16 0xb64446b1 in QMetaObject::activate (sender=0x9d7b3c8, m=0xb75496d8, local_signal_index=0, argv=0x0) at kernel/qobject.cpp:3547
#17 0xb73ecc45 in Plasma::Theme::themeChanged (this=0x9d7b3c8) at ./theme.moc:199
#18 0xb73f4ea2 in Plasma::ThemePrivate::notifyOfChanged (this=0x9d677f8) at ../../plasma/theme.cpp:366
#19 0xb73f5053 in qt_static_metacall (_a=0xbfe0d030, _id=8, _o=0x9d7b3c8, _c=<optimized out>) at ./theme.moc:102
#20 Plasma::Theme::qt_static_metacall (_o=0x9d7b3c8, _c=QMetaObject::InvokeMetaMethod, _id=8, _a=0xbfe0d030) at ./theme.moc:88
#21 0xb64446b1 in QMetaObject::activate (sender=0x9d72778, m=0xb658b4d8, local_signal_index=0, argv=0x0) at kernel/qobject.cpp:3547
#22 0xb6497625 in QTimer::timeout (this=0x9d72778) at .moc/release-shared/moc_qtimer.cpp:148
#23 0xb644d566 in QTimer::timerEvent (this=0x9d72778, e=0xbfe0d53c) at kernel/qtimer.cpp:280
#24 0xb6448ac4 in QObject::event (this=0x9d72778, e=0xbfe0d53c) at kernel/qobject.cpp:1157
#25 0xb5918ed4 in notify_helper (e=0xbfe0d53c, receiver=0x9d72778, this=0x9c80648) at kernel/qapplication.cpp:4559
#26 QApplicationPrivate::notify_helper (this=0x9c80648, receiver=0x9d72778, e=0xbfe0d53c) at kernel/qapplication.cpp:4531
#27 0xb591e30d in QApplication::notify (this=0xbfe0d53c, receiver=0x9d72778, e=0xbfe0d53c) at kernel/qapplication.cpp:4288
#28 0xb6ac7b21 in KApplication::notify (this=0x9c6fa00, receiver=0x9d72778, event=0xbfe0d53c) at ../../kdeui/kernel/kapplication.cpp:311
#29 0xb642d97e in QCoreApplication::notifyInternal (this=0x9c6fa00, receiver=0x9d72778, event=0xbfe0d53c) at kernel/qcoreapplication.cpp:876
#30 0xb6462990 in sendEvent (event=0xbfe0d53c, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:231
#31 QTimerInfoList::activateTimers (this=0x9c838b4) at kernel/qeventdispatcher_unix.cpp:611
#32 0xb64600f8 in timerSourceDispatch (source=0x9c83880) at kernel/qeventdispatcher_glib.cpp:186
#33 timerSourceDispatch (source=0x9c83880) at kernel/qeventdispatcher_glib.cpp:180
#34 0xb2bbccda in g_main_context_dispatch () from /lib/i386-linux-gnu/libglib-2.0.so.0
#35 0xb2bbd0e5 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#36 0xb2bbd1c1 in g_main_context_iteration () from /lib/i386-linux-gnu/libglib-2.0.so.0
#37 0xb6460887 in QEventDispatcherGlib::processEvents (this=0x9c32eb8, flags=...) at kernel/qeventdispatcher_glib.cpp:424
#38 0xb59d1aaa in QGuiEventDispatcherGlib::processEvents (this=0x9c32eb8, flags=...) at kernel/qguieventdispatcher_glib.cpp:204
#39 0xb642c50d in QEventLoop::processEvents (this=0xa83f6c0, flags=...) at kernel/qeventloop.cpp:149
#40 0xb642c7a9 in QEventLoop::exec (this=0xa83f6c0, flags=...) at kernel/qeventloop.cpp:204
#41 0xb59b54cc in QDragManager::drag (this=0x9edae18, o=0xc733380) at kernel/qdnd_x11.cpp:2018
#42 0xb592c981 in QDrag::exec (this=0xc733380, supportedActions=..., defaultDropAction=Qt::IgnoreAction) at kernel/qdrag.cpp:284
#43 0xb592ca25 in QDrag::exec (this=0xc733380, supportedActions=...) at kernel/qdrag.cpp:239
#44 0xb6f10abc in Plasma::AbstractIcon::mouseMoveEvent (this=0xadb4110, event=0xbfe0e074) at ../../../libs/plasmagenericshell/abstracticon.cpp:188
#45 0xb5f9b997 in QGraphicsItem::sceneEvent (this=0xadb4118, event=0xbfe0e074) at graphicsview/qgraphicsitem.cpp:6735
#46 0xb5ff9196 in QGraphicsWidget::sceneEvent (this=0xadb4110, event=0xbfe0e074) at graphicsview/qgraphicswidget.cpp:1229
#47 0xb5fc530e in sendEvent (event=0xbfe0e074, item=0xadb4118, this=<optimized out>) at graphicsview/qgraphicsscene.cpp:1221
#48 QGraphicsScenePrivate::sendEvent (this=0x9d7fda0, item=0xadb4118, event=0xbfe0e074) at graphicsview/qgraphicsscene.cpp:1197
#49 0xb5fc5f43 in QGraphicsScenePrivate::sendMouseEvent (this=0x9d7fda0, mouseEvent=0xbfe0e074) at graphicsview/qgraphicsscene.cpp:1295
#50 0xb5fc6b03 in QGraphicsScene::mouseMoveEvent (this=0x9c81210, mouseEvent=0xbfe0e074) at graphicsview/qgraphicsscene.cpp:4102
#51 0xb5fd53c7 in QGraphicsScene::event (this=0x9c81210, event=0xbfe0e074) at graphicsview/qgraphicsscene.cpp:3451
#52 0xb5918ed4 in notify_helper (e=0xbfe0e074, receiver=0x9c81210, this=0x9c80648) at kernel/qapplication.cpp:4559
#53 QApplicationPrivate::notify_helper (this=0x9c80648, receiver=0x9c81210, e=0xbfe0e074) at kernel/qapplication.cpp:4531
#54 0xb591e30d in QApplication::notify (this=0xbfe0e074, receiver=0x9c81210, e=0xbfe0e074) at kernel/qapplication.cpp:4288
#55 0xb6ac7b21 in KApplication::notify (this=0x9c6fa00, receiver=0x9c81210, event=0xbfe0e074) at ../../kdeui/kernel/kapplication.cpp:311
#56 0xb642d97e in QCoreApplication::notifyInternal (this=0x9c6fa00, receiver=0x9c81210, event=0xbfe0e074) at kernel/qcoreapplication.cpp:876
#57 0xb5916ced in sendSpontaneousEvent (event=0xbfe0e074, receiver=0x9c81210) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:234
#58 qt_sendSpontaneousEvent (receiver=0x9c81210, event=0xbfe0e074) at kernel/qapplication.cpp:5557
#59 0xb5ff297a in QGraphicsViewPrivate::mouseMoveEventHandler (this=0xad751c0, event=0xbfe0e864) at graphicsview/qgraphicsview.cpp:646
#60 0xb5ff2bde in QGraphicsView::mouseMoveEvent (this=0xad69ac0, event=0xbfe0e864) at graphicsview/qgraphicsview.cpp:3276
#61 0xb59731e8 in QWidget::event (this=0xad69ac0, event=0xbfe0e864) at kernel/qwidget.cpp:8347
#62 0xb5d90e45 in QFrame::event (this=0xad69ac0, e=0xbfe0e864) at widgets/qframe.cpp:557
#63 0xb5e23aa1 in QAbstractScrollArea::viewportEvent (this=0xad69ac0, e=0xbfe0e864) at widgets/qabstractscrollarea.cpp:1043
#64 0xb5ff769c in QGraphicsView::viewportEvent (this=0xad69ac0, event=0xbfe0e864) at graphicsview/qgraphicsview.cpp:2866
#65 0xb5e261c6 in viewportEvent (this=<optimized out>, event=0xbfe0e864) at widgets/qabstractscrollarea_p.h:100
#66 eventFilter (e=0xbfe0e864, this=<optimized out>, o=<optimized out>) at widgets/qabstractscrollarea_p.h:116
#67 QAbstractScrollAreaFilter::eventFilter (this=0xb776160, o=0xb197ca0, e=0xbfe0e864) at widgets/qabstractscrollarea_p.h:115
#68 0xb642db16 in QCoreApplicationPrivate::sendThroughObjectEventFilters (this=0x9c80648, receiver=0xb197ca0, event=0xbfe0e864) at kernel/qcoreapplication.cpp:986
#69 0xb5918ea2 in notify_helper (e=0xbfe0e864, receiver=0xb197ca0, this=0x9c80648) at kernel/qapplication.cpp:4555
#70 QApplicationPrivate::notify_helper (this=0x9c80648, receiver=0xb197ca0, e=0xbfe0e864) at kernel/qapplication.cpp:4531
#71 0xb591f024 in QApplication::notify (this=0x9c80648, receiver=0xb197ca0, e=0xbfe0e864) at kernel/qapplication.cpp:4102
#72 0xb6ac7b21 in KApplication::notify (this=0x9c6fa00, receiver=0xb197ca0, event=0xbfe0e864) at ../../kdeui/kernel/kapplication.cpp:311
#73 0xb642d97e in QCoreApplication::notifyInternal (this=0x9c6fa00, receiver=0xb197ca0, event=0xbfe0e864) at kernel/qcoreapplication.cpp:876
#74 0xb5919e95 in sendEvent (event=<optimized out>, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:231
#75 QApplicationPrivate::sendMouseEvent (receiver=0xb197ca0, event=0xbfe0e864, alienWidget=0xb197ca0, nativeWidget=0xa755d08, buttonDown=0xb62adcf4, lastMouseReceiver=..., spontaneous=true) at kernel/qapplication.cpp:3170
#76 0xb59a6074 in QETWidget::translateMouseEvent (this=0xa755d08, event=0xbfe0ed1c) at kernel/qapplication_x11.cpp:4617
#77 0xb59a4c0d in QApplication::x11ProcessEvent (this=0x9c6fa00, event=0xbfe0ed1c) at kernel/qapplication_x11.cpp:3732
#78 0xb59d1eac in x11EventSourceDispatch (s=0x9c7ee88, callback=0, user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:146
#79 0xb2bbccda in g_main_context_dispatch () from /lib/i386-linux-gnu/libglib-2.0.so.0
#80 0xb2bbd0e5 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#81 0xb2bbd1c1 in g_main_context_iteration () from /lib/i386-linux-gnu/libglib-2.0.so.0
#82 0xb6460887 in QEventDispatcherGlib::processEvents (this=0x9c32eb8, flags=...) at kernel/qeventdispatcher_glib.cpp:424
#83 0xb59d1aaa in QGuiEventDispatcherGlib::processEvents (this=0x9c32eb8, flags=...) at kernel/qguieventdispatcher_glib.cpp:204
#84 0xb642c50d in QEventLoop::processEvents (this=0xbfe0f014, flags=...) at kernel/qeventloop.cpp:149
#85 0xb642c7a9 in QEventLoop::exec (this=0xbfe0f014, flags=...) at kernel/qeventloop.cpp:204
#86 0xb6431eba in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1148
#87 0xb5916a74 in QApplication::exec () at kernel/qapplication.cpp:3820
#88 0xb773ea7b in kdemain (argc=1, argv=0xbfe0f214) at ../../../../plasma/desktop/shell/main.cpp:120
#89 0x0804850b in main (argc=1, argv=0xbfe0f214) at plasma-desktop_dummy.cpp:3

Reported using DrKonqi
Comment 1 Jekyll Wu 2012-05-26 16:47:29 UTC
*** Bug 299531 has been marked as a duplicate of this bug. ***
Comment 2 Ignat Semenov 2012-05-29 14:58:23 UTC
Did you have a folder view applet in a panel? Was it collapsed when you chaged the theme?

Also, do you have all the debug packages installed? The first 6 lines of the bt are missing. Does the DrKOnqui dialog complain about any packages missing or give other info?
Comment 3 Jekyll Wu 2012-06-16 13:20:28 UTC
*** Bug 302011 has been marked as a duplicate of this bug. ***
Comment 4 Myriam Schweingruber 2012-06-20 06:21:19 UTC
Confirmed by duplicates
Comment 5 Jekyll Wu 2012-07-17 14:03:43 UTC
*** Bug 303681 has been marked as a duplicate of this bug. ***
Comment 6 Jekyll Wu 2012-07-17 14:04:30 UTC
*** Bug 303123 has been marked as a duplicate of this bug. ***
Comment 7 nakki 2012-07-17 16:44:58 UTC
(In reply to comment #2)
> Did you have a folder view applet in a panel? Was it collapsed when you
> chaged the theme?
> 
> Also, do you have all the debug packages installed? The first 6 lines of the
> bt are missing. Does the DrKOnqui dialog complain about any packages missing
> or give other info?

I have the quick access applet in the panel.
The bug window segnalation appeared to me for the first time then i installed the missing packages for the backtrace....i don't know...
Comment 8 Christoph Feck 2012-07-18 23:50:24 UTC
*** Bug 303770 has been marked as a duplicate of this bug. ***
Comment 9 Christoph Feck 2012-07-19 00:20:33 UTC
Ignat, in folderview.cpp:1251 the m_listView is created in constraintsEvent() depending on the form factor. In line 1216 the m_listView variable is set to 0, but the actual list view is never deleted.

I guess this crash comes from dangling (leaking) list views, which still have an m_model attached. The FrameSvg in the list view calls into the list view's updateSizeHint() method, but the m_model is no longer valid for the dangling list views.
Comment 10 Christoph Feck 2012-07-19 00:24:02 UTC
In other words, to reproduce the crash, it is probably required to switch from "list view" mode (panel icon?) to "planar" mode, then do whatever is needed to set a new model (change folders?), then change plasma theme.
Comment 11 Ignat Semenov 2012-07-19 10:47:48 UTC
If I recall correctly, I was fixing this crash a bit different. THere are dangling model pointers in AbstractItemView, and I implemented a solution similar to what Qt uses (actually, it was you who had proposed doing that on irc :)) While doing that, I came across the need for a certain refactoring to be able to use the dummy model solution. Once we decide how to refactor, I'll push.

Actually, I concluded that it was the model pointer since in ListView::updateSizeHInt() the model pointer is the only variable that can be invalid.

THank you for the proposal, I'll check that out as well. What you propose is indeed broader than my solution, not just the model pointer, but the whole view pointer is invalid.
Comment 12 Ignat Semenov 2012-07-19 11:27:45 UTC
Actually,

folderview.cpp:1303

m_dialog->setGraphicsWidget(m_listView); // Ownership is transferred to the scene in the dialog

so we do not need to delete the list view explicitly if the m_dialog is deleted.
Comment 13 Ignat Semenov 2012-10-22 14:39:44 UTC
Git commit f9ec7cf53d6516bfa3df2ca418f23859b6fbe93e by Ignat Semenov.
Committed on 22/10/2012 at 16:37.
Pushed by isemenov into branch 'KDE/4.9'.

delete m_listView in constraintsEvent()

M  +1    -0    plasma/applets/folderview/folderview.cpp

http://commits.kde.org/kde-baseapps/f9ec7cf53d6516bfa3df2ca418f23859b6fbe93e
Comment 14 Alex Fiestas 2012-11-27 11:51:40 UTC
Created attachment 75502 [details]
New crash information added by DrKonqi

plasma-desktop (0.4) on KDE Platform 4.9.80 using Qt 4.8.4

- What I was doing when the application crashed:
Same crash while changing the plasma theme

-- Backtrace (Reduced):
#6  0x00007fea28b91674 in ListView::updateSizeHint (this=0x48ff2b0) at /home/afiestas/kdesrc/kde/kde-baseapps/plasma/applets/folderview/listview.cpp:209
[...]
#8  0x00007fea4689b73f in themeChanged (this=0x48ff450) at /home/afiestas/kdesrc/kde/kdelibs/plasma/svg.cpp:618
#9  Plasma::SvgPrivate::themeChanged (this=0x48ff450) at /home/afiestas/kdesrc/kde/kdelibs/plasma/svg.cpp:601
#10 0x00007fea4689b999 in qt_static_metacall (_a=<optimized out>, _id=<optimized out>, _o=<optimized out>, _c=<optimized out>) at /home/afiestas/kdesrc/build/kde/kdelibs/plasma/svg.moc:114
#11 Plasma::Svg::qt_static_metacall (_o=0x0, _c=1011010944, _id=-169936, _a=0x7fff3c42cef0) at /home/afiestas/kdesrc/build/kde/kdelibs/plasma/svg.moc:106
Comment 15 Ignat Semenov 2012-11-27 23:24:29 UTC
Alex, was the folderview widget in a panel or on the desktop? Did you drag the widget from the panel to the desktop or vice versa? Not necessarily right before the cash, but during the whole lifecycle of this exact folderview instance?

Please, provide as many details as possible, your input is really valuable with this mysterious crash!
Comment 16 Ignat Semenov 2012-11-27 23:25:29 UTC
Also, is the folderview (kde-baseapps repo) compiled fr4om sources from the current trunk?
Comment 17 Ignat Semenov 2012-12-23 11:01:55 UTC
*** Bug 311661 has been marked as a duplicate of this bug. ***
Comment 18 Ignat Semenov 2012-12-23 11:02:04 UTC
*** Bug 312084 has been marked as a duplicate of this bug. ***
Comment 19 wodencafe 2012-12-23 14:18:04 UTC
*** Bug 312084 has been marked as a duplicate of this bug. ***
Comment 20 Ignat Semenov 2012-12-23 19:24:43 UTC
Git commit d0262729cc7c507a91a7d2463291acb5092a3301 by Ignat Semenov.
Committed on 23/12/2012 at 20:09.
Pushed by isemenov into branch 'KDE/4.9'.

fix crash: delete the Dialog and its child ListView in the applet dtor

The ListView object ownership is transferred to Dialog upon creation, so
not deleting the Dialog object in the applet dtor results in a leaked
ListView. However, when the leaked ListView receives a repaint signal on
plasma theme change, the model pointer in that view is already invalid,
which leads to the crash in m_model->rowCount().
FIXED-IN:4.9.5

M  +2    -0    plasma/applets/folderview/folderview.cpp

http://commits.kde.org/kde-baseapps/d0262729cc7c507a91a7d2463291acb5092a3301
Comment 21 Ignat Semenov 2012-12-23 19:24:58 UTC
Git commit 0df2b730ea986e6f6b8c05c0c678e9329d3d4416 by Ignat Semenov.
Committed on 23/12/2012 at 20:09.
Pushed by isemenov into branch 'KDE/4.10'.

fix crash: delete the Dialog and its child ListView in the applet dtor

The ListView object ownership is transferred to Dialog upon creation, so
not deleting the Dialog object in the applet dtor results in a leaked
ListView. However, when the leaked ListView receives a repaint signal on
plasma theme change, the model pointer in that view is already invalid,
which leads to the crash in m_model->rowCount().
FIXED-IN:4.9.5

M  +2    -0    plasma/applets/folderview/folderview.cpp

http://commits.kde.org/kde-baseapps/0df2b730ea986e6f6b8c05c0c678e9329d3d4416
Comment 22 Ignat Semenov 2012-12-23 19:25:16 UTC
Git commit dd284695a2b28f91f310d1caeac09dc81ef63c39 by Ignat Semenov.
Committed on 23/12/2012 at 20:09.
Pushed by isemenov into branch 'master'.

fix crash: delete the Dialog and its child ListView in the applet dtor

The ListView object ownership is transferred to Dialog upon creation, so
not deleting the Dialog object in the applet dtor results in a leaked
ListView. However, when the leaked ListView receives a repaint signal on
plasma theme change, the model pointer in that view is already invalid,
which leads to the crash in m_model->rowCount().
FIXED-IN:4.9.5

M  +2    -0    plasma/applets/folderview/folderview.cpp

http://commits.kde.org/kde-baseapps/dd284695a2b28f91f310d1caeac09dc81ef63c39
Comment 23 Jekyll Wu 2013-02-27 02:07:08 UTC
*** Bug 315831 has been marked as a duplicate of this bug. ***