Bug 290965 - System settings crashes when adding Specific-window Overrides
Summary: System settings crashes when adding Specific-window Overrides
Status: RESOLVED FIXED
Alias: None
Product: Oxygen
Classification: Plasma
Component: win deco (show other bugs)
Version: 4.0
Platform: Arch Linux Linux
: NOR crash
Target Milestone: ---
Assignee: Hugo Pereira Da Costa
URL:
Keywords:
: 290981 (view as bug list)
Depends on:
Blocks:
 
Reported: 2012-01-08 12:28 UTC by Adria
Modified: 2012-01-10 10:44 UTC (History)
5 users (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Adria 2012-01-08 12:28:17 UTC
Version:           1.0 (using Devel) 
OS:                Linux

System settings crashes when trying to add a specific-window override.

I crashes if I access from systemsettings or from the Alt+F3 menu -> Configure Window Behaviour -> Window Decorations...

Reproducible: Always

Steps to Reproduce:
Go to:
1. System Settings
2. Workspace appearance
3. Window Decorations
4. Configure Decoration
5. Window-Specific Overrides
6. Add

Actual Results:  
It crashes

Expected Results:  
I should be able to add a specific-window override
Comment 1 Andy 2012-01-08 14:45:05 UTC
Same happens on my system. 

Archlinux 64 bit, KDE 4.8 rc2.
Comment 2 Thomas Lübking 2012-01-08 14:51:48 UTC
Please provide a backtrace then
Comment 3 Adria 2012-01-08 14:56:26 UTC
I'm not sure if this might be useful:
http://pastebin.com/AYe1111h
Comment 4 Thomas Lübking 2012-01-08 15:02:56 UTC
Proves that it happens in the oxygen plugin and provides a slight idea what's happening (but some debug symbols in the oxygen lib would certainly appreciated by hugo a lot :-)

In general, please rather post backtraces here (esp. if asked for) than on pastebin etc. better for later triaging.

Application: System Settings (systemsettings), signal: Aborted

[KCrash Handler]

#6  0x00007f53e6169935 in raise () from /lib/libc.so.6

#7  0x00007f53e616adab in abort () from /lib/libc.so.6

#8  0x00007f53e684e4a4 in qt_message_output(QtMsgType, char const*) () from /usr/lib/libQtCore.so.4

#9  0x00007f53e684e65f in ?? () from /usr/lib/libQtCore.so.4

#10 0x00007f53e684e804 in qFatal(char const*, ...) () from /usr/lib/libQtCore.so.4

#11 0x00007f53e6899eef in QtSharedPointer::ExternalRefCountData::setQObjectShared(QObject const*, bool) () from /usr/lib/libQtCore.so.4

#12 0x00007f53cdff40d9 in ?? () from /usr/lib/kde4/kwin_oxygen_config.so

#13 0x00007f53e6969f51 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4

#14 0x00007f53e7c60812 in QAbstractButton::clicked(bool) () from /usr/lib/libQtGui.so.4

#15 0x00007f53e799fa9e in ?? () from /usr/lib/libQtGui.so.4

#16 0x00007f53e79a0ddb in ?? () from /usr/lib/libQtGui.so.4

#17 0x00007f53e79a104c in QAbstractButton::mouseReleaseEvent(QMouseEvent*) () from /usr/lib/libQtGui.so.4

#18 0x00007f53e7625f64 in QWidget::event(QEvent*) () from /usr/lib/libQtGui.so.4

#19 0x00007f53e75d5854 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4

#20 0x00007f53e75dafa3 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4

#21 0x00007f53e8323646 in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5

#22 0x00007f53e69560ac in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4

#23 0x00007f53e75d6822 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from /usr/lib/libQtGui.so.4

#24 0x00007f53e7652b85 in ?? () from /usr/lib/libQtGui.so.4

#25 0x00007f53e7651a4a in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib/libQtGui.so.4

#26 0x00007f53e7679292 in ?? () from /usr/lib/libQtGui.so.4

#27 0x00007f53e380b84d in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0

#28 0x00007f53e380c048 in ?? () from /usr/lib/libglib-2.0.so.0

#29 0x00007f53e380c219 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0

#30 0x00007f53e69850ff in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4

#31 0x00007f53e7678f1e in ?? () from /usr/lib/libQtGui.so.4

#32 0x00007f53e6954e92 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4

#33 0x00007f53e69550e7 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4

#34 0x00007f53e7aa1c66 in QDialog::exec() () from /usr/lib/libQtGui.so.4

#35 0x00007f53d4f5b3af in ?? () from /usr/lib/kde4/kcm_kwindecoration.so

#36 0x00007f53e6969f51 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4

#37 0x00007f53e7c60812 in QAbstractButton::clicked(bool) () from /usr/lib/libQtGui.so.4

#38 0x00007f53e799fa9e in ?? () from /usr/lib/libQtGui.so.4

#39 0x00007f53e79a0ddb in ?? () from /usr/lib/libQtGui.so.4

#40 0x00007f53e79a104c in QAbstractButton::mouseReleaseEvent(QMouseEvent*) () from /usr/lib/libQtGui.so.4

#41 0x00007f53e7625f64 in QWidget::event(QEvent*) () from /usr/lib/libQtGui.so.4

#42 0x00007f53e75d5854 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4

#43 0x00007f53e75dafa3 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4

#44 0x00007f53e8323646 in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5

#45 0x00007f53e69560ac in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4

#46 0x00007f53e75d6822 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from /usr/lib/libQtGui.so.4

#47 0x00007f53e7652b85 in ?? () from /usr/lib/libQtGui.so.4

#48 0x00007f53e7651a4a in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib/libQtGui.so.4

#49 0x00007f53e7679292 in ?? () from /usr/lib/libQtGui.so.4

#50 0x00007f53e380b84d in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0

#51 0x00007f53e380c048 in ?? () from /usr/lib/libglib-2.0.so.0

#52 0x00007f53e380c219 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0

#53 0x00007f53e69850ff in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4

#54 0x00007f53e7678f1e in ?? () from /usr/lib/libQtGui.so.4

#55 0x00007f53e6954e92 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4

#56 0x00007f53e69550e7 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4

#57 0x00007f53e6959c45 in QCoreApplication::exec() () from /usr/lib/libQtCore.so.4

#58 0x000000000040a9d5 in ?? ()

#59 0x00007f53e615638d in __libc_start_main () from /lib/libc.so.6

#60 0x000000000040aa29 in _start ()
Comment 5 Adria 2012-01-08 15:07:36 UTC
OK! Thanks for the advice, rebuilding with Debugfull :) I will post new results in a while
Comment 6 Thomas Lübking 2012-01-08 15:21:18 UTC
@Hugo: a relevant snippet ;-)

