Bug 303169 - Dolphin crashed after closing when using the oxygen-transparent widget style
Summary: Dolphin crashed after closing when using the oxygen-transparent widget style
Status: RESOLVED FIXED
Alias: None
Product: dolphin
Classification: Unclassified
Component: general (show other bugs)
Version: 2.0.95
Platform: Ubuntu Packages Linux
: NOR crash with 11 votes (vote)
Target Milestone: ---
Assignee: Frank Reininghaus
URL:
Keywords:
: 305043 305696 (view as bug list)
Depends on:
Blocks:
 
Reported: 2012-07-07 21:49 UTC by Ruslan
Modified: 2012-08-29 14:04 UTC (History)
8 users (show)

See Also:
Latest Commit:
Version Fixed In: 4.9.1


Attachments
New crash information added by DrKonqi (4.00 KB, text/plain)
2012-08-04 12:06 UTC, Akkarin
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Ruslan 2012-07-07 21:49:21 UTC
Application: dolphin (2.0.95)
KDE Platform Version: 4.8.90 (4.8.90)
Qt Version: 4.8.1
Operating System: Linux 3.2.0-26-generic x86_64
Distribution: Ubuntu 12.04 LTS

-- Information about the crash:
- What I was doing when the application crashed:
just closed the Dolphins window. Dolphin closed without problem, but crash message was apear.

The crash can be reproduced every time.

-- Backtrace:
Application: Dolphin (dolphin), signal: Segmentation fault
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f54e0e78780 (LWP 3717))]

Thread 3 (Thread 0x7f54c711d700 (LWP 3718)):
#0  0x00007f54e0735b03 in __GI___poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>) at ../sysdeps/unix/sysv/linux/poll.c:87
#1  0x00007f54d7fd6036 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f54d7fd6164 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f54dd49c426 in QEventDispatcherGlib::processEvents (this=0x7f54c00008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:426
#4  0x00007f54dd46bc82 in QEventLoop::processEvents (this=<optimized out>, flags=...) at kernel/qeventloop.cpp:149
#5  0x00007f54dd46bed7 in QEventLoop::exec (this=0x7f54c711cdd0, flags=...) at kernel/qeventloop.cpp:204
#6  0x00007f54dd36afa7 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:501
#7  0x00007f54dd44b9ff in QInotifyFileSystemWatcherEngine::run (this=0x17cef30) at io/qfilesystemwatcher_inotify.cpp:248
#8  0x00007f54dd36dfcb in QThreadPrivate::start (arg=0x17cef30) at thread/qthread_unix.cpp:298
#9  0x00007f54d889ae9a in start_thread (arg=0x7f54c711d700) at pthread_create.c:308
#10 0x00007f54e07414bd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#11 0x0000000000000000 in ?? ()

