Summary: | x11-themes/comix causes segmentation faults in GTK apps when used with gtk-qt-engine | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | noddy <dkaloper> |
Component: | [OLD] KDE | Assignee: | Gentoo KDE team <kde> |
Status: | RESOLVED UPSTREAM | ||
Severity: | normal | ||
Priority: | High | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- |
Description
noddy
2005-03-09 16:33:04 UTC
I tried to reproduce the crash with ethereal or the gimp, but couldn't... Do you have a backtrace? Well, Gimp's backtrace was this: Program received signal SIGSEGV, Segmentation fault. [Switching to Thread -1209927456 (LWP 20260)] 0xb73de3b4 in QObject::parent (this=0x0) at qobject.h:154 154 QObject *parent() const { return parentObj; } Current language: auto; currently c++ (gdb) bt #0 0xb73de3b4 in QObject::parent (this=0x0) at qobject.h:154 #1 0xb73de798 in QWidget::parentWidget (this=0x0, sameWindow=false) at qwidget.h:856 #2 0xb73d77d3 in ComixStyle::drawPrimitive (this=0x84eb708, pe=3221212064, p=0xbfffcf30, r=@0xbfffceb0, cg=@0x8457bcc, flags=139376392, opt=@0x0) at Comix.cpp:1880 #3 0xb7bb8961 in drawTabFrame (window=0x8c9f860, style=0x84fd1d8, state=GTK_STATE_NORMAL, x=0, y=270, w=224, h=302, pos=GTK_POS_TOP) at qrect.h:172 #4 0xb7bb277e in draw_box_gap (style=0x0, window=0x8c9f860, state_type=GTK_STATE_NORMAL, shadow_type=GTK_SHADOW_OUT, area=0x8506f58, widget=0x0, detail=0x469063e3 "gtknotebook.c:992", x=0, y=272, width=224, height=300, gap_side=GTK_POS_TOP, gap_x=0, gap_width=93) at qt_theme_draw.c:1094 #5 0x467d9f9a in gtk_paint_box_gap () from /usr/lib/libgtk-x11-2.0.so.0 #6 0x00000000 in ?? () #7 0x00000002 in ?? () #8 0x08506f58 in ?? () #9 0x08b98ff0 in ?? () #10 0x469063da in gtk_major_version () from /usr/lib/libgtk-x11-2.0.so.0 <...snipped really deep stacking of unresolved functions...> So, that lead me to tweak Comix' tab drawing options; bullseye, it's "Use konsole tab color". Never crashes without it and never fails to with it. The offending code: case PE_PanelTabWidget: { QColor innerColor = cg.background(); if( _konsoleTabColor ) { QWidget *mySelf = dynamic_cast<QWidget*>(p->device()); QWidget *parent = mySelf->parentWidget(); if( parent ) It used to be: case PE_PanelTabWidget: { QColor innerColor = cg.background(); QWidget *mySelf = dynamic_cast<QWidget*>(p->device()); QWidget *innerWidget = 0; if( mySelf ) { Judging by the NULL this-pointer in parentWidget, it's the test for mySelf that used to save it. I'm a pretty lousy coder with no knowledge of Qt, GTK, _or_ X, so that's about what I can provide. Hope it helps. Very good work, that's definitely the problem. You should just send the backtrace and the comments to the comix author, it will be trivial to fix. Done. Feel free to close it UPSTREAM. Ok. comix-1.2.4 is now in portage. |