Summary: | KCM crashes when trying to add window-specific window decorator options | ||
---|---|---|---|
Product: | [Plasma] Oxygen | Reporter: | thomas gahr <kde-bugzilla> |
Component: | win deco | Assignee: | Hugo Pereira Da Costa <hugo.pereira.da.costa> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | cdprincipe, hein, hugo.pereira.da.costa, jh800, kde-bugzilla, statement |
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | Fedora RPMs | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: | |||
Attachments: |
New crash information added by DrKonqi
screenshot of crashing dialog New crash information added by DrKonqi |
Description
thomas gahr
2011-07-16 22:09:14 UTC
Created attachment 61930 [details]
New crash information added by DrKonqi
kcmshell4 () on KDE Platform 4.6.95 (4.7 RC2) using Qt 4.8.0
silly me, forgot to install the necessary debug-packages. so a more useful crash report here...
-- Backtrace (Reduced):
#6 0x0000003a52e352d5 in __GI_raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#7 0x0000003a52e36beb in __GI_abort () at abort.c:93
[...]
#11 0x0000003a5a2baf6f in QtSharedPointer::ExternalRefCountData::setQObjectShared (this=0x16fe030, obj=<optimized out>) at tools/qsharedpointer.cpp:1242
#12 0x00007fb502eebb2d in internalFinishConstruction (ptr=0x1731600, this=) at /usr/include/QtCore/qsharedpointer_impl.h:373
#13 internalConstruct (ptr=0x1731600, this=) at /usr/include/QtCore/qsharedpointer_impl.h:349
Looks for me like a crash in Oxygen -> reassign would need kde-workspace debug packages too, to get symbols to e.g. #13 0x00007f1a5d838ef1 in ?? () from /usr/lib64/kde4/kwin_oxygen_config.so Also, I'm confused about "Window decorations->configure decoration...->window-specific overrides". Here I don't have a "Window decoration" item in the right click menu of windows title bars. Any chance you provide a screenshot of the relevant menu ? Thanks ! Sorry, I forgot to mention the menu entry I was selecting - it was "configure window behaviour..." then the other ones. I'll create an attachment with a screenshot of the relevant dialog for you. The crash report with the missing symbols can be found in comment #1 I attached gdb to kcmshell4 and provoked the crash again and saw that the last line from oxygen sources in the call stack was the line marked with (*) in the following snippet: (in file kdebase-workspace-4.6.95/kdebase-workspace-4.6.95/kwin/clients/oxygen/config/oxygenexceptionlistwidget.cpp:116) [...] void ExceptionListWidget::add( void ) { // map dialog (*) QSharedPointer<ExceptionDialog> dialog( new ExceptionDialog( this ) ); dialog->setException( _defaultConfiguration ); [...] the abort-signal is raised at the line: (file tools/qsharedpointer.cpp:1242) qFatal("QSharedPointer: pointer %p already has reference counting", obj); So without any great experience in working with QSharedPointer - could this be fixed by simply using QScopedPointer<ExceptionDialog> instead of QSharedPointer<ExceptionDialog> ? Sorry for providing no patch but I have not set up an environment to build kde from sources to try the fix... Cheers, Thomas Created attachment 61939 [details]
screenshot of crashing dialog
@thomas thanks for all the details. I'll see what I can do about changing the pointer use. Note that I'm using Qt 4.7.3 and can't reproduce. It might well be a problem/regression with Qt 4.8 in fact. PS: can you reproduce the bug if you run the same thing via systemsettings (kde control center) ? (Workspace Appearance -> window decoration -> etc.) ? Thx for the feedback. Git commit 73da3a77f2041ac3de44842a162243c036fd32f9 by Hugo Pereira Da Costa. Committed on 17/07/2011 at 15:47. Pushed by hpereiradacosta into branch 'master'. use QWeakPointer (and explicit deletion, if needed) instead of QSharedPointer CCBUG: 277925 M +16 -13 kwin/clients/oxygen/config/oxygenexceptionlistwidget.cpp http://commits.kde.org/kde-workspace/73da3a77f2041ac3de44842a162243c036fd32f9 Git commit 322ea13d89950d6be282297bb03ff2265c8f5946 by Hugo Pereira Da Costa. Committed on 17/07/2011 at 15:47. Pushed by hpereiradacosta into branch 'KDE/4.7'. use QWeakPointer (and explicit deletion, if needed) instead of QSharedPointer CCBUG: 277925 M +16 -13 kwin/clients/oxygen/config/oxygenexceptionlistwidget.cpp http://commits.kde.org/kde-workspace/322ea13d89950d6be282297bb03ff2265c8f5946 ok. That should fix it, hopefully. Keep me posted. Yes, the bug can be reproduced when opening the dialog from within system settings. I'm setting up a kde build environment right now as I'm sick of not being able to hack around and debug properly. This means I'm pulling master atm and will hopefully be able to test your fix later today. I was thinking about a Qt regression as well since there seems to be nothing wrong about the usage of QSharedPointer at this place with ExceptionDialog (which makes the fix more of a workaround anyway), should be interesting to see if the problem still exists with my build from sources since I guess the version used for building kde (with kdesrc script) is not exactly the same as the one packaged as an .rpm on fedora. I'll also have a look if I can reproduce the bug in a simple test-case mimicking your ExceptionDialog class so I can find out if it is really Qt-related. Maybe I will poke around in Qt's git repository to see commits that affect qsharedpointer.cpp and give git-bisect a try... I agree that my fix is more a workaround than an actual fix. Would be happy to roll it back. OK, it seems you CAN roll back your fix... After building KDE from sources didn't quite work out the way I hoped it would and time is precious for me atm (exams), I just downgraded my system's Qt install from 4.8TP down to 4.7.3 and the bug is gone. So it seems clear to me that this is a regression in Qt. Sorry for the noise! ok. So reverting and closing. Hopefully this will get fix in later versions of QT4.8. Git commit e09d5da632c65bf5c073f823a0c0ef0dcdc13068 by Hugo Pereira Da Costa. Committed on 25/07/2011 at 17:04. Pushed by hpereiradacosta into branch 'master'. git pull Revert "use QWeakPointer (and explicit deletion, if needed) instead of QSharedPointer" This reverts commit 73da3a77f2041ac3de44842a162243c036fd32f9. CCBUG: 277925 M +13 -16 kwin/clients/oxygen/config/oxygenexceptionlistwidget.cpp http://commits.kde.org/kde-workspace/e09d5da632c65bf5c073f823a0c0ef0dcdc13068 Git commit ff09bd1b56f0e442bfed5d8c2b1c77079a7dbcc7 by Hugo Pereira Da Costa. Committed on 25/07/2011 at 17:08. Pushed by hpereiradacosta into branch 'KDE/4.7'. Revert "use QWeakPointer (and explicit deletion, if needed) instead of QSharedPointer" This reverts commit 322ea13d89950d6be282297bb03ff2265c8f5946. CCBUG: 277925 M +13 -16 kwin/clients/oxygen/config/oxygenexceptionlistwidget.cpp http://commits.kde.org/kde-workspace/ff09bd1b56f0e442bfed5d8c2b1c77079a7dbcc7 Created attachment 66194 [details]
New crash information added by DrKonqi
systemsettings (1.0) on KDE Platform 4.7.3 (4.7.3) using Qt 4.8.0
- What I was doing when the application crashed:
I just want to manage window-settings for firefox (removing buttons) but this is impossible (crash every time)
-- Backtrace (Reduced):
#6 0x0000003168e36285 in __GI_raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#7 0x0000003168e37b9b in __GI_abort () at abort.c:91
[...]
#11 0x0000003173ebce2f in QtSharedPointer::ExternalRefCountData::setQObjectShared (this=0x26e0460, obj=<optimized out>) at tools/qsharedpointer.cpp:1242
#12 0x00007fcca845e621 in internalFinishConstruction (ptr=0x2e7dff0, this=<synthetic pointer>) at /usr/include/QtCore/qsharedpointer_impl.h:381
#13 internalConstruct (ptr=0x2e7dff0, this=<synthetic pointer>) at /usr/include/QtCore/qsharedpointer_impl.h:357
*** Bug 290238 has been marked as a duplicate of this bug. *** *** This bug has been confirmed by popular vote. *** i confirm this bug,i'm on Arch with kde 4.7.4 and have the same issue on Qt 4.8.0. This behavior isn't solved. its now fixed (well work-around, since the actual bug is in Qt), in kde/4.8 and in master. *** Bug 293388 has been marked as a duplicate of this bug. *** |