Bug 303247

Summary: Crash after installed a new decoration
Product: [Plasma] kwin Reporter: Alex Fiestas <afiestas>
Component: decorationsAssignee: KWin default assignee <kwin-bugs-null>
Status: RESOLVED FIXED    
Severity: crash Keywords: regression
Priority: NOR Flags: thomas.luebking: ReviewRequest+
Version: git master   
Target Milestone: 4.9.0   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Alex Fiestas 2012-07-09 17:25:59 UTC
Application: systemsettings (1.0)
KDE Platform Version: 4.8.4 (4.8.4) (Compiled from sources)
Qt Version: 4.8.2
Operating System: Linux 3.4.4-3-ARCH x86_64

-- Information about the crash:
Just after I installed a new decoration (Air-something) systemsettings crashed.

The crash can be reproduced some of the time.

-- Backtrace:
Application: System Settings (systemsettings), signal: Aborted
Using host libthread_db library "/lib/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f5c7ae6b780 (LWP 3712))]

Thread 3 (Thread 0x7f5c5c3f0700 (LWP 3731)):
#0  0x00007f5c77405954 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#1  0x00007f5c74740aa7 in ?? () from /lib/libQtScript.so.4
#2  0x00007f5c74740ad9 in ?? () from /lib/libQtScript.so.4
#3  0x00007f5c77401e0f in start_thread () from /lib/libpthread.so.0
#4  0x00007f5c7692704d in clone () from /lib/libc.so.6

Thread 2 (Thread 0x7f5c5ac61700 (LWP 3732)):
#0  0x00007f5c76920c63 in select () from /lib/libc.so.6
#1  0x00007f5c7776b7e2 in ?? () from /lib/libQtCore.so.4
#2  0x00007f5c7769167b in ?? () from /lib/libQtCore.so.4
#3  0x00007f5c77401e0f in start_thread () from /lib/libpthread.so.0
#4  0x00007f5c7692704d in clone () from /lib/libc.so.6

Thread 1 (Thread 0x7f5c7ae6b780 (LWP 3712)):
[KCrash Handler]
#6  0x00007f5c76877fa5 in raise () from /lib/libc.so.6
#7  0x00007f5c76879428 in abort () from /lib/libc.so.6
#8  0x00007f5c76871002 in __assert_fail_base () from /lib/libc.so.6
#9  0x00007f5c768710b2 in __assert_fail () from /lib/libc.so.6
#10 0x00007f5c5c4039ea in KDecorationFactory::~KDecorationFactory (this=0x13be880, __in_chrg=<optimized out>) at /home/afiestas/cod3s/cpp/kde/source/kde-workspace/kwin/libkdecorations/kdecorationfactory.cpp:46
#11 0x00007f5c5ae7db96 in KWinPlastik::PlastikHandler::~PlastikHandler (this=0x13be870, __in_chrg=<optimized out>) at /home/afiestas/cod3s/cpp/kde/source/kde-workspace/kwin/clients/plastik/plastik.cpp:51
#12 0x00007f5c5ae7dbc9 in KWinPlastik::PlastikHandler::~PlastikHandler (this=0x13be870, __in_chrg=<optimized out>) at /home/afiestas/cod3s/cpp/kde/source/kde-workspace/kwin/clients/plastik/plastik.cpp:60
#13 0x00007f5c5c40266a in KDecorationPlugins::destroyPreviousPlugin (this=0x12a6420) at /home/afiestas/cod3s/cpp/kde/source/kde-workspace/kwin/libkdecorations/kdecoration_plugins_p.cpp:231
#14 0x00007f5c5c639d00 in KWin::DecorationModel::findDecorations (this=0x12dc740) at /home/afiestas/cod3s/cpp/kde/source/kde-workspace/kwin/kcmkwin/kwindecoration/decorationmodel.cpp:98
#15 0x00007f5c5c62a7ce in KWin::KWinDecorationModule::slotGHNSClicked (this=0x126cca0) at /home/afiestas/cod3s/cpp/kde/source/kde-workspace/kwin/kcmkwin/kwindecoration/kwindecoration.cpp:309
#16 0x00007f5c777a1f3f in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /lib/libQtCore.so.4
#17 0x00007f5c78a6b2d2 in QAbstractButton::clicked(bool) () from /lib/libQtGui.so.4
#18 0x00007f5c787bf23e in ?? () from /lib/libQtGui.so.4
#19 0x00007f5c787bfa70 in ?? () from /lib/libQtGui.so.4
#20 0x00007f5c787bfcdc in QAbstractButton::mouseReleaseEvent(QMouseEvent*) () from /lib/libQtGui.so.4
#21 0x00007f5c78455690 in QWidget::event(QEvent*) () from /lib/libQtGui.so.4
#22 0x00007f5c78405f7c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /lib/libQtGui.so.4
#23 0x00007f5c7840ac5b in QApplication::notify(QObject*, QEvent*) () from /lib/libQtGui.so.4
#24 0x00007f5c7937a59e in KApplication::notify (this=0x7fff16e25800, receiver=0x1270210, event=0x7fff16e24b90) at /home/afiestas/cod3s/cpp/kde/source/kdelibs/kdeui/kernel/kapplication.cpp:311
#25 0x00007f5c7778ca5e in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /lib/libQtCore.so.4
#26 0x00007f5c78406dbb in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from /lib/libQtGui.so.4
#27 0x00007f5c78481804 in ?? () from /lib/libQtGui.so.4
#28 0x00007f5c78480591 in QApplication::x11ProcessEvent(_XEvent*) () from /lib/libQtGui.so.4
#29 0x00007f5c784a6682 in ?? () from /lib/libQtGui.so.4
#30 0x00007f5c6e1334a5 in g_main_context_dispatch () from /lib/libglib-2.0.so.0
#31 0x00007f5c6e1337d8 in ?? () from /lib/libglib-2.0.so.0
#32 0x00007f5c6e133894 in g_main_context_iteration () from /lib/libglib-2.0.so.0
#33 0x00007f5c777bac56 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/libQtCore.so.4
#34 0x00007f5c784a62fe in ?? () from /lib/libQtGui.so.4
#35 0x00007f5c7778b7af in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/libQtCore.so.4
#36 0x00007f5c7778ba38 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/libQtCore.so.4
#37 0x00007f5c777906d8 in QCoreApplication::exec() () from /lib/libQtCore.so.4
#38 0x000000000040ad97 in main (argc=5, argv=0x7fff16e25948) at /home/afiestas/cod3s/cpp/kde/source/kde-workspace/systemsettings/app/main.cpp:49

