Comment 52 for bug 408719

Revision history for this message
In , DA (adawit) wrote :

(In reply to comment #23)
> Using VLC 1.1.12 on KDE 4.8rc1 with Qt 4.8.0, I can still reproduce the crash
> with the steps provided in comment #10, so it either is still not fixed in Qt
> 4.8, or the fix did not affect KDE.
>
> Is there a link to an open Qt bug?

Nope, but there is always the workaround patch I provided in comment #12 that defers the deletion of all static objects that register themselves with QDBusConnection.

It fixes the problem, but it does not really address the question why QDBusConnection attempts to access an already deleted object. Perhaps this is the result of the fact that all these objects that cause such crashes are static objects ? Anyways, unregistering the object from the QDBusConnection before deletion does not help either ; so the issue remains an upstream issue until someone can show otherwise.

> Program received signal SIGSEGV, Segmentation fault.
> 0xaec68807 in QDBusAdaptorConnector::relaySlot (this=0x8473160,
> argv=0xbfffef58) at
> /local/git/Qt/frameworks/qt/src/dbus/qdbusabstractadaptor.cpp:270
> 270 relay(d->currentSender->sender, d->currentSender->signal, argv);
>
> (gdb) bt
> #0 0xaec68807 in QDBusAdaptorConnector::relaySlot (this=0x8473160,
> argv=0xbfffef58) at
> /local/git/Qt/frameworks/qt/src/dbus/qdbusabstractadaptor.cpp:270
> #1 0xaec68b27 in QDBusAdaptorConnector::qt_metacall (this=0x8473160,
> _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0xbfffef58) at
> /local/git/Qt/frameworks/qt/src/dbus/qdbusabstractadaptor.cpp:366
> #2 0xb3794926 in QMetaObject::metacall (object=0x8473160,
> cl=QMetaObject::InvokeMetaMethod, idx=4, argv=0xbfffef58) at
> /local/git/Qt/frameworks/qt/src/corelib/kernel/qmetaobject.cpp:245
> #3 0xb37a8720 in QMetaObject::activate (sender=0x8473148, m=0xb3937cc4,
> local_signal_index=0, argv=0xbfffef58) at
> /local/git/Qt/frameworks/qt/src/corelib/kernel/qobject.cpp:3566
> #4 0xb37a9fc8 in QObject::destroyed (this=0x8473148, _t1=0x8473148) at
> .moc/debug-shared/moc_qobject.cpp:149
> #5 0xb37a33d1 in QObject::~QObject (this=0x8473148, __in_chrg=<optimized out>)
> at /local/git/Qt/frameworks/qt/src/corelib/kernel/qobject.cpp:844
> #6 0xaf82cc5d in KIO::Scheduler::~Scheduler (this=0x8473148,
> __in_chrg=<optimized out>) at
> /local/git/KDE/libs/kdelibs/kio/kio/scheduler.cpp:777
> #7 0xaf82cc97 in KIO::Scheduler::~Scheduler (this=0x8473148,
> __in_chrg=<optimized out>) at
> /local/git/KDE/libs/kdelibs/kio/kio/scheduler.cpp:779
> #8 0xaf831583 in KIO::SchedulerPrivate::~SchedulerPrivate (this=0x84730a8,
> __in_chrg=<optimized out>) at
> /local/git/KDE/libs/kdelibs/kio/kio/scheduler.cpp:667
> #9 0xaf82c956 in destroy () at
> /local/git/KDE/libs/kdelibs/kio/kio/scheduler.cpp:736
> #10 0xaf781c5d in KCleanUpGlobalStatic::~KCleanUpGlobalStatic (this=0xaf9aac94,
> __in_chrg=<optimized out>) at
> /local/git/KDE/libs/kdelibs/kdecore/kernel/kglobal.h:62
> #11 0xb7d48931 in __run_exit_handlers (status=0, listp=0xb7e80304,
> run_list_atexit=true) at exit.c:78
> #12 0xb7d489bd in __GI_exit (status=0) at exit.c:100
> #13 0xb7d3100b in __libc_start_main (main=0x8048ca0, argc=1, ubp_av=0xbffff194,
> init=0x80499c0, fini=0x8049a30, rtld_fini=0xb7fedca0 <_dl_fini>,
> stack_end=0xbffff18c) at libc-start.c:258
> #14 0x080493cd in ?? ()
> Backtrace stopped: Not enough registers or memory available to unwind further