Bug 254889 - Oxygen crashes some qt but non KDE apps
Summary: Oxygen crashes some qt but non KDE apps
Status: RESOLVED NOT A BUG
Alias: None
Product: Oxygen
Classification: Plasma
Component: style (show other bugs)
Version: unspecified
Platform: Fedora RPMs Linux
: NOR crash
Target Milestone: ---
Assignee: Hugo Pereira Da Costa
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-10-21 18:31 UTC by Zeljan Rikalo
Modified: 2010-11-21 15:15 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Zeljan Rikalo 2010-10-21 18:31:27 UTC
Version:           unspecified (using KDE 4.5.2) 
OS:                Linux

Some non KDE but Qt apps crashes due to some bug in oxygen or Qt-4.7.0
1.Using qt-4.6.3 - everything is ok (KDE-4.4.XX (Fedora 13 @home)) , but qt-4.7.0 (from koji.fedoraproject.org) - oxygen crashes while painting QScrollBar
2.Reported same thing with KDE-4.5.2 and Qt-4.7.0.
3.App works fine with all other qt styles - crashes only with oxygen.
GDB trace (taken on FC13 KDE-4.4.XX and Qt-4.7.0) is pasted into additional information.
Another weird thing is that with -graphicssystem raster crashes are rare (but can occur only with oxygen).
I see that code qdrawhelper_sse2_p.h qdrawhelper_sse2.cpp is changed between 4.6.3 and 4.7.0 (1) but don't know if this is qt bug since it works ok with all other styles.

Reproducible: Always

Steps to Reproduce:
http://www.lazarus.freepascal.org

Install daily snapshot of lazarus IDE and rebuild for qt dailysnapshots: http://www.hu.freepascal.org/lazarus/




Program received signal SIGSEGV, Segmentation fault.
comp_func_SourceOver_sse2 (destPixels=0x932c8a0, srcPixels=<value optimized out>, length=92, const_alpha=254)
    at painting/qdrawhelper_sse2.cpp:317
317           BLEND_SOURCE_OVER_ARGB32_WITH_CONST_ALPHA_SSE2(dst, src, length, nullVector, half, one, colorMask, constAlphaVector);
(gdb) bt
#0  comp_func_SourceOver_sse2 (destPixels=0x932c8a0, srcPixels=<value optimized out>, length=92, const_alpha=254)
    at painting/qdrawhelper_sse2.cpp:317
#1  0x0230c8b2 in process (count=2, spans=0xbfff9da0, data=0x9328378, handler=...) at painting/qdrawhelper.cpp:3327
#2  handleSpans<BlendSrcGeneric<(SpanMethod)0> > (count=2, spans=0xbfff9da0, data=0x9328378, handler=...) at painting/qdrawhelper.cpp:3273
#3  0x02303f79 in blend_src_generic<(SpanMethod)0> (count=2, spans=0xbfff9da0, userData=0x9328378) at painting/qdrawhelper.cpp:3345
#4  0x0230426d in qt_gradient_quint32 (count=2, spans=0xbfff9da0, userData=0x9328378) at painting/qdrawhelper.cpp:6932
#5  0x022d5568 in qt_span_fill_clipRect (count=<value optimized out>, spans=0xbfff9da0, userData=0x9328378)
    at painting/qpaintengine_raster.cpp:4835
#6  0x022a19d1 in flushSpans (this=0x90c5488, a=..., b=..., width=<value optimized out>, squareCap=2) at painting/qrasterizer.cpp:105
#7  ~QSpanBuffer (this=0x90c5488, a=..., b=..., width=<value optimized out>, squareCap=2) at painting/qrasterizer.cpp:80
#8  QRasterizer::rasterizeLine (this=0x90c5488, a=..., b=..., width=<value optimized out>, squareCap=2) at painting/qrasterizer.cpp:1137
#9  0x022e8a79 in QRasterPaintEngine::stroke (this=0x93b42c8, path=..., pen=...) at painting/qpaintengine_raster.cpp:1743
#10 0x0224d4fe in QPaintEngineEx::draw (this=0x93b42c8, path=...) at painting/qpaintengineex.cpp:601
#11 0x0224d836 in QPaintEngineEx::drawPath (this=0x93b42c8, path=...) at painting/qpaintengineex.cpp:846
#12 0x02265240 in QPainter::drawPath (this=0xbfffabb0, path=...) at painting/qpainter.cpp:3381
#13 0x0225f2be in QPainterPrivate::draw_helper (this=0x93abbf8, originalPath=..., op=QPainterPrivate::StrokeDraw) at painting/qpainter.cpp:471
#14 0x02260581 in QPainter::drawLines (this=0xbfffc6c0, lines=0xbfffadcc, lineCount=1) at painting/qpainter.cpp:4657

