[Kde-bindings] KDE/kdebindings/smoke

Richard Dale rdale at foton.es
Fri Nov 20 12:13:43 UTC 2009


On Thursday 19 November 2009 06:32:18 pm Arno Rehn wrote:
> On Thursday 19 November 2009 19:24:18 Richard Dale wrote:
> > On Thursday 19 November 2009 06:08:28 pm Arno Rehn wrote:
> > > On Thursday 19 November 2009 12:46:44 Richard Dale wrote:
> > > > SVN commit 1051455 by rdale:
> > > >
> > > > * Added qtsvg and qtxml smoke libs. However, the generator currently
> > > > seg faults when generating the qtxml lib
> > >
> > > Hm, it works perfectly fine for me. Do you have a backtrace or some
> > > other useful information?
> >
> > I did an svn up and make clean, to make sure i had the current generator.
> > I am using kubuntu karmic with gcc 4.4.1:
> >
> > $gcc -v
> > Using built-in specs.
> > Target: i486-linux-gnu
> > Configured with: ../src/configure -v --with-pkgversion='Ubuntu
> >  4.4.1-4ubuntu8' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs
> >  --enable-
> > languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared
> >  --enable- multiarch --enable-linker-build-id --with-system-zlib
> >  --libexecdir=/usr/lib -- without-included-gettext --enable-threads=posix
> >  --with-gxx-include- dir=/usr/include/c++/4.4 --program-suffix=-4.4
> >  --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug
> >  --enable-objc-gc --enable-targets=all --disable- werror
> >  --with-arch-32=i486 --with-tune=generic --enable-checking=release --
> >  build=i486-linux-gnu --host=i486-linux-gnu --target=i486-linux-gnu
> > Thread model: posix
> > gcc version 4.4.1 (Ubuntu 4.4.1-4ubuntu8)
> >
> >
> >
> > [100%] Generating smokedata.cpp, x_1.cpp
> > using generator
> > "/home/rdale/kde/build/4/kdebindings/generator/bin/generator_smoke.so"
> > parsing "/home/rdale/kde/src/4/kdebindings/smoke/qtxml/qtxml_includes.h"
> > Generating SMOKE sources...
> > preparing SMOKE data [qtxml]
> >
> >
> >
> > Program received signal SIGSEGV, Segmentation fault.
> > 0x080631d0 in QBasicAtomicInt::ref() ()
> > (gdb) where
> > #0  0x080631d0 in QBasicAtomicInt::ref() ()
> > #1  0x08071925 in QList<Type>::QList(QList<Type> const&) ()
> > #2  0x4085c8a0 in QForeachContainer<QList<Type>
> > const>::QForeachContainer(QList<Type> const&) ()
> >    from
> >  /home/rdale/kde/build/4/kdebindings/generator/bin/generator_smoke.so #3
> >  0x40858015 in Util::addDestructor(Class*) () from
> > /home/rdale/kde/build/4/kdebindings/generator/bin/generator_smoke.so
> > #4  0x40855950 in Util::preparse(QSet<Type*>*, QSet<Class const*>*,
> > QList<QString> const&) ()
> >    from
> >  /home/rdale/kde/build/4/kdebindings/generator/bin/generator_smoke.so #5
> >  0x4084601f in SmokeDataFile::SmokeDataFile() () from
> > /home/rdale/kde/build/4/kdebindings/generator/bin/generator_smoke.so
> > #6  0x40836ce9 in generate () from
> > /home/rdale/kde/build/4/kdebindings/generator/bin/generator_smoke.so
> > #7  0x08062faa in main ()
> 
> That crash in QBasicAtomicInt::ref() looks strange to me. If the QList
>  itself was faulty it would crash in QList::detach() or so, I guess. What
>  version of Qt are you using? I have a kde-qt snapshot from November 11.
I've done some more testing. The crash only happens with the QDomText class 
(which hasn't got a destructor). It inherits from QDomNode which has a non-
virtual destructor, but then there are lots of other classes that inherit from 
QDomNode. If I remove QDomText from the classes list for the qt and qtxml 
smoke libs they both build fine. 

I added some debug logging to the addDestructor() method before the foreach 
loop:

    const Method* dtor = findDestructor(klass);
    if (dtor && dtor->hasExceptionSpec()) {
        meth.setHasExceptionSpec(true);
        printf("klass.name(): %s dtor: %p\n", klass-
>name().toLatin1().constData(), dtor);
        foreach (const Type& t, dtor->exceptionTypes()) {
            printf("found a type\n");
            meth.appendExceptionType(t);
        }
    }

It only ever prints something for QDomText just before the crash. With 
QDomText removed it never prints anything when building the qt and qtxml smoke 
libs.

-- Richard



More information about the Kde-bindings mailing list