Thread 2 (Thread 0x7f54c5e43700 (LWP 3719)):
#0  0x00007f54d889cf69 in __pthread_mutex_lock (mutex=0x7f54b8000a60) at pthread_mutex_lock.c:92
#1  0x00007f54d80115a1 in g_mutex_lock () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f54d7fd5b4e in g_main_context_check () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f54d7fd5fd6 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#4  0x00007f54d7fd6164 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5  0x00007f54dd49c426 in QEventDispatcherGlib::processEvents (this=0x7f54b80008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:426
#6  0x00007f54dd46bc82 in QEventLoop::processEvents (this=<optimized out>, flags=...) at kernel/qeventloop.cpp:149
#7  0x00007f54dd46bed7 in QEventLoop::exec (this=0x7f54c5e42dd0, flags=...) at kernel/qeventloop.cpp:204
#8  0x00007f54dd36afa7 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:501
#9  0x00007f54dd44b9ff in QInotifyFileSystemWatcherEngine::run (this=0x1b07890) at io/qfilesystemwatcher_inotify.cpp:248
#10 0x00007f54dd36dfcb in QThreadPrivate::start (arg=0x1b07890) at thread/qthread_unix.cpp:298
#11 0x00007f54d889ae9a in start_thread (arg=0x7f54c5e43700) at pthread_create.c:308
#12 0x00007f54e07414bd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#13 0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7f54e0e78780 (LWP 3717)):
[KCrash Handler]
#6  0x00007f54dc772199 in QRasterWindowSurface::~QRasterWindowSurface (this=0x1853f40, __in_chrg=<optimized out>) at painting/qwindowsurface_raster.cpp:117
#7  0x00007f54dc772219 in QRasterWindowSurface::~QRasterWindowSurface (this=0x1853f40, __in_chrg=<optimized out>) at painting/qwindowsurface_raster.cpp:121
#8  0x00007f54dc78a8de in QWidgetBackingStore::~QWidgetBackingStore (this=0x1d6df30, __in_chrg=<optimized out>) at painting/qbackingstore.cpp:909
#9  0x00007f54dc5bb3d9 in QWidgetBackingStoreTracker::destroy (this=0x1d8c4b0) at kernel/qwidget.cpp:217
#10 0x00007f54dc5bb52e in QWidgetPrivate::deleteExtra (this=0x17773c0) at kernel/qwidget.cpp:1830
#11 0x00007f54dc5bb75c in QWidgetPrivate::~QWidgetPrivate (this=0x17773c0, __in_chrg=<optimized out>) at kernel/qwidget.cpp:357
#12 0x00007f54dc5bba69 in QWidgetPrivate::~QWidgetPrivate (this=0x17773c0, __in_chrg=<optimized out>) at kernel/qwidget.cpp:362
#13 0x00007f54dd485bd0 in cleanup (pointer=<optimized out>) at ../../include/QtCore/../../src/corelib/tools/qscopedpointer.h:62
#14 ~QScopedPointer (this=0x1636348, __in_chrg=<optimized out>) at ../../include/QtCore/../../src/corelib/tools/qscopedpointer.h:100
#15 QObject::~QObject (this=0x1636340, __in_chrg=<optimized out>) at kernel/qobject.cpp:817
#16 0x00007f54dc5bd7dd in QWidget::~QWidget (this=0x1636340, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1551
#17 0x00007f54de01b338 in KModifierKeyInfoProvider::~KModifierKeyInfoProvider (this=0x1636340, __in_chrg=<optimized out>) at ../../kdeui/util/kmodifierkeyinfoprovider_x11.cpp:145
#18 0x00007f54de01b379 in KModifierKeyInfoProvider::~KModifierKeyInfoProvider (this=0x1636340, __in_chrg=<optimized out>) at ../../kdeui/util/kmodifierkeyinfoprovider_x11.cpp:152
#19 0x00007f54ddf3b561 in KModifierKeyInfo::~KModifierKeyInfo (this=0x178fa00, __in_chrg=<optimized out>) at ../../kdeui/util/kmodifierkeyinfo.cpp:38
#20 0x00007f54ddf3b579 in KModifierKeyInfo::~KModifierKeyInfo (this=0x178fa00, __in_chrg=<optimized out>) at ../../kdeui/util/kmodifierkeyinfo.cpp:39
#21 0x00007f54e068a921 in __run_exit_handlers (status=0, listp=0x7f54e0a05688, run_list_atexit=true) at exit.c:78
#22 0x00007f54e068a9a5 in __GI_exit (status=<optimized out>) at exit.c:100
#23 0x00007f54e0670774 in __libc_start_main (main=0x400640, argc=6, ubp_av=0x7fff793c7838, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fff793c7828) at libc-start.c:258
#24 0x0000000000400671 in _start ()

Possible duplicates by query: bug 295018, bug 294229, bug 294100, bug 294033, bug 292398.