#15 0x0346cb3b in drawLine (this=0x8fa4670, p=0xbfffc6c0, r=..., pal=..., orientation=Qt::Horizontal, hover=false, opacity=-1)
    at /usr/include/QtGui/qpainter.h:534
#16 drawLine (this=0x8fa4670, p=0xbfffc6c0, r=..., pal=..., orientation=Qt::Horizontal, hover=false, opacity=-1)
    at /usr/include/QtGui/qpainter.h:556
#17 OxygenStyle::renderScrollBarHandle (this=0x8fa4670, p=0xbfffc6c0, r=..., pal=..., orientation=Qt::Horizontal, hover=false, opacity=-1)
    at /usr/src/debug/kdebase-runtime-4.4.5/kstyles/oxygen/oxygen.cpp:4400
---Type <return> to continue, or q <return> to quit---
#18 0x0346d702 in renderScrollBarHandle (this=0x8fa4670, primitive=9, opt=0xbfffbc48, r=..., pal=..., flags=..., p=0xbfffc6c0, widget=
    0x9171120, kOpt=0x0) at /usr/src/debug/kdebase-runtime-4.4.5/kstyles/oxygen/oxygen.h:293
#19 OxygenStyle::drawScrollBarPrimitive (this=0x8fa4670, primitive=9, opt=0xbfffbc48, r=..., pal=..., flags=..., p=0xbfffc6c0, widget=
    0x9171120, kOpt=0x0) at /usr/src/debug/kdebase-runtime-4.4.5/kstyles/oxygen/oxygen.cpp:1597
#20 0x0345b7aa in OxygenStyle::drawKStylePrimitive (this=0x8fa4670, widgetType=KStyle::WT_ScrollBar, primitive=9, opt=0xbfffbc48, r=...,
    palette=..., flags=..., p=0xbfffc6c0, widget=0x9171120, kOpt=0x0) at /usr/src/debug/kdebase-runtime-4.4.5/kstyles/oxygen/oxygen.cpp:762
#21 0x06716486 in KStyle::drawControl (this=0x8fa4670, element=QStyle::CE_ScrollBarSlider, option=0xbfffbc48, p=0xbfffc6c0, widget=0x9171120)
    at /usr/src/debug/kdelibs-4.4.5/kdeui/kernel/kstyle.cpp:2266
#22 0x03464916 in OxygenStyle::drawControl (this=0x8fa4670, element=QStyle::CE_ScrollBarSlider, option=0xbfffbc48, p=0xbfffc6c0, widget=
    0x9171120) at /usr/src/debug/kdebase-runtime-4.4.5/kstyles/oxygen/oxygen.cpp:641
#23 0x02446cbd in QCommonStyle::drawComplexControl (this=0x8fa4670, cc=QStyle::CC_ScrollBar, opt=0xbfffc658, p=0xbfffc6c0, widget=0x9171120)
    at styles/qcommonstyle.cpp:3237
#24 0x067124fd in KStyle::drawComplexControl (this=0x8fa4670, cc=QStyle::CC_ScrollBar, opt=0xbfffc658, p=0xbfffc6c0, w=0x9171120)
    at /usr/src/debug/kdelibs-4.4.5/kdeui/kernel/kstyle.cpp:3591
#25 0x0345c1f9 in OxygenStyle::drawComplexControl (this=0x8fa4670, control=QStyle::CC_ScrollBar, option=0xbfffc658, painter=0xbfffc6c0, widget=
    0x9171120) at /usr/src/debug/kdebase-runtime-4.4.5/kstyles/oxygen/oxygen.cpp:303