Reported using DrKonqi
Comment 1 Alex Fiestas 2012-07-09 17:42:08 UTC
I can reproduce this all the time.
Comment 2 Alex Fiestas 2012-07-09 17:42:58 UTC
Last commit: d5cd7945a50492aa0f10223d09b0a1cf84a15094
Comment 3 Martin Flöser 2012-07-09 18:36:37 UTC
Steps to reproduce:
1. Click GHNS button
2. install a decoration
3. close dialog
-> Crash
Comment 4 Thomas Lübking 2012-07-09 18:39:16 UTC
....or on the unix dispather resize the window.
i'm currently looking into it but guess the index gets invalidated during the traversion across the eventloop.
Ideally we'd stop/restart that across the whatever happens there.
Comment 5 Thomas Lübking 2012-07-09 19:17:36 UTC
nope, purely b3137a7f61cfa4e39997e5acbc5abe98ae0384d4 issue
Comment 6 Thomas Lübking 2012-07-09 20:48:51 UTC
https://git.reviewboard.kde.org/r/105499/
Comment 7 Thomas Lübking 2012-07-22 09:17:08 UTC
Git commit fd272b06954029b554197be1d10e252b01f56502 by Thomas Lübking.
Committed on 09/07/2012 at 22:42.
Pushed by luebking into branch 'master'.

introduce KDecorationPlugins::canLoad()

so we don't mess up our plugins on reload
also invoke it by loadPlugin()
and fix some KLibrary memleaks

REVIEW: 105499

M  +7    -6    kwin/kcmkwin/kwindecoration/decorationmodel.cpp
M  +95   -58   kwin/libkdecorations/kdecoration_plugins_p.cpp
M  +4    -1    kwin/libkdecorations/kdecoration_plugins_p.h

http://commits.kde.org/kde-workspace/fd272b06954029b554197be1d10e252b01f56502
Comment 8 Thomas Lübking 2012-07-22 09:35:18 UTC
Git commit b61024cc848d4e3d623408ed0b02c3500922fecc by Thomas Lübking.
Committed on 09/07/2012 at 22:42.
Pushed by luebking into branch 'KDE/4.9'.

introduce KDecorationPlugins::canLoad()

so we don't mess up our plugins on reload
also invoke it by loadPlugin()
and fix some KLibrary memleaks

REVIEW: 105499
(cherry picked from commit fd272b06954029b554197be1d10e252b01f56502)

M  +7    -6    kwin/kcmkwin/kwindecoration/decorationmodel.cpp
M  +95   -58   kwin/libkdecorations/kdecoration_plugins_p.cpp
M  +4    -1    kwin/libkdecorations/kdecoration_plugins_p.h

http://commits.kde.org/kde-workspace/b61024cc848d4e3d623408ed0b02c3500922fecc