Bug 193183 - Plasma crash (Qt painting, KStyle::drawPrimitive, KShortcutsEditorDelegate)
Summary: Plasma crash (Qt painting, KStyle::drawPrimitive, KShortcutsEditorDelegate)
Status: RESOLVED FIXED
Alias: None
Product: kdelibs
Classification: Frameworks and Libraries
Component: kdeui (show other bugs)
Version: unspecified
Platform: Unlisted Binaries Linux
: NOR crash
Target Milestone: ---
Assignee: kdelibs bugs
URL:
Keywords:
: 192386 193185 (view as bug list)
Depends on:
Blocks:
 
Reported: 2009-05-19 05:10 UTC by kenjmiller
Modified: 2009-06-10 18:10 UTC (History)
6 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
plasma in xnest (176.31 KB, image/png)
2009-06-09 17:57 UTC, Praveen A
Details

Note You need to log in before you can comment on or make changes to this bug.
Description kenjmiller 2009-05-19 05:10:00 UTC
Application that crashed: plasma-desktop
Version of the application: 0.3
KDE Version: 4.2.85 (KDE 4.2.85 (KDE 4.3 Beta1))
Qt Version: 4.5.1
Operating System: Linux 2.6.30-5-generic x86_64
Distribution: Ubuntu karmic (development branch)

 -- Backtrace:
Application: Plasma Workspace (plasma-desktop), signal: Segmentation fault
[KCrash Handler]
#5  0xffffffffff000000 in ?? ()
#6  0x00007f835bbd9a23 in QPainterPrivate::updateStateImpl (this=0x11e3cc0, newState=0x11b8ab0) at painting/qpainter.cpp:908
#7  0x00007f835bbd9b02 in QPainterPrivate::updateState (this=0x11e3cc0, newState=0x11b8ab0) at painting/qpainter.cpp:936
#8  0x00007f835bbe2f8c in QPainter::drawPolyline (this=<value optimized out>, points=0x11d2930, pointCount=0) at painting/qpainter.cpp:4714
#9  0x00007f8350738b88 in OxygenStyle::drawKStylePrimitive (this=<value optimized out>, widgetType=<value optimized out>, primitive=65540, opt=<value optimized out>, r=@0x7fff6a412d50, 
    pal=<value optimized out>, flags={i = 0}, p=0x7fff6a413100, widget=0x0, kOpt=0x0) at /usr/include/qt4/QtGui/qpainter.h:574
#10 0x00007f835cbcb115 in KStyle::drawPrimitive (this=0x106e440, elem=QStyle::PE_IndicatorArrowDown, option=0x7fff6a413080, painter=<value optimized out>, widget=0x0)
    at ../../kdeui/kernel/kstyle.cpp:988
#11 0x00007f835cb4cfd2 in KShortcutsEditorDelegate (this=0x11b4800, parent=0x11760a0, allowLetterShortcuts=<value optimized out>) at ../../kdeui/dialogs/kshortcutseditordelegate.cpp:64
#12 0x00007f835cb541d6 in KShortcutsEditorPrivate::initGUI (this=0x1175800, types=<value optimized out>, allowLetterShortcuts=KShortcutsEditor::LetterShortcutsAllowed)
    at ../../kdeui/dialogs/kshortcutseditor.cpp:312
#13 0x00007f835cb5436b in KShortcutsEditor (this=0x1179340, parent=<value optimized out>, actionType={i = 1782657712}, allowLetterShortcuts=KShortcutsEditor::LetterShortcutsAllowed)
    at ../../kdeui/dialogs/kshortcutseditor.cpp:70
#14 0x00007f835cb58952 in KShortcutsDialog (this=0x117b070, types=<value optimized out>, allowLetterShortcuts=<value optimized out>, parent=<value optimized out>)
    at ../../kdeui/dialogs/kshortcutsdialog.cpp:123
