Bug 213507 - After switching from fullscreen to decorated window in smplayer [??, KWin::SceneOpenGL::Window::paintDecoration, KWin::SceneOpenGL::Window::performPaint]
Summary: After switching from fullscreen to decorated window in smplayer [??, KWin::Sc...
Status: RESOLVED FIXED
Alias: None
Product: kwin
Classification: Plasma
Component: general (show other bugs)
Version: unspecified
Platform: Compiled Sources Linux
: VHI crash
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords:
: 216094 216355 217376 218729 219110 219405 220829 223956 (view as bug list)
Depends on:
Blocks:
 
Reported: 2009-11-07 04:00 UTC by Christoph Feck
Modified: 2010-01-23 19:23 UTC (History)
7 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
Possible fix (870 bytes, patch)
2010-01-01 12:27 UTC, Martin Flöser
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Christoph Feck 2009-11-07 04:00:45 UTC
Application: kwin (4.3.74 (KDE 4.3.74 (KDE 4.4 >= 20091102)))
KDE Version: 4.3.74 (KDE 4.3.74 (KDE 4.4 >= 20091102)) (Compiled from sources)
Qt Version: 4.6.0
Operating System: Linux 2.6.31.4-0.0.1.8d115ae-desktop i686

 -- Backtrace:
Application: KWin (kwin), signal: Segmentation fault
[KCrash Handler]
#6  0xb63dbeab in ?? () at /local/git/Qt/qt/src/gui/image/qpixmap.cpp:92 from /local/qt4/lib/libQtGui.so.4
#7  0xb77c17ff in KWin::SceneOpenGL::Window::paintDecoration (this=0x8ecfc38, decoration=0x8f2f174, decorationType=DecorationLeft, region=..., rect=..., data=..., quads=..., updateDeco=true)
    at /local/svn/kde/trunk/KDE/kdebase/workspace/kwin/scene_opengl.cpp:1555
#8  0xb77c160b in KWin::SceneOpenGL::Window::performPaint (this=0x8ecfc38, mask=9, region=..., data=...) at /local/svn/kde/trunk/KDE/kdebase/workspace/kwin/scene_opengl.cpp:1517
#9  0xb77b08f2 in KWin::Scene::finalDrawWindow (this=0x8144920, w=0x92a58c8, mask=9, region=..., data=...) at /local/svn/kde/trunk/KDE/kdebase/workspace/kwin/scene.cpp:324
#10 0xb77c556d in KWin::EffectsHandlerImpl::drawWindow (this=0x81442b8, w=0x92a58c8, mask=9, region=..., data=...) at /local/svn/kde/trunk/KDE/kdebase/workspace/kwin/effects.cpp:178
#11 0xb19ae8d9 in KWin::ShadowEffect::drawWindow (this=0x818f448, w=0x92a58c8, mask=9, region=..., data=...) at /local/svn/kde/trunk/KDE/kdebase/workspace/kwin/effects/shadow/shadow.cpp:243
#12 0xb77c5513 in KWin::EffectsHandlerImpl::drawWindow (this=0x81442b8, w=0x92a58c8, mask=9, region=..., data=...) at /local/svn/kde/trunk/KDE/kdebase/workspace/kwin/effects.cpp:174
#13 0xb77b0879 in KWin::Scene::finalPaintWindow (this=0x8144920, w=0x92a58c8, mask=9, region=..., data=...) at /local/svn/kde/trunk/KDE/kdebase/workspace/kwin/scene.cpp:318
#14 0xb77c53fd in KWin::EffectsHandlerImpl::paintWindow (this=0x81442b8, w=0x92a58c8, mask=9, region=..., data=...) at /local/svn/kde/trunk/KDE/kdebase/workspace/kwin/effects.cpp:157
#15 0xb767224d in KWin::Effect::paintWindow (this=0x818f450, w=0x92a58c8, mask=9, region=..., data=...) at /local/svn/kde/trunk/KDE/kdebase/workspace/kwin/lib/kwineffects.cpp:230
#16 0xb77c53a3 in KWin::EffectsHandlerImpl::paintWindow (this=0x81442b8, w=0x92a58c8, mask=9, region=..., data=...) at /local/svn/kde/trunk/KDE/kdebase/workspace/kwin/effects.cpp:153
#17 0xb77b07f9 in KWin::Scene::paintWindow (this=0x8144920, w=0x8ecfc38, mask=9, region=..., quads=...) at /local/svn/kde/trunk/KDE/kdebase/workspace/kwin/scene.cpp:312
#18 0xb77b04c9 in KWin::Scene::paintSimpleScreen (this=0x8144920, orig_mask=8, region=...) at /local/svn/kde/trunk/KDE/kdebase/workspace/kwin/scene.cpp:283
#19 0xb77af8ab in KWin::Scene::finalPaintScreen (this=0x8144920, mask=8, region=..., data=...) at /local/svn/kde/trunk/KDE/kdebase/workspace/kwin/scene.cpp:176
#20 0xb77c5213 in KWin::EffectsHandlerImpl::paintScreen (this=0x81442b8, mask=8, region=..., data=...) at /local/svn/kde/trunk/KDE/kdebase/workspace/kwin/effects.cpp:126
#21 0xb19ae348 in KWin::ShadowEffect::paintScreen (this=0x818f448, mask=8, region=..., data=...) at /local/svn/kde/trunk/KDE/kdebase/workspace/kwin/effects/shadow/shadow.cpp:182
#22 0xb77c51c0 in KWin::EffectsHandlerImpl::paintScreen (this=0x81442b8, mask=8, region=..., data=...) at /local/svn/kde/trunk/KDE/kdebase/workspace/kwin/effects.cpp:122
#23 0xb77af604 in KWin::Scene::paintScreen (this=0x8144920, mask=0xbf87f73c, region=0xbf87f80c) at /local/svn/kde/trunk/KDE/kdebase/workspace/kwin/scene.cpp:134
#24 0xb77be0cf in KWin::SceneOpenGL::paint (this=0x8144920, damage=..., toplevels=...) at /local/svn/kde/trunk/KDE/kdebase/workspace/kwin/scene_opengl.cpp:747
#25 0xb77a956f in KWin::Workspace::performCompositing (this=0x813ca18) at /local/svn/kde/trunk/KDE/kdebase/workspace/kwin/composite.cpp:423
#26 0xb7725f1b in KWin::Workspace::qt_metacall (this=0x813ca18, _c=InvokeMetaMethod, _id=160, _a=0xbf87f8fc) at /local/build/KDE/kdebase/workspace/kwin/workspace.moc:510
#27 0xb602e3da in ?? () from /local/qt4/lib/libQtCore.so.4
#28 0xb603c9bb in QMetaObject::activate (sender=0x813cc84, m=0xb613e5a4, local_signal_index=0, argv=0x0) at /local/git/Qt/qt/src/corelib/kernel/qobject.cpp:3254
#29 0xb608e677 in QSocketNotifier::qt_metacast (this=0x813cc84, _clname=0x11 <Address 0x11 out of bounds>) at .moc/release-shared/moc_qsocketnotifier.cpp:66
#30 0xb6044cbe in QSingleShotTimer::QSingleShotTimer (this=0x813cc84, msec=-1081606688, receiver=0xbf87fde0, member=0x297 <Address 0x297 out of bounds>)
    at /local/git/Qt/qt/src/corelib/kernel/qtimer.cpp:291
#31 0xb6039824 in QObject::event (this=0x813cc84, e=0xbf87fde0) at /local/git/Qt/qt/src/corelib/kernel/qobject.cpp:1201
#32 0xb62ed37c in QApplicationPrivate::notify_helper (this=0x806a2f0, receiver=0x813cc84, e=0xb613eff4) at /local/git/Qt/qt/src/gui/kernel/qapplication.cpp:4242
#33 0xb62f3fc7 in QApplication::notify (this=0xbf880124, receiver=0x813cc84, e=0xbf87fde0) at /local/git/Qt/qt/src/gui/kernel/qapplication.cpp:3661
#34 0xb70fffec in KApplication::notify (this=0xbf880124, receiver=0x813cc84, event=0xbf87fde0) at /local/svn/kde/trunk/KDE/kdelibs/kdeui/kernel/kapplication.cpp:296
#35 0xb7745044 in KWin::Application::notify (this=0xbf880124, o=0x813cc84, e=0xbf87fde0) at /local/svn/kde/trunk/KDE/kdebase/workspace/kwin/main.cpp:370
#36 0xb60291cb in ?? () at /local/git/Qt/qt/src/corelib/kernel/qcoreapplication.cpp:1067 from /local/qt4/lib/libQtCore.so.4
#37 0xb6058386 in normalizedTimeval (t=<value optimized out>) at /local/git/Qt/qt/src/corelib/kernel/qeventdispatcher_unix.cpp:591
#38 operator+ (t=<value optimized out>) at ../../include/QtCore/private/../../../../../git/Qt/qt/src/corelib/kernel/qcore_unix_p.h:129
#39 QTimerInfoList::activateTimers (t=<value optimized out>) at /local/git/Qt/qt/src/corelib/kernel/qeventdispatcher_unix.cpp:591
#40 0xb6055077 in timerSourcePrepare (source=0x0, timeout=0x0) at /local/git/Qt/qt/src/corelib/kernel/qeventdispatcher_glib.cpp:165
#41 0xb40314c2 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#42 0xb4034d98 in ?? () from /usr/lib/libglib-2.0.so.0
#43 0xb4034ebe in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#44 0xb6054d35 in QEventDispatcherGlib::hasPendingEvents (this=0x804b0e8) at /local/git/Qt/qt/src/corelib/kernel/qeventdispatcher_glib.cpp:420
#45 0xb63a65d5 in QGuiEventDispatcherGlib::processEvents (this=0x804b0e8, flags=...) at /local/git/Qt/qt/src/gui/kernel/qguieventdispatcher_glib.cpp:202
#46 0xb60277f9 in QEventLoop::wakeUp (this=0xbf880074) at /local/git/Qt/qt/src/corelib/kernel/qeventloop.cpp:311
#47 0xb6027c4a in append (t=<value optimized out>, this=<value optimized out>) at ../../include/QtCore/../../../../git/Qt/qt/src/corelib/tools/qvector.h:544
#48 push (t=<value optimized out>, this=<value optimized out>) at ../../include/QtCore/../../../../git/Qt/qt/src/corelib/tools/qstack.h:59
#49 QEventLoop::exec (t=<value optimized out>, this=<value optimized out>) at /local/git/Qt/qt/src/corelib/kernel/qeventloop.cpp:188
#50 0xb602bdcf in QCoreApplication::exec () at /local/git/Qt/qt/src/corelib/kernel/qcoreapplication.cpp:964
#51 0xb62ed417 in QApplication::exec () at /local/git/Qt/qt/src/gui/kernel/qapplication.cpp:3570
#52 0xb7745ede in kdemain (argc=1, argv=0xbf880304) at /local/svn/kde/trunk/KDE/kdebase/workspace/kwin/main.cpp:526
#53 0x08048809 in main (argc=1, argv=0xbf880304) at /local/build/KDE/kdebase/workspace/kwin/kwin_dummy.cpp:3

Reported using DrKonqi
Comment 1 Dario Andres 2009-11-25 15:48:08 UTC
*** Bug 216094 has been marked as a duplicate of this bug. ***
Comment 2 Thomas Lübking 2009-11-27 17:07:06 UTC
*** Bug 216355 has been marked as a duplicate of this bug. ***
Comment 3 Thomas Lübking 2009-12-04 23:04:05 UTC
*** Bug 217376 has been marked as a duplicate of this bug. ***
Comment 4 Martin Flöser 2009-12-15 08:56:17 UTC
*** Bug 218729 has been marked as a duplicate of this bug. ***
Comment 5 Martin Flöser 2009-12-17 22:18:46 UTC
*** Bug 219110 has been marked as a duplicate of this bug. ***
Comment 6 Martin Flöser 2009-12-20 11:30:02 UTC
*** Bug 219405 has been marked as a duplicate of this bug. ***
Comment 7 Christoph Feck 2009-12-31 20:12:22 UTC
*** Bug 220829 has been marked as a duplicate of this bug. ***
Comment 8 Martin Flöser 2010-01-01 12:27:19 UTC
Created attachment 39488 [details]
Possible fix

As I am unable to reproduce or do not know how to reproduce, can someone who is able to reproduce please try the attached patch?

The crash seems to happen since Qt 4.6 (all duplicates are from Qt 4.6.0) in QPixmap::handle(). Looking at the source code ( http://qt.gitorious.org/qt/qt/blobs/d16ba0a93d611689bce9a2732a1cc8c9a317f5bf/src/gui/image/qpixmap.cpp#line1168 ) I can't see anything possible wrong. So my only idea is that the pixmap is a null pixmap and testing for that should hopefully prevent the crash.
Comment 9 Martin Flöser 2010-01-01 12:57:08 UTC
SVN commit 1068519 by graesslin:

Only load the decoration texture if the decoration pixmap is not null.
This resulted in a crash with Qt 4.6 when accessing the pixmap handle.
BUG: 213507

 M  +3 -1      scene_opengl.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1068519
Comment 10 Martin Flöser 2010-01-01 12:59:16 UTC
After discussion on IRC I committed the patch. Christoph could you please try if it is really fixed?
Comment 11 Christoph Feck 2010-01-01 13:10:12 UTC
I only got the crash once. But I can confirm that Qt 4.6 crashes when calling handle() on a null pixmap, while Qt 4.5 does not, so adding this check can only help. I will reopen if I see it after your commit.
Comment 12 Martin Flöser 2010-01-23 19:23:46 UTC
*** Bug 223956 has been marked as a duplicate of this bug. ***