#26 0x0259c619 in QScrollBar::paintEvent (this=0x9171120) at widgets/qscrollbar.cpp:566
#27 0x0215206b in QWidget::event (this=0x9171120, event=0xbfffcc58) at kernel/qwidget.cpp:8333
#28 0x024fb7a5 in QAbstractSlider::event (this=0x9171120, e=0xbfffcc58) at widgets/qabstractslider.cpp:942
#29 0x0259d078 in QScrollBar::event (this=0x9171120, event=0xbfffcc58) at widgets/qscrollbar.cpp:546
#30 0x020ff3bc in QApplicationPrivate::notify_helper (this=0x8f67a08, receiver=0x9171120, e=0xbfffcc58) at kernel/qapplication.cpp:4396
#31 0x02105a01 in QApplication::notify (this=0x8f679f8, receiver=0x9171120, e=0xbfffcc58) at kernel/qapplication.cpp:4361
#32 0x0039eba3 in QCoreApplication::notifyInternal (this=0x8f679f8, receiver=0x9171120, event=0xbfffcc58) at kernel/qcoreapplication.cpp:732
---Type <return> to continue, or q <return> to quit---
#33 0x02158807 in sendSpontaneousEvent (this=0x9218840, pdev=0x91e9e5c, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=
    0x91f33f8) at ../../src/corelib/kernel/qcoreapplication.h:218
#34 QWidgetPrivate::drawWidget (this=0x9218840, pdev=0x91e9e5c, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x91f33f8)
    at kernel/qwidget.cpp:5420
#35 0x02159612 in QWidgetPrivate::paintSiblingsRecursive (this=0x92186e0, pdev=0x91e9e5c, siblings=..., index=<value optimized out>, rgn=...,
    offset=..., flags=4, sharedPainter=0x0, backingStore=0x91f33f8) at kernel/qwidget.cpp:5627
#36 0x02158551 in QWidgetPrivate::drawWidget (this=0x92186e0, pdev=0x91e9e5c, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=
    0x91f33f8) at kernel/qwidget.cpp:5473
#37 0x02159612 in QWidgetPrivate::paintSiblingsRecursive (this=0x92181e0, pdev=0x91e9e5c, siblings=..., index=<value optimized out>, rgn=...,
    offset=..., flags=4, sharedPainter=0x0, backingStore=0x91f33f8) at kernel/qwidget.cpp:5627
#38 0x02159449 in QWidgetPrivate::paintSiblingsRecursive (this=0x92181e0, pdev=0x91e9e5c, siblings=..., index=1, rgn=..., offset=..., flags=4,
    sharedPainter=0x0, backingStore=0x91f33f8) at kernel/qwidget.cpp:5614
#39 0x02158551 in QWidgetPrivate::drawWidget (this=0x92181e0, pdev=0x91e9e5c, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=
    0x91f33f8) at kernel/qwidget.cpp:5473
#40 0x02159612 in QWidgetPrivate::paintSiblingsRecursive (this=0x9214260, pdev=0x91e9e5c, siblings=..., index=<value optimized out>, rgn=...,
    offset=..., flags=4, sharedPainter=0x0, backingStore=0x91f33f8) at kernel/qwidget.cpp:5627
#41 0x02158551 in QWidgetPrivate::drawWidget (this=0x9214260, pdev=0x91e9e5c, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=
    0x91f33f8) at kernel/qwidget.cpp:5473
#42 0x02159612 in QWidgetPrivate::paintSiblingsRecursive (this=0x91fb328, pdev=0x91e9e5c, siblings=..., index=<value optimized out>, rgn=...,
    offset=..., flags=4, sharedPainter=0x0, backingStore=0x91f33f8) at kernel/qwidget.cpp:5627
#43 0x02158551 in QWidgetPrivate::drawWidget (this=0x91fb328, pdev=0x91e9e5c, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=
    0x91f33f8) at kernel/qwidget.cpp:5473
#44 0x02159612 in QWidgetPrivate::paintSiblingsRecursive (this=0x91fb180, pdev=0x91e9e5c, siblings=..., index=<value optimized out>, rgn=...,
---Type <return> to continue, or q <return> to quit---
    offset=..., flags=4, sharedPainter=0x0, backingStore=0x91f33f8) at kernel/qwidget.cpp:5627
#45 0x02159449 in QWidgetPrivate::paintSiblingsRecursive (this=0x91fb180, pdev=0x91e9e5c, siblings=..., index=0, rgn=..., offset=..., flags=4,
    sharedPainter=0x0, backingStore=0x91f33f8) at kernel/qwidget.cpp:5614
#46 0x02158551 in QWidgetPrivate::drawWidget (this=0x91fb180, pdev=0x91e9e5c, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=
    0x91f33f8) at kernel/qwidget.cpp:5473
#47 0x02159612 in QWidgetPrivate::paintSiblingsRecursive (this=0x91f3000, pdev=0x91e9e5c, siblings=..., index=<value optimized out>, rgn=...,
    offset=..., flags=4, sharedPainter=0x0, backingStore=0x91f33f8) at kernel/qwidget.cpp:5627