#15 0x00007f835dd09422 in Corona (this=0x1174920, parent=<value optimized out>) at ../../plasma/corona.cpp:65
#16 0x00007f835e40a259 in DesktopCorona (this=0x11af600, parent=0x11b8ab8) at ../../../../plasma/shells/desktop/desktopcorona.cpp:43
#17 0x00007f835e428413 in PlasmaApp::corona (this=0x1021280) at ../../../../plasma/shells/desktop/plasmaapp.cpp:487
#18 0x00007f835e428b4e in PlasmaApp::setupDesktop (this=0x1021280) at ../../../../plasma/shells/desktop/plasmaapp.cpp:211
#19 0x00007f835e428cbb in PlasmaApp::qt_metacall (this=0x1021280, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0x7fff6a4136b0) at ./plasmaapp.moc:112
#20 0x00007f835b3d5e12 in QMetaObject::activate (sender=0x117cc70, from_signal_index=<value optimized out>, to_signal_index=<value optimized out>, argv=0x0) at kernel/qobject.cpp:3120
#21 0x00007f835b3daedf in QSingleShotTimer::timerEvent (this=0x117cc70) at kernel/qtimer.cpp:298
#22 0x00007f835b3cfb83 in QObject::event (this=0x117cc70, e=0x11b8ab8) at kernel/qobject.cpp:1082
#23 0x00007f835bac63fc in QApplicationPrivate::notify_helper (this=0x1031340, receiver=0x117cc70, e=0x7fff6a413cc0) at kernel/qapplication.cpp:4057
#24 0x00007f835bacd6ae in QApplication::notify (this=0x1021280, receiver=0x117cc70, e=0x7fff6a413cc0) at kernel/qapplication.cpp:4022
#25 0x00007f835cbb5526 in KApplication::notify (this=0x1021280, receiver=0x117cc70, event=0x7fff6a413cc0) at ../../kdeui/kernel/kapplication.cpp:307
#26 0x00007f835b3c03ec in QCoreApplication::notifyInternal (this=0x1021280, receiver=0x117cc70, event=0x7fff6a413cc0) at kernel/qcoreapplication.cpp:610
#27 0x00007f835b3ebd22 in QTimerInfoList::activateTimers (this=0x1034cb0) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:213
#28 0x00007f835b3e97bd in timerSourceDispatch (source=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:164
#29 0x00007f8355dddfce in IA__g_main_context_dispatch (context=0x1033920) at /build/buildd/glib2.0-2.21.0/glib/gmain.c:1814
#30 0x00007f8355de1728 in g_main_context_iterate (context=0x1033920, block=<value optimized out>, dispatch=<value optimized out>, self=<value optimized out>)
    at /build/buildd/glib2.0-2.21.0/glib/gmain.c:2448
#31 0x00007f8355de189c in IA__g_main_context_iteration (context=0x1033920, may_block=1) at /build/buildd/glib2.0-2.21.0/glib/gmain.c:2511
#32 0x00007f835b3e9706 in QEventDispatcherGlib::processEvents (this=0x1007a50, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:324
#33 0x00007f835bb5c1de in QGuiEventDispatcherGlib::processEvents (this=0x11af600, flags=<value optimized out>) at kernel/qguieventdispatcher_glib.cpp:202
#34 0x00007f835b3becc2 in QEventLoop::processEvents (this=<value optimized out>, flags=) at kernel/qeventloop.cpp:149
#35 0x00007f835b3bf094 in QEventLoop::exec (this=0x7fff6a413f60, flags=) at kernel/qeventloop.cpp:200
#36 0x00007f835b3c1189 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:888
#37 0x00007f835e41021f in kdemain (argc=<value optimized out>, argv=<value optimized out>) at ../../../../plasma/shells/desktop/main.cpp:50
#38 0x00007f835e0805a6 in __libc_start_main (main=0x400730 <main>, argc=1, ubp_av=0x7fff6a414268, init=0x400760 <__libc_csu_init>, fini=<value optimized out>, rtld_fini=<value optimized out>, 
    stack_end=0x7fff6a414258) at libc-start.c:220
#39 0x0000000000400669 in _start () at ../sysdeps/x86_64/elf/start.S:113
Comment 1 Dario Andres 2009-05-19 14:06:27 UTC
*** Bug 193185 has been marked as a duplicate of this bug. ***
Comment 2 Christoph Feck 2009-05-20 23:03:00 UTC
*** Bug 192386 has been marked as a duplicate of this bug. ***
Comment 3 Christoph Feck 2009-06-04 05:04:40 UTC
SVN commit 977397 by cfeck:

Reinitialize painter for ArrowDown pixmap

The interesting part about the backtrace (also in both duplicates)
is that the crash happens when rendering the "Down" arrow, although
the same code is used to render the first arrow. There might be a
problem in Qt with the state the painter is in, so reinitialize the
painter by correctly using begin() and end() calls.

CCBUG: 193183

@Praveen, as far as I know you were able to reproduce using the
xnest application. Could you test if this fixes the crash for you?



 M  +3 -0      kshortcutseditordelegate.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=977397
Comment 4 Praveen A 2009-06-09 17:57:58 UTC
Created attachment 34387 [details]
plasma in xnest

Now crashing stopped, but it is unusable. No text is rendered inside a window/dialogue (plasma add widget dialogue is visible in the screenshot), painting/repainting takes lot of time (even after a window from the normal desktop is moved/minimized the xnest window still shows it) and the looks are so sick-skinnish!  (if there is such a word) - the title bar has dots instead of a solid color.
Comment 5 Christoph Feck 2009-06-10 17:11:01 UTC
xnest apparently does not support the XRender extension. You could use a Qt widget style without gradients (Windows, Motif, Phase without gradients) and a KWin window decoration without gradients (Redmond?). For the remaining visual bugs, please file a separate bug report for Plasma etc.

I think there is some way to have nested X with Render extension, but I am no expert. Maybe some RDP/VNC style applications have XRender support.
Comment 6 Aaron J. Seigo 2009-06-10 18:10:20 UTC
use Xephyr instead of Xnest; it's Xnest with visual goodness.

i don't expect plasma to work well in Xnest and would probably just close a report about plasma+xnest. now that we have Xephyr, there is really no reason to use Xnest.

and as the crash is fixed thanks to Christoph, i'll close this bug while i'm in here :)