#12 0xb6c2e8b8 in qFatal(char const*, ...) () from /usr/lib/libQtCore.so.4
#13 0xb6c808ee in QtSharedPointer::ExternalRefCountData::setQObjectShared(QObject const*, bool) () from /usr/lib/libQtCore.so.4
#14 0xae86c724 in internalFinishConstruction (ptr=0x9d61220, this=<synthetic pointer>) at /usr/include/QtCore/qsharedpointer_impl.h:381
#15 internalConstruct (ptr=0x9d61220, this=<synthetic pointer>) at /usr/include/QtCore/qsharedpointer_impl.h:357
#16 ExternalRefCount (this=<synthetic pointer>, ptr=0x9d61220) at /usr/include/QtCore/qsharedpointer_impl.h:391
#17 QSharedPointer (ptr=0x9d61220, this=<synthetic pointer>) at /usr/include/QtCore/qsharedpointer_impl.h:473
#18 Oxygen::ExceptionListWidget::add (this=0x9f60858) at /home/src/KDE4/kde-workspace/kwin/clients/oxygen/config/oxygenexceptionlistwidget.cpp:116
#19 0xae86b953 in qt_static_metacall (_a=0xbff0acd8, _id=2, _o=0x9f60858, _c=<optimized out>) at /home/src/KDE4/BUILD_master/workspace/kwin/clients/oxygen/config/oxygenexceptionlistwidget.moc:62
#20 Oxygen::ExceptionListWidget::qt_static_metacall (_o=0x9f60858, _c=QMetaObject::InvokeMetaMethod, _id=2, _a=0xbff0acd8) at /home/src/KDE4/BUILD_master/workspace/kwin/clients/oxygen/config/oxygenexceptionlistwidget.moc:54
#21 0xb6d633d1 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4
#22 0xb69595ed in QAbstractButton::clicked(bool) () from /usr/lib/libQtGui.so.4
Comment 7 Hugo Pereira Da Costa 2012-01-08 15:34:00 UTC
Which version of Qt is this ? (my bet is: 4.8)
Comment 8 Thomas Lübking 2012-01-08 15:35:06 UTC
yupp - got a nasty qDeleteAll in there?
Comment 9 Hugo Pereira Da Costa 2012-01-08 15:40:26 UTC
Nope.
This is a regression with QSharedPointer in Qt4.8
Only thing that I am doing, which is actually advertised by krazy is: 
        QSharedPointer<ExceptionDialog> dialog( new ExceptionDialog( this ) );