#48 0x02158551 in QWidgetPrivate::drawWidget (this=0x91f3000, pdev=0x91e9e5c, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=
    0x91f33f8) at kernel/qwidget.cpp:5473
#49 0x02159612 in QWidgetPrivate::paintSiblingsRecursive (this=0x91f4230, pdev=0x91e9e5c, siblings=..., index=<value optimized out>, rgn=...,
    offset=..., flags=4, sharedPainter=0x0, backingStore=0x91f33f8) at kernel/qwidget.cpp:5627
#50 0x02158551 in QWidgetPrivate::drawWidget (this=0x91f4230, pdev=0x91e9e5c, rgn=..., offset=..., flags=5, sharedPainter=0x0, backingStore=
    0x91f33f8) at kernel/qwidget.cpp:5473
#51 0x02332f25 in QWidgetBackingStore::sync (this=0x91f33f8) at painting/qbackingstore.cpp:1328
#52 0x0214b513 in QWidgetPrivate::syncBackingStore (this=0x91f4230) at kernel/qwidget.cpp:1805

#53 0x0217775e in QETWidget::translateConfigEvent (this=0x91ea750, event=0xbfffed20) at kernel/qapplication_x11.cpp:5291
#54 0x02183c06 in QApplication::x11ProcessEvent (this=0x8f679f8, event=0xbfffed20) at kernel/qapplication_x11.cpp:3441
#55 0x021afc92 in x11EventSourceDispatch (s=0x8f6af40, callback=0, user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:146
#56 0x00b57525 in g_main_dispatch (context=0x8f6a090) at gmain.c:1960
#57 IA__g_main_context_dispatch (context=0x8f6a090) at gmain.c:2513
#58 0x00b5b268 in g_main_context_iterate (context=0xa08bf0, block=0, dispatch=1, self=0x8f67f00) at gmain.c:2591
#59 0x00b5b449 in IA__g_main_context_iteration (context=0x8f6a090, may_block=0) at gmain.c:2654
#60 0x003c95b6 in QEventDispatcherGlib::processEvents (this=0x8f57588, flags=...) at kernel/qeventdispatcher_glib.cpp:415
---Type <return> to continue, or q <return> to quit---
#61 0x021af706 in QGuiEventDispatcherGlib::processEvents (this=0x8f57588, flags=...) at kernel/qguieventdispatcher_glib.cpp:204
#62 0x003a2bb2 in QCoreApplication::processEvents (flags=...) at kernel/qcoreapplication.cpp:924

#63 0x063e6043 in QCoreApplication_processEvents (flags=Could not find the frame base for "QCoreApplication_processEvents(unsigned int)".
) at src/qcoreapplication_c.cpp:105
#64 0x081f38a3 in TQTWIDGETSET__APPPROCESSMESSAGES (this=<error reading variable>) at qtobject.inc:264
#65 0x0808b299 in TAPPLICATION__HANDLEMESSAGE (this=<error reading variable>) at ./include/application.inc:1229
#66 0x0808b6ff in TAPPLICATION__RUNLOOP (this=<error reading variable>) at ./include/application.inc:1362
#67 0x081f3863 in TQTWIDGETSET__APPRUN (ALOOP=0x808b6c0 <TAPPLICATION__RUNLOOP>, this=<error reading variable>) at qtobject.inc:233
#68 0x0808b6ba in TAPPLICATION__RUN (this=<error reading variable>) at ./include/application.inc:1350
#69 0x0805e782 in main () at lazarus.pp:112
Comment 1 Hugo Pereira Da Costa 2010-10-21 20:03:15 UTC
I do suspect a Qt bug. 
The fact that it does not crash with other style is likely because they just don't call the same methods. 
So far I have not been able to reproduce here. 
will keep open for the meanwhile and investigate further
Comment 2 Zeljan Rikalo 2010-10-21 20:29:58 UTC
Thanks. If I can help somehow , just drop me an email.
Comment 3 Zeljan Rikalo 2010-11-05 21:51:16 UTC
Note (if it helps anyhow):
Configure oxygen -> Scrollbars -> Colorful hovered scrollbars enabled.
KDE 4.5.2 , qt-4.7.0-5.fc13.i686 on Fedora 13.
Now it does not crash anymore.
Comment 4 Zeljan Rikalo 2010-11-21 15:10:02 UTC
You can close this issue.
We are using C bindings for our apps, so rebuilding with -mstackrealign fixes problem.
Comment 5 Hugo Pereira Da Costa 2010-11-21 15:15:46 UTC
Thanks for the info. Closing, then :)