Reported using DrKonqi
Comment 1 Frank Reininghaus 2012-07-09 08:53:49 UTC
Thanks for the bug report! We had earlier reports about this crash (see bug 264923), which seems to be due to issues in the style used and in KModifierKeyInfo.

Which style do you use?
Comment 2 Ruslan 2012-07-09 09:50:25 UTC
Oxygen Transparent theme
Comment 3 Frank Reininghaus 2012-07-11 23:15:27 UTC
Thanks. Maybe KModifierKeyInfo in kdelibs should really be changed to inherit from QObject rather than QWidget in order to prevent such crashes in the future.
Comment 4 mangus 2012-08-01 17:34:01 UTC
Just to say, oxygen transparent makes kmix crash on exit also, so is this a oxygen-transparent bug or kwin's? Is OT still manteined?
Comment 5 Jekyll Wu 2012-08-01 18:24:32 UTC
(In reply to comment #4)
> Just to say, oxygen transparent makes kmix crash on exit also, so is this a
> oxygen-transparent bug or kwin's? Is OT still manteined?

It is still maintained, AFAICS.  If you are sure it is oxygen-transparent that makes kmix crashing everytime, do no hesitate reporting the crash.  

Whatever, adding the maintainter of oxygen-transparent into the CC list.
Comment 6 gregpitta19 2012-08-03 17:22:36 UTC
Same problem here KDE 4.9.00, also using the oxygen transparent theme, has the issue been reported on oxygen transparent?
Comment 7 Hugo Pereira Da Costa 2012-08-03 17:32:42 UTC
There is *nothing* in the crash report, that relates to oxygen-transparent.
Now this might be caused by oxygen-transparent setting the ARGB flag on windows.
(which we have to, to get transparency). But this would be a Qt bug and should be reported there.
you might want to
- see if you also can reproduce with bespin (setting transparency on)
- see if you can reproduce using the "native" graphicssystem (dolphin -graphicssystem native)

In any case, most likely this is a bug +triggered by+ oxygen transparent, but not an oxygen transparent bug.

Hugo (oxygen dev)
Comment 8 mangus 2012-08-04 09:05:53 UTC
Thanks for showing up here Hugo, you can understand better what's going on here.
Here's my testing results as you suggested:

- I can't reproduce the bug with bespin with transparency and blur on , dolphin and kmix exits regulary, using raster.
- Using OT the bug is not showing up with native graphicssystem (dolphin -graphicssystem native)

Setting 'native' in kwin systemsetting configuration doesn't help , I thought it would be a desktop-wide setting but it seems related to kwin only.

Seems to me that OT triggers something in qt raster system that bespin doesn't , but only in certain applications (dolphin and kmix for me). Kate , konsole , kwrite or systemesettings are fine.

Sadly I don't have debug symbols here:
Application: Dolphin (kdeinit4), signal: Segmentation fault
Using host libthread_db library "/lib/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f182b8b7780 (LWP 24897))]

Thread 2 (Thread 0x7f180f4a3700 (LWP 24926)):
#0  0x00007ffffcbff8bf in clock_gettime ()
#1  0x00007f18260d9f8d in clock_gettime () from /lib/librt.so.1
#2  0x00007f182a46b544 in ?? () from /lib/libQtCore.so.4
#3  0x00007f182a53f44d in ?? () from /lib/libQtCore.so.4
#4  0x00007f182a53f793 in ?? () from /lib/libQtCore.so.4
#5  0x00007f182a53e30c in ?? () from /lib/libQtCore.so.4
#6  0x00007f182a53e3b5 in ?? () from /lib/libQtCore.so.4
#7  0x00007f1825e28f7f in g_main_context_prepare () from /lib/libglib-2.0.so.0
#8  0x00007f1825e2966b in ?? () from /lib/libglib-2.0.so.0
#9  0x00007f1825e29864 in g_main_context_iteration () from /lib/libglib-2.0.so.0
#10 0x00007f182a53ec46 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/libQtCore.so.4
#11 0x00007f182a50f77f in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/libQtCore.so.4
#12 0x00007f182a50fa08 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/libQtCore.so.4
#13 0x00007f182a412700 in QThread::exec() () from /lib/libQtCore.so.4
#14 0x00007f182a4f01af in ?? () from /lib/libQtCore.so.4
#15 0x00007f182a41569b in ?? () from /lib/libQtCore.so.4
#16 0x00007f18192bc4d4 in ?? () from /lib/libGL.so.1
#17 0x00007f182a185e0f in start_thread () from /lib/libpthread.so.0
#18 0x00007f1828f1904d in clone () from /lib/libc.so.6

Thread 1 (Thread 0x7f182b8b7780 (LWP 24897)):
[KCrash Handler]
#5  0x00007f182989cfd9 in QRasterWindowSurface::~QRasterWindowSurface() () from /lib/libQtGui.so.4
#6  0x00007f182989d059 in QRasterWindowSurface::~QRasterWindowSurface() () from /lib/libQtGui.so.4
#7  0x00007f18298b5c6e in ?? () from /lib/libQtGui.so.4
#8  0x00007f18296ed5d9 in ?? () from /lib/libQtGui.so.4
#9  0x00007f18296ed722 in QWidgetPrivate::deleteExtra() () from /lib/libQtGui.so.4
#10 0x00007f18296ed93d in QWidgetPrivate::~QWidgetPrivate() () from /lib/libQtGui.so.4
#11 0x00007f18296edbc9 in QWidgetPrivate::~QWidgetPrivate() () from /lib/libQtGui.so.4
#12 0x00007f182a526fac in QObject::~QObject() () from /lib/libQtCore.so.4
#13 0x00007f18296efa30 in QWidget::~QWidget() () from /lib/libQtGui.so.4
#14 0x00007f182b3eb71f in ?? () from /lib/libkdeui.so.5
#15 0x00007f182b3eb749 in ?? () from /lib/libkdeui.so.5
#16 0x00007f182b3166a1 in KModifierKeyInfo::~KModifierKeyInfo() () from /lib/libkdeui.so.5
#17 0x00007f182b3166b9 in KModifierKeyInfo::~KModifierKeyInfo() () from /lib/libkdeui.so.5
#18 0x00007f1828e6cb31 in __run_exit_handlers () from /lib/libc.so.6
#19 0x00007f1828e6cbb5 in exit () from /lib/libc.so.6
#20 0x00000000004082b9 in _start ()

Let me know if you need some more specs
Comment 9 Hugo Pereira Da Costa 2012-08-04 09:20:07 UTC
@mangus
yeah I can reproduce all that you describe above on my intel card (its been a while since I actually used oxygen-transparent). I'll investigate why it crashes with oxygen transparent and not bespin.
Comment 10 Hugo Pereira Da Costa 2012-08-04 09:23:53 UTC
side notes: 

- oxygen makes no access to the underlying graphicssystem, and the exact same code is used for native and raster. So the bug has to be upstream somehow. Will see if I can find a workaround.

- indeed kwin's engine settings only apply to kwin. there is an app on kde-look.org to change system wide engine if you look it up. (can't remember the name atm)

