Bug 343576

Summary: Crash when removing network-monitor applet
Product: [Frameworks and Libraries] frameworks-kdeclarative Reporter: Jan Grulich <jgrulich>
Component: generalAssignee: Marco Martin <notmart>
Status: RESOLVED FIXED    
Severity: crash CC: jappleii, jgrulich, kde, kdelibs-bugs, pastas4, sean_mccully
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:
Attachments: Backtrace from crash in Plotter component

Description Jan Grulich 2015-01-30 16:00:30 UTC
When I remove network-monitor applet from desktop it makes plasmashell to crash. 

Reproducible: Always

Steps to Reproduce:
1. Add a network-monitor applet to desktop
2. Remove it
Comment 1 Jan Grulich 2015-01-30 16:01:10 UTC
Created attachment 90816 [details]
Backtrace from crash in Plotter component
Comment 2 Christoph Feck 2015-01-30 22:07:33 UTC
Attachment from comment #1:

#0  0x00007fffd2909382 in PlotTexture::fbo() const (this=0x4042f914c0000000) at /home/jgrulich/development/projects/KDE/frameworks/kdeclarative/src/qmlcontrols/kquickcontrolsaddons/plotter.cpp:199
#1  0x00007fffd2906c88 in Plotter::render() (this=0x2ed37f0) at /home/jgrulich/development/projects/KDE/frameworks/kdeclarative/src/qmlcontrols/kquickcontrolsaddons/plotter.cpp:605
#2  0x00007fffd290d586 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (Plotter::*)()>::call(void (Plotter::*)(), Plotter*, void**) (f=(void (Plotter::*)(Plotter * const)) 0x7fffd2905af2 <Plotter::render()>, o=0x2ed37f0, arg=0x7fffffffcdf0) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:500
#3  0x00007fffd290d45c in QtPrivate::FunctionPointer<void (Plotter::*)()>::call<QtPrivate::List<>, void>(void (Plotter::*)(), Plotter*, void**) (f=(void (Plotter::*)(Plotter * const)) 0x7fffd2905af2 <Plotter::render()>, o=0x2ed37f0, arg=0x7fffffffcdf0) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:519
#4  0x00007fffd290c915 in QtPrivate::QSlotObject<void (Plotter::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0xfd5fd0, r=0x2ed37f0, a=0x7fffffffcdf0, ret=0x0)
    at /usr/include/qt5/QtCore/qobject_impl.h:143