In fact, its a dupe, which was closed as upstream. Will try to look it up.
It was discussed that I could avoid using a QSharedPointer there, but that would be a workaround, not a fix of the actual upstream bug.
Comment 10 Hugo Pereira Da Costa 2012-01-08 15:40:51 UTC
PS: does not crash with QT4.7 (which I'm still running with)
Comment 11 Jekyll Wu 2012-01-08 16:52:56 UTC
*** Bug 290981 has been marked as a duplicate of this bug. ***
Comment 12 Hugo Pereira Da Costa 2012-01-09 08:37:57 UTC
ok. The krazy report that made me use QSharedPointer is http://blogs.kde.org/node/3919

Now it refers to QPointer and not QSharedPointer, so I'll use that, hoping it does not crash anymore ...
Comment 13 Hugo Pereira Da Costa 2012-01-09 08:44:10 UTC
Git commit 5777ebbfada8ae0bf7f7769cdd38ff651623f092 by Hugo Pereira Da Costa.
Committed on 09/01/2012 at 09:42.
Pushed by hpereiradacosta into branch 'KDE/4.8'.

Changed QSharedPointer -> QPointer

M  +8    -2    kwin/clients/oxygen/config/oxygenexceptionlistwidget.cpp

http://commits.kde.org/kde-workspace/5777ebbfada8ae0bf7f7769cdd38ff651623f092
Comment 14 Hugo Pereira Da Costa 2012-01-09 08:44:11 UTC
Git commit f55aa9af21097095291c2154ee16615c1ec4cc80 by Hugo Pereira Da Costa.
Committed on 09/01/2012 at 09:42.
Pushed by hpereiradacosta into branch 'master'.

Changed QSharedPointer -> QPointer

M  +8    -2    kwin/clients/oxygen/config/oxygenexceptionlistwidget.cpp

http://commits.kde.org/kde-workspace/f55aa9af21097095291c2154ee16615c1ec4cc80
Comment 15 Hugo Pereira Da Costa 2012-01-09 08:44:57 UTC
ok. Fixed (I hope) and backported.
Still, the crash with QSharedPointer *is* a Qt bug, and should be reported to Qt as such.

Cheers,

Hugo
Comment 16 Hugo Pereira Da Costa 2012-01-09 08:50:30 UTC
Git commit a1de4f6be6908a56b7b4c45ff124a644a52ae6f5 by Hugo Pereira Da Costa.
Committed on 09/01/2012 at 09:49.
Pushed by hpereiradacosta into branch 'KDE/4.8'.

removed other instances of QSharedPointer (damn Qt)

M  +31   -9    kwin/clients/oxygen/config/oxygenexceptionlistwidget.cpp

http://commits.kde.org/kde-workspace/a1de4f6be6908a56b7b4c45ff124a644a52ae6f5
Comment 17 Hugo Pereira Da Costa 2012-01-09 08:50:31 UTC
Git commit 81207333476e8fc47fc1400bac6a51b68229d275 by Hugo Pereira Da Costa.
Committed on 09/01/2012 at 09:49.
Pushed by hpereiradacosta into branch 'master'.

removed other instances of QSharedPointer (damn Qt)

M  +31   -9    kwin/clients/oxygen/config/oxygenexceptionlistwidget.cpp

http://commits.kde.org/kde-workspace/81207333476e8fc47fc1400bac6a51b68229d275