Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 84681 - x11-themes/comix causes segmentation faults in GTK apps when used with gtk-qt-engine
Summary: x11-themes/comix causes segmentation faults in GTK apps when used with gtk-qt...
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] KDE (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: Gentoo KDE team
Depends on:
Reported: 2005-03-09 16:33 UTC by noddy
Modified: 2005-03-15 12:22 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---


Note You need to log in before you can comment on or make changes to this bug.
Description noddy 2005-03-09 16:33:04 UTC
^^^ Subject says it better than I possibly could.

Of the new comix themes 1.2.x, I tried only 1.2.3 that just recently landed in portage. It crashes GTK apps when used with gtk-qt-engine (0.6-r1); the crash occurs early while drawing the initial window (except Gimp, that gets through its splash), so to me it looks like a particular widget breaks.

The unfortunate thing about it is that the previous ebuild (1.1.6) is removed from portage.

Reproducible: Always
Steps to Reproduce:

Portage (default-linux/x86/2004.3, gcc-3.4.3, 
glibc-, 2.6.11-gentoo-r2 i686) 
System uname: 2.6.11-gentoo-r2 i686 AMD Athlon(tm) XP 1600+ 
Gentoo Base System version 1.6.9 
Python:              dev-lang/python-2.3.5 [2.3.5 (#1, Feb 27 2005, 20:11:28)] 
ccache version 2.3 [enabled] 
dev-lang/python:     2.3.5 
sys-devel/autoconf:  2.59-r6, 2.13 
sys-devel/automake:  1.7.9-r1, 1.8.5-r3, 1.5, 1.4_p6, 1.6.3, 1.9.5 
sys-devel/libtool:   1.5.10-r5 
CFLAGS="-O2 -march=athlon-xp -fomit-frame-pointer -pipe" 
CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3.4/env /usr/kde/3.4/share/config /usr/kde/3.4/shutdown /usr/kde/3/share/config /usr/lib/X11/xkb /usr/share/config /var/qmail/control" 
CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d" 
CXXFLAGS="-O2 -march=athlon-xp -fomit-frame-pointer -pipe" 
FEATURES="autoaddcvs autoconfig candy ccache distlocks sandbox sfperms strict 
userpriv usersandbox" 
USE="x86 3dnow 3dnowex X a52 aalib acpi alsa aotuv apm audiofile avi 
bash-completion berkdb bzlib cdparanoia cdr crypt cscope curl directfb doc dvd 
dvdr dvdread edl emboss encode escreen faad fbcon fbdev flac foomaticdb 
fortran framebuffer freetype gdbm geoip gif gstreamer gtk2 imagemagick imlib 
ithreads jack jack-tmpfs jpeg kdeenablefinal libg++ libwww live lzo lzw-tiff 
mad matroska mikmod mmx mmx2 mng motif mp3 mpeg mpi ncurses network nls nodrm 
nptl nvidia objc offensive oggvorbis opengl pam pcre pdflib perl pic png 
python qt quicktime readline real rtc sdl slang sndfile soundtouch spell 
sqlite sse ssl stroke svg tcpd tga threads tiff truetype truetype-fonts 
unicode userlocales v4l v4l2 xine xml xml2 xprint xv xvid xvmc yv12 zlib" 
Comment 1 Gregorio Guidi (RETIRED) gentoo-dev 2005-03-10 05:54:17 UTC
I tried to reproduce the crash with ethereal or the gimp, but couldn't...
Do you have a backtrace?
Comment 2 noddy 2005-03-10 09:46:38 UTC
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/
#6  0x00000000 in ?? ()
#7  0x00000002 in ?? ()
#8  0x08506f58 in ?? ()
#9  0x08b98ff0 in ?? ()
#10 0x469063da in gtk_major_version () from /usr/lib/

<...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.
Comment 3 Gregorio Guidi (RETIRED) gentoo-dev 2005-03-10 11:11:52 UTC
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.
Comment 4 noddy 2005-03-10 17:14:39 UTC
Done. Feel free to close it UPSTREAM.
Comment 5 Gregorio Guidi (RETIRED) gentoo-dev 2005-03-11 01:47:10 UTC
Comment 6 Gregorio Guidi (RETIRED) gentoo-dev 2005-03-15 12:22:57 UTC
comix-1.2.4 is now in portage.