#5  0x0000003752cbd45a in QMetaObject::activate(QObject*, int, int, void**) (a=0x7fffffffcdf0, r=0x2ed37f0, this=0xfd5fd0) at ../../src/corelib/kernel/qobject_impl.h:124
#6  0x0000003752cbd45a in QMetaObject::activate(QObject*, int, int, void**) (sender=sender@entry=0x6e2740, signalOffset=<optimized out>, local_signal_index=local_signal_index@entry=6, argv=argv@entry=0x0) at kernel/qobject.cpp:3702
#7  0x0000003752cbe157 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=sender@entry=0x6e2740, m=m@entry=0x322ebcdc00 <QQuickWindow::staticMetaObject>, local_signal_index=local_signal_index@entry=6, argv=argv@entry=0x0) at kernel/qobject.cpp:3582
#8  0x000000322e998b73 in QQuickWindow::beforeRendering() (this=this@entry=0x6e2740) at .moc/moc_qquickwindow.cpp:461
#9  0x000000322e99d5ee in QQuickWindowPrivate::renderSceneGraph(QSize const&) (this=this@entry=0x745000, size=...) at /usr/src/debug/qtdeclarative-opensource-src-5.4.0/src/quick/items/qquickwindow.cpp:365
#10 0x000000322e96cc96 in QSGGuiThreadRenderLoop::renderWindow(QQuickWindow*) (this=this@entry=0x7c9140, window=0x6e2740) at /usr/src/debug/qtdeclarative-opensource-src-5.4.0/src/quick/scenegraph/qsgrenderloop.cpp:369
#11 0x000000322e96d7b1 in QSGGuiThreadRenderLoop::event(QEvent*) (this=0x7c9140, e=<optimized out>) at /usr/src/debug/qtdeclarative-opensource-src-5.4.0/src/quick/scenegraph/qsgrenderloop.cpp:467
#12 0x000000309b35ad3c in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=this@entry=0x61d610, receiver=receiver@entry=0x7c9140, e=e@entry=0x7fffffffd290) at kernel/qapplication.cpp:3722
#13 0x000000309b360330 in QApplication::notify(QObject*, QEvent*) (this=0x7fffffffd5f0, receiver=0x7c9140, e=0x7fffffffd290) at kernel/qapplication.cpp:3505
#14 0x0000003752c8e4ab in QCoreApplication::notifyInternal(QObject*, QEvent*) (this=0x7fffffffd5f0, receiver=0x7c9140, event=event@entry=0x7fffffffd290) at kernel/qcoreapplication.cpp:932
#15 0x0000003752ce4655 in QTimerInfoList::activateTimers() (event=0x7fffffffd290, receiver=<optimized out>) at ../../src/corelib/kernel/qcoreapplication.h:228
#16 0x0000003752ce4655 in QTimerInfoList::activateTimers() (this=0x6568e0) at kernel/qtimerinfo_unix.cpp:635
#17 0x0000003752ce4a81 in timerSourceDispatch(GSource*, GSourceFunc, gpointer) (source=<optimized out>) at kernel/qeventdispatcher_glib.cpp:177
#18 0x0000003743249aeb in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
#19 0x0000003743249e88 in g_main_context_iterate.isra () at /lib64/libglib-2.0.so.0
#20 0x0000003743249f3c in g_main_context_iteration () at /lib64/libglib-2.0.so.0
#21 0x0000003752ce5727 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x65b4b0, flags=...) at kernel/qeventdispatcher_glib.cpp:418
#22 0x0000003752c8bd42 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fffffffd4e0, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204
#23 0x0000003752c937ec in QCoreApplication::exec() () at kernel/qcoreapplication.cpp:1185
#24 0x00000030998e2a7c in QGuiApplication::exec() () at kernel/qguiapplication.cpp:1532
#25 0x000000309b356df5 in QApplication::exec() () at kernel/qapplication.cpp:2956
#26 0x0000000000407699 in main(int, char**) (argc=3, argv=<optimized out>) at /home/jgrulich/development/projects/plasmate/plasmoidviewer/main.cpp:131
Comment 3 Bhushan Shah 2015-02-07 03:56:04 UTC
*** Bug 343866 has been marked as a duplicate of this bug. ***
Comment 4 sean_mccully 2015-02-14 01:46:25 UTC
This looks resolved in my latest build.
Comment 5 Marco Martin 2018-02-05 16:33:41 UTC
Git commit 2617a2ab9d472a78559f11ee8d430d951e3335f2 by Marco Martin.
Committed on 05/02/2018 at 16:33.
Pushed by mart into branch 'master'.

disconnect render() on window change

Summary:
when the window changes, the node will be deleted, and render()
will access an invalid pointer.
disconnect the render slot when the window change, as it
can't do anything useful until the next updatepaintnode.
Make the managedtexturenode actually do the management, as
textures were never deleted
Related: bug 388508, bug 374280, bug 365052

Test Plan:
The bug is easily reproducible without the patch, wasn't
able to reproduce it anymore with it

Reviewers: #plasma, davidedmundson

Reviewed By: #plasma, davidedmundson

Subscribers: davidedmundson, broulik, ngraham, plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D10250

M  +10   -2    src/qmlcontrols/kquickcontrolsaddons/plotter.cpp
M  +3    -1    src/qmlcontrols/kquickcontrolsaddons/plotter.h

https://commits.kde.org/kdeclarative/2617a2ab9d472a78559f11ee8d430d951e3335f2
Comment 6 David Edmundson 2019-12-05 07:38:30 UTC
*** Bug 414847 has been marked as a duplicate of this bug. ***