- one thing I'd like to have feedback too:
when using okular + oxygen transparent + raster engine, to open a *postscript* file, does it work ? here postscript visualization is corrupted. It looks good only if using native engine ...

Thanks for the feedback,

Hugo
Comment 11 mangus 2012-08-04 09:54:51 UTC
I can confirm the postcript issue as you exposed.
Thanks, I really love OT :)
Comment 12 Akkarin 2012-08-04 12:06:37 UTC
Created attachment 72945 [details]
New crash information added by DrKonqi

dolphin (2.1) on KDE Platform 4.9.00 using Qt 4.8.2

- What I was doing when the application crashed:

Nothing. Just opened dolphin and closed it.

- Custom settings of the application:

I'm also using oygen-transparent. Seems I can confirm this bug.

-- Backtrace (Reduced):
#5  0x00007fa003ddc869 in QRasterWindowSurface::~QRasterWindowSurface() () from /usr/lib64/qt4/libQtGui.so.4
#6  0x00007fa003ddc8e9 in QRasterWindowSurface::~QRasterWindowSurface() () from /usr/lib64/qt4/libQtGui.so.4
[...]
#9  0x00007fa003c26199 in QWidgetPrivate::deleteExtra() () from /usr/lib64/qt4/libQtGui.so.4
#10 0x00007fa003c263dc in QWidgetPrivate::~QWidgetPrivate() () from /usr/lib64/qt4/libQtGui.so.4
#11 0x00007fa003c266e9 in QWidgetPrivate::~QWidgetPrivate() () from /usr/lib64/qt4/libQtGui.so.4
Comment 13 Frank Reininghaus 2012-08-09 21:04:37 UTC
I'm going to commit https://git.reviewboard.kde.org/r/105920/, which makes crashes with the backtraces provided here impossible. It could be that it's not really the root cause of this issue, and that a combination of a bug in Qt and something unusual in some styles actually has something to do with it.

Nonetheless, I'm going to close this report with my commit. If someone feels like investigating more, feel free to reopen, but reassign the report to something else please ;-)
Comment 14 Frank Reininghaus 2012-08-09 21:22:33 UTC
Git commit e9b1714f408f708237cb3ae445f734419d00a4a0 by Frank Reininghaus.
Committed on 09/08/2012 at 22:57.
Pushed by freininghaus into branch 'KDE/4.9'.

Make KModifierKeyInfoProvider inherit QObject, rather than QWidget

This makes crashes like the one I'm closing with this report impossible,
even though the root cause might be somehing else, possibly related to
Qt and particular settings of certain styles.

In any case, that class does not need anything from QWidget any more, so
this change would make sense even without the crash.

Thanks to Aurelién Gâteau and David Faure, both for coming up with the
idea to fix it this way in the first place and for explaining why
deriving the class from QWidget did make sense in the past.
FIXED-IN: 4.9.1
REVIEW: 105920

M  +1    -1    kdeui/util/kmodifierkeyinfoprovider_p.h
M  +1    -1    kdeui/util/kmodifierkeyinfoprovider_x11.cpp

http://commits.kde.org/kdelibs/e9b1714f408f708237cb3ae445f734419d00a4a0
Comment 15 Hugo Pereira Da Costa 2012-08-10 11:47:34 UTC
Thanks Frank !
I'll still investigate the oxygen-transparent side of the issue
Comment 16 mangus 2012-08-10 12:12:44 UTC
I've opened the related bug for kmix here:
https://bugs.kde.org/show_bug.cgi?id=304889
thanks all.
Comment 17 Frank Reininghaus 2012-08-12 21:20:29 UTC
*** Bug 305043 has been marked as a duplicate of this bug. ***
Comment 18 Jekyll Wu 2012-08-24 03:12:27 UTC
*** Bug 305696 has been marked as a duplicate of this bug. ***
Comment 19 Hugo Pereira Da Costa 2012-08-29 14:02:12 UTC
Git commit 731ce67e2d24e11a09471e7a87404ad7c6a0dcfe by Hugo Pereira Da Costa.
Committed on 29/08/2012 at 15:59.
Pushed by hpereiradacosta into branch 'master'.

Do not set argb X property on widget's window, if not created.
Related: bug 304889, bug 305131

M  +2    -1    style/oxygenargbhelper.cpp

http://commits.kde.org/oxygen-transparent/731ce67e2d24e11a09471e7a87404ad7c6a0dcfe
Comment 20 Hugo Pereira Da Costa 2012-08-29 14:04:06 UTC
commit in previous comment fixes it on oxygen-transparent side.
So that this bug is now fixed *twice*