Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 833866 Details for
Bug 983110
several autostart apps (e.g. polkit-kde, kmix) and logout/shutdown countdown fails
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
Gdb log of ksmserver when issuing shutdown command
SeveralAutostartAppsFail.txt (text/plain), 72.93 KB, created by
Elias Vanderstuyft
on 2013-12-07 11:20:06 UTC
(
hide
)
Description:
Gdb log of ksmserver when issuing shutdown command
Filename:
MIME Type:
Creator:
Elias Vanderstuyft
Created:
2013-12-07 11:20:06 UTC
Size:
72.93 KB
patch
obsolete
>So one thing that would be interesting to debug: > >gdb --pid `pidof ksmserver` >break KSMServer::logout(int,int,int) >c > >and in another Konsole tab/window: > >qdbus org.kde.ksmserver /KSMServer logout 0 2 2 > >(The parameters stand for ShutdownConfirmNo, ShutdownTypeHalt, ShutdownModeForceNow.) > >1. Does that trigger the breakpoint in GDB? If not, ksmserver is not listening to D-Bus, which would explain the bug (but of course then we'd need to figure out WHY it's not listening). >2. If yes, try single-stepping it in GDB to see what happens. We really need to know where it fails to shut down. > > > >Attempt 1 >_________ > > >--------------------------------- >Output: >--------------------------------- > >... >Loaded symbols for /lib64/libtiff.so.5 >Reading symbols from /lib64/libjbig.so.2.0...Reading symbols from /usr/lib/debug/usr/lib64/libjbig.so.2.0.debug...done. >done. >Loaded symbols for /lib64/libjbig.so.2.0 >0x0000003fb3aeb7fd in poll () at ../sysdeps/unix/syscall-template.S:81 >81 T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS) >Traceback (most recent call last): > File "/usr/share/gdb/auto-load/usr/lib64/libgobject-2.0.so.0.3600.3-gdb.py", line 9, in <module> > from gobject import register > File "/usr/share/glib-2.0/gdb/gobject.py", line 3, in <module> > import gdb.backtrace >ImportError: No module named backtrace >(gdb) break KSMServer::logout(int,int,int) >Breakpoint 1 at 0x3f28627ee0: file /usr/src/debug/kde-workspace-4.11.3/ksmserver/shutdown.cpp, line 88. >(gdb) c >Continuing. > >Breakpoint 1, KSMServer::logout (this=0x2871620, confirm=0, sdtype=2, > sdmode=2) > at /usr/src/debug/kde-workspace-4.11.3/ksmserver/shutdown.cpp:88 >88 sdtype = KWorkSpace::ShutdownTypeNone; >(gdb) s >92 (KWorkSpace::ShutdownMode)sdmode ); >(gdb) s >KSMServer::shutdown (this=0x2871620, > confirm=KWorkSpace::ShutdownConfirmNo, > sdtype=KWorkSpace::ShutdownTypeHalt, > sdmode=KWorkSpace::ShutdownModeForceNow) > at /usr/src/debug/kde-workspace-4.11.3/ksmserver/shutdown.cpp:106 >106 { >(gdb) s >107 pendingShutdown.stop(); >(gdb) s >106 { >(gdb) >106 { >(gdb) >107 pendingShutdown.stop(); >(gdb) s >QTimer::stop (this=this@entry=0x2871710) at kernel/qtimer.cpp:265 >265 if (id != INV_TIMER) { >(gdb) s >264 { >(gdb) s >265 if (id != INV_TIMER) { >(gdb) s >269 } >(gdb) s >KSMServer::shutdown (this=0x2871620, > confirm=KWorkSpace::ShutdownConfirmNo, > sdtype=KWorkSpace::ShutdownTypeHalt, > sdmode=KWorkSpace::ShutdownModeForceNow) > at /usr/src/debug/kde-workspace-4.11.3/ksmserver/shutdown.cpp:108 >108 if( dialogActive ) >(gdb) s >110 if( state >= Shutdown ) // already performing shutdown >(gdb) s >112 if( state != Idle ) // performing startup >(gdb) s >115 if( !pendingShutdown.isActive()) >(gdb) s >117 pendingShutdown.start( 1000 ); >(gdb) s >QTimer::start (this=this@entry=0x2871710, msec=msec@entry=1000) > at kernel/qtimer.cpp:233 >233 inter = msec; >(gdb) s >234 start(); >(gdb) s >QTimer::start (this=this@entry=0x2871710) at kernel/qtimer.cpp:214 >214 { >(gdb) s >215 if (id != INV_TIMER) // stop running timer >(gdb) s >214 { >(gdb) s >215 if (id != INV_TIMER) // stop running timer >(gdb) s >217 nulltimer = (!inter && single); >(gdb) s >218 id = QObject::startTimer(inter); >(gdb) s >217 nulltimer = (!inter && single); >(gdb) s >218 id = QObject::startTimer(inter); >(gdb) s >QObject::startTimer (this=this@entry=0x2871710, interval=1000) > at kernel/qobject.cpp:1573 >1573 { >(gdb) s >1576 if (interval < 0) { >(gdb) s >1573 { >(gdb) s >1574 Q_D(QObject); >(gdb) s >d_func (this=this@entry=0x2871710) at kernel/qobject.cpp:1574 >1574 Q_D(QObject); >(gdb) s >qGetPtrHelper<QScopedPointer<QObjectData> > (p=...) > at kernel/qobject.cpp:1574 >1574 Q_D(QObject); >(gdb) s >data (this=0x2871718) at ../../src/corelib/tools/qscopedpointer.h:135 >135 return d; >(gdb) s >QObject::startTimer (this=this@entry=0x2871710, interval=1000) > at kernel/qobject.cpp:1576 >1576 if (interval < 0) { >(gdb) s >1581 d->pendTimer = true; // set timer flag >(gdb) s >1583 if (!d->threadData->eventDispatcher) { >(gdb) s >1588 } >(gdb) s >1587 return d->threadData->eventDispatcher->registerTimer(interval, this); >(gdb) s >QAbstractEventDispatcher::registerTimer (this=0x250e220, interval=1000, > object=object@entry=0x2871710) > at kernel/qabstracteventdispatcher.cpp:379 >379 { >(gdb) s >380 int id = QAbstractEventDispatcherPrivate::allocateTimerId(); >(gdb) s >QAbstractEventDispatcherPrivate::allocateTimerId () > at kernel/qabstracteventdispatcher.cpp:176 >176 { >(gdb) s >180 timerId = nextFreeTimerId; //.loadAcquire(); // ### FIXME Proper memory ordering semantics >(gdb) s >operator int (this=0x3122cdfd60 <nextFreeTimerId>) > at ../../src/corelib/thread/qbasicatomic.h:85 >85 return _q_value; >(gdb) s >QAbstractEventDispatcherPrivate::allocateTimerId () > at kernel/qabstracteventdispatcher.cpp:183 >183 int which = timerId & TimerIdMask; >(gdb) s >184 int bucket = bucketOffset(which); >(gdb) s >bucketOffset (timerId=2) at kernel/qabstracteventdispatcher.cpp:127 >127 if (timerId < BucketSize[i]) >(gdb) s >QAbstractEventDispatcherPrivate::allocateTimerId () > at kernel/qabstracteventdispatcher.cpp:185 >185 at = bucketIndex(bucket, which); >(gdb) s >bucketIndex (timerId=2, bucket=<optimized out>) > at kernel/qabstracteventdispatcher.cpp:137 >137 return timerId - BucketOffset[bucket]; >(gdb) s >QAbstractEventDispatcherPrivate::allocateTimerId () > at kernel/qabstracteventdispatcher.cpp:186 >186 b = timerIds[bucket]; >(gdb) s >185 at = bucketIndex(bucket, which); >(gdb) s >bucketIndex (timerId=2, bucket=<optimized out>) > at kernel/qabstracteventdispatcher.cpp:137 >137 return timerId - BucketOffset[bucket]; >(gdb) s >QAbstractEventDispatcherPrivate::allocateTimerId () > at kernel/qabstracteventdispatcher.cpp:186 >186 b = timerIds[bucket]; >(gdb) s >operator int* (this=<optimized out>) > at ../../src/corelib/thread/qbasicatomic.h:169 >169 return _q_value; >(gdb) s >QAbstractEventDispatcherPrivate::allocateTimerId () > at kernel/qabstracteventdispatcher.cpp:185 >185 at = bucketIndex(bucket, which); >(gdb) s >bucketIndex (timerId=2, bucket=<optimized out>) > at kernel/qabstracteventdispatcher.cpp:137 >137 return timerId - BucketOffset[bucket]; >(gdb) s >QAbstractEventDispatcherPrivate::allocateTimerId () > at kernel/qabstracteventdispatcher.cpp:188 >188 if (!b) { >(gdb) s >198 newTimerId = prepareNewValueWithSerialNumber(timerId, b[at]); >(gdb) s >prepareNewValueWithSerialNumber (newId=<optimized out>, > oldId=<optimized out>) at kernel/qabstracteventdispatcher.cpp:112 >112 return (newId & TimerIdMask) | ((oldId + TimerSerialCounter) & TimerSerialMask); >(gdb) s >QAbstractEventDispatcherPrivate::allocateTimerId () > at kernel/qabstracteventdispatcher.cpp:198 >198 newTimerId = prepareNewValueWithSerialNumber(timerId, b[at]); >(gdb) s >prepareNewValueWithSerialNumber (newId=1, oldId=1610612738) > at kernel/qabstracteventdispatcher.cpp:112 >112 return (newId & TimerIdMask) | ((oldId + TimerSerialCounter) & TimerSerialMask); >(gdb) s >QAbstractEventDispatcherPrivate::allocateTimerId () > at kernel/qabstracteventdispatcher.cpp:199 >199 } while (!nextFreeTimerId.testAndSetRelaxed(timerId, newTimerId)); >(gdb) s >testAndSetRelaxed (newValue=1627389953, expectedValue=1610612738, > this=0x3122cdfd60 <nextFreeTimerId>) > at kernel/qabstracteventdispatcher.cpp:199 >199 } while (!nextFreeTimerId.testAndSetRelaxed(timerId, newTimerId)); >(gdb) s >testAndSetOrdered (newValue=1627389953, expectedValue=1610612738, > this=0x3122cdfd60 <nextFreeTimerId>) > at ../../src/corelib/arch/qatomic_x86_64.h:145 >145 : "memory"); >(gdb) s >QAbstractEventDispatcherPrivate::allocateTimerId () > at kernel/qabstracteventdispatcher.cpp:179 >179 do { >(gdb) s >201 b[at] = -timerId; >(gdb) s >204 } >(gdb) s >QAbstractEventDispatcher::registerTimer (this=0x250e220, interval=1000, > object=object@entry=0x2871710) > at kernel/qabstracteventdispatcher.cpp:381 >381 registerTimer(id, interval, object); >(gdb) s >QEventDispatcherGlib::registerTimer (this=0x250e220, timerId=1610612738, > interval=1000, object=0x2871710) > at kernel/qeventdispatcher_glib.cpp:526 >526 d->timerSource->timerList.registerTimer(timerId, interval, object); >(gdb) s >QTimerInfoList::registerTimer (this=0x2553870, timerId=1610612738, > interval=1000, object=0x2871710) > at kernel/qeventdispatcher_unix.cpp:488 >488 { >(gdb) s >489 QTimerInfo *t = new QTimerInfo; >(gdb) s >488 { >(gdb) s >489 QTimerInfo *t = new QTimerInfo; >(gdb) s >operator new (sz=sz@entry=56) > at ../../../../libstdc++-v3/libsupc++/new_op.cc:45 >45 { >(gdb) s >50 sz = 1; >(gdb) s >45 { >(gdb) s >50 sz = 1; >(gdb) s >51 p = (void *) malloc (sz); >(gdb) s >__GI___libc_malloc (bytes=39139440) at malloc.c:2849 >2849 { >(gdb) s >2854 = force_reg (__malloc_hook); >(gdb) s >2855 if (__builtin_expect (hook != NULL, 0)) >(gdb) s >2858 arena_lookup(ar_ptr); >(gdb) s >2860 arena_lock(ar_ptr, bytes); >(gdb) s >2863 victim = _int_malloc(ar_ptr, bytes); >(gdb) s >_int_malloc (av=0x3fb3dba780 <main_arena>, bytes=56) at malloc.c:3266 >3266 { >(gdb) s >3296 checked_request2size(bytes, nb); >(gdb) s >3266 { >(gdb) s >3296 checked_request2size(bytes, nb); >(gdb) s >3304 if ((unsigned long)(nb) <= (unsigned long)(get_max_fast ())) { >(gdb) s >3305 idx = fastbin_index(nb); >(gdb) s >3306 mfastbinptr* fb = &fastbin (av, idx); >(gdb) s >3307 mchunkptr pp = *fb; >(gdb) s >3306 mfastbinptr* fb = &fastbin (av, idx); >(gdb) s >3311 if (victim == NULL) >(gdb) s >3314 while ((pp = catomic_compare_and_exchange_val_acq (fb, victim->fd, victim)) >(gdb) s >3315 != victim); >(gdb) s >3314 while ((pp = catomic_compare_and_exchange_val_acq (fb, victim->fd, victim)) >(gdb) s >3315 != victim); >(gdb) s >3317 if (__builtin_expect (fastbin_index (chunksize (victim)) != idx, 0)) >(gdb) s >3694 if (__builtin_expect (perturb_byte, 0)) >(gdb) s >3693 void *p = chunk2mem(victim); >(gdb) s >3694 if (__builtin_expect (perturb_byte, 0)) >(gdb) s >3755 } >(gdb) s >__GI___libc_malloc (bytes=56) at malloc.c:2864 >2864 if(!victim) { >(gdb) s >2863 victim = _int_malloc(ar_ptr, bytes); >(gdb) s >2864 if(!victim) { >(gdb) s >2871 (void)mutex_unlock(&ar_ptr->mutex); >(gdb) s >2875 } >(gdb) s >operator new (sz=sz@entry=56) > at ../../../../libstdc++-v3/libsupc++/new_op.cc:52 >52 while (p == 0) >(gdb) s >62 } >(gdb) s >QTimerInfoList::registerTimer (this=0x2553870, timerId=1610612738, > interval=1000, object=0x2871710) > at kernel/qeventdispatcher_unix.cpp:491 >491 t->interval.tv_sec = interval / 1000; >(gdb) s >489 QTimerInfo *t = new QTimerInfo; >(gdb) s >490 t->id = timerId; >(gdb) s >491 t->interval.tv_sec = interval / 1000; >(gdb) s >492 t->interval.tv_usec = (interval % 1000) * 1000; >(gdb) s >491 t->interval.tv_sec = interval / 1000; >(gdb) s >492 t->interval.tv_usec = (interval % 1000) * 1000; >(gdb) s >493 t->timeout = updateCurrentTime() + t->interval; >(gdb) s >updateCurrentTime (this=0x2553870) at kernel/qeventdispatcher_unix.cpp:354 >354 return (currentTime = qt_gettime()); >(gdb) s >qt_gettime () at tools/qelapsedtimer_unix.cpp:142 >142 { >(gdb) s >144 do_gettime(&sec, &frac); >(gdb) s >do_gettime (frac=0x7fff073bb3c0, sec=0x7fff073bb3b8) > at tools/qelapsedtimer_unix.cpp:144 >144 do_gettime(&sec, &frac); >(gdb) s >unixCheckClockType () at tools/qelapsedtimer_unix.cpp:80 >80 if (is_likely(load_acquire(monotonicClockChecked))) >(gdb) s >do_gettime (frac=0x7fff073bb3c0, sec=0x7fff073bb3b8) > at tools/qelapsedtimer_unix.cpp:125 >125 if (is_likely(monotonicClockAvailable)) { >(gdb) s >127 clock_gettime(CLOCK_MONOTONIC, &ts); >(gdb) s >125 if (is_likely(monotonicClockAvailable)) { >(gdb) s >127 clock_gettime(CLOCK_MONOTONIC, &ts); >(gdb) s >clock_gettime (clock_id=1, tp=0x7fff073bb3c0) > at ../sysdeps/unix/clock_gettime.c:93 >93 { >(gdb) s >115 SYSDEP_GETTIME_CPU (clock_id, tp); >(gdb) s >^[[A >134 } >(gdb) s >^[[Ado_gettime (frac=0x7fff073bb3c0, sec=0x7fff073bb3b8) > at tools/qelapsedtimer_unix.cpp:129 >129 *frac = ts.tv_nsec; >(gdb) s >qt_gettime () at tools/qelapsedtimer_unix.cpp:149 >149 if (monotonicClockAvailable) >(gdb) s >150 tv.tv_usec /= 1000; >(gdb) s >153 } >(gdb) s >QTimerInfoList::registerTimer (this=0x2553870, timerId=1610612738, > interval=<optimized out>, object=0x2871710) > at kernel/qeventdispatcher_unix.cpp:493 >493 t->timeout = updateCurrentTime() + t->interval; >(gdb) s >operator+ (t2=..., t1=...) at ../../src/corelib/kernel/qcore_unix_p.h:130 >130 tmp.tv_usec = t1.tv_usec + t2.tv_usec; >(gdb) s >129 tmp.tv_sec = t1.tv_sec + t2.tv_sec; >(gdb) s >131 return normalizedTimeval(tmp); >(gdb) s >normalizedTimeval (t=<synthetic pointer>) > at ../../src/corelib/kernel/qcore_unix_p.h:106 >106 while (t.tv_usec > 1000000l) { >(gdb) s >110 while (t.tv_usec < 0l) { >(gdb) s >QTimerInfoList::registerTimer (this=0x2553870, timerId=1610612738, > interval=<optimized out>, object=0x2871710) > at kernel/qeventdispatcher_unix.cpp:493 >493 t->timeout = updateCurrentTime() + t->interval; >(gdb) s >497 timerInsert(t); >(gdb) s >494 t->obj = object; >(gdb) s >495 t->activateRef = 0; >(gdb) s >497 timerInsert(t); >(gdb) s >498 } >(gdb) s >497 timerInsert(t); >(gdb) s >QTimerInfoList::timerInsert (this=0x2553870, ti=0x28cbcb0) > at kernel/qeventdispatcher_unix.cpp:432 >432 { >(gdb) s >433 int index = size(); >(gdb) s >size (this=0x2553870) at kernel/qeventdispatcher_unix.cpp:433 >433 int index = size(); >(gdb) s >size (this=0x2553870) at ../../src/corelib/tools/qlist.h:98 >98 inline int size() const { return d->end - d->begin; } >(gdb) s >QTimerInfoList::timerInsert (this=0x2553870, ti=0x28cbcb0) > at kernel/qeventdispatcher_unix.cpp:432 >432 { >(gdb) s >433 int index = size(); >(gdb) s >size (this=0x2553870) at kernel/qeventdispatcher_unix.cpp:433 >433 int index = size(); >(gdb) s >size (this=0x2553870) at ../../src/corelib/tools/qlist.h:98 >98 inline int size() const { return d->end - d->begin; } >(gdb) s >QTimerInfoList::timerInsert (this=0x2553870, ti=0x28cbcb0) > at kernel/qeventdispatcher_unix.cpp:435 >435 register const QTimerInfo * const t = at(index); >(gdb) s >at (i=<optimized out>, this=<optimized out>) > at kernel/qeventdispatcher_unix.cpp:435 >435 register const QTimerInfo * const t = at(index); >(gdb) s >at (i=<optimized out>, this=<optimized out>) > at ../../src/corelib/tools/qlist.h:100 >100 inline void **at(int i) const { return d->array + d->begin + i; } >(gdb) s >QTimerInfoList::timerInsert (this=0x2553870, ti=0x28cbcb0) > at kernel/qeventdispatcher_unix.cpp:434 >434 while (index--) { >(gdb) s >439 insert(index+1, ti); >(gdb) s >insert (t=@0x7fff073bb3f8: 0x28cbcb0, i=0, this=0x2553870) > at kernel/qeventdispatcher_unix.cpp:439 >439 insert(index+1, ti); >(gdb) s >operator!= (value=1, this=0x2726dd0) > at ../../src/corelib/thread/qbasicatomic.h:75 >75 return _q_value != value; >(gdb) s >insert (t=@0x7fff073bb3f8: 0x28cbcb0, i=0, this=0x2553870) > at ../../src/corelib/tools/qlist.h:577 >577 if (d->ref != 1) { >(gdb) s >QTimerInfoList::timerInsert (this=0x2553870, ti=0x28cbcb0) > at kernel/qeventdispatcher_unix.cpp:439 >439 insert(index+1, ti); >(gdb) s >insert (t=@0x7fff073bb3f8: 0x28cbcb0, i=0, this=0x2553870) > at kernel/qeventdispatcher_unix.cpp:439 >439 insert(index+1, ti); > >(gdb) s >node_construct (this=<optimized out>, t=@0x7fff073bb3f8: 0x28cbcb0, > n=<synthetic pointer>) at kernel/qeventdispatcher_unix.cpp:439 >439 insert(index+1, ti); >(gdb) s >memcpy (__len=8, __src=0x7fff073bb3f8, __dest=<synthetic pointer>) > at /usr/include/bits/string3.h:51 >warning: Source file is more recent than executable. >51 return __builtin___memcpy_chk (__dest, __src, __len, __bos0 (__dest)); > >(gdb) s >insert (t=@0x7fff073bb3f8: 0x28cbcb0, i=0, this=0x2553870) > at ../../src/corelib/tools/qlist.h:598 >598 n = reinterpret_cast<Node *>(p.insert(i));; >(gdb) s >QListData::insert (this=0x2553870, i=0) at tools/qlist.cpp:299 >299 { >(gdb) s >301 if (i <= 0) >(gdb) s >302 return prepend(); >(gdb) s >QListData::prepend (this=0x2553870) at tools/qlist.cpp:281 >281 { >(gdb) s >283 if (d->begin == 0) { >(gdb) s >295 return d->array + --d->begin; >(gdb) s >296 } >(gdb) s >295 return d->array + --d->begin; >(gdb) s >296 } >(gdb) s >295 return d->array + --d->begin; >(gdb) s >296 } >(gdb) s >QListData::insert (this=0x2553870, i=<optimized out>) > at tools/qlist.cpp:335 >335 } >(gdb) s >insert (t=@0x7fff073bb3f8: 0x28cbcb0, i=<optimized out>, > this=<optimized out>) at ../../src/corelib/tools/qlist.h:603 >603 *n = copy; >(gdb) s >QTimerInfoList::timerInsert (this=<optimized out>, ti=0x28cbcb0) > at kernel/qeventdispatcher_unix.cpp:440 >440 } >(gdb) s >QAbstractEventDispatcher::registerTimer (this=0x250e220, interval=1000, > object=object@entry=0x2871710) > at kernel/qabstracteventdispatcher.cpp:383 >383 } >(gdb) s >QTimer::start (this=this@entry=0x2871710) at kernel/qtimer.cpp:219 >219 } >(gdb) s >KSMServer::shutdown (this=0x2871620, > confirm=KWorkSpace::ShutdownConfirmNo, > sdtype=KWorkSpace::ShutdownTypeHalt, > sdmode=KWorkSpace::ShutdownModeForceNow) > at /usr/src/debug/kde-workspace-4.11.3/ksmserver/shutdown.cpp:119 >119 pendingShutdown_sdtype = sdtype; >(gdb) s >118 pendingShutdown_confirm = confirm; >(gdb) s >120 pendingShutdown_sdmode = sdmode; >(gdb) s >119 pendingShutdown_sdtype = sdtype; >(gdb) s >230 } >(gdb) s >KSMServerInterfaceAdaptor::qt_static_metacall (_o=0x2553870, > _o@entry=0x2887660, _id=0, _id@entry=5, _a=0x0, > _a@entry=0x7fff073bb700, _c=<optimized out>) > at /usr/src/debug/kde-workspace-4.11.3/x86_64-redhat-linux-gnu/ksmserver/ksmserverinterfaceadaptor.moc:117 >117 } >(gdb) s > >KSMServerInterfaceAdaptor::qt_metacall (this=0x2887660, > _c=QMetaObject::InvokeMetaMethod, _id=<optimized out>, > _a=0x7fff073bb700) > at /usr/src/debug/kde-workspace-4.11.3/x86_64-redhat-linux-gnu/ksmserver/ksmserverinterfaceadaptor.moc:153 >153 _id -= 14; >(gdb) s >156 } >(gdb) s >QDBusConnectionPrivate::deliverCall (this=this@entry=0x281d000, > object=object@entry=0x2887660, msg=..., metaTypes=..., slotIdx=9) > at qdbusintegrator.cpp:952 >952 QDBusConnectionPrivate::setSender(0); >(gdb) s >951 slotIdx, params.data()) >= 0; >(gdb) s >952 QDBusConnectionPrivate::setSender(0); >(gdb) s >QDBusConnectionPrivate::setSender (s=s@entry=0x0) > at qdbusconnection.cpp:1160 >1160 { >(gdb) s >1161 _q_manager()->setSender(s); >(gdb) s >_q_manager () at qdbusconnection.cpp:63 >63 Q_GLOBAL_STATIC(QDBusConnectionManager, _q_manager) >(gdb) s >operator! (this=<optimized out>) at qdbusconnection.cpp:63 >63 Q_GLOBAL_STATIC(QDBusConnectionManager, _q_manager) >(gdb) s >operator== (value=<optimized out>, this=<optimized out>) > at ../../src/corelib/thread/qbasicatomic.h:154 >154 return _q_value == value; >(gdb) s >_q_manager () at qdbusconnection.cpp:63 >63 Q_GLOBAL_STATIC(QDBusConnectionManager, _q_manager) >(gdb) s >operator QDBusConnectionManager* (this=<optimized out>) > at ../../src/corelib/thread/qbasicatomic.h:169 >169 return _q_value; >(gdb) s >_q_manager () at qdbusconnection.cpp:63 >63 Q_GLOBAL_STATIC(QDBusConnectionManager, _q_manager) >(gdb) s >QDBusConnectionPrivate::setSender (s=s@entry=0x0) > at qdbusconnection.cpp:1162 >1162 } >(gdb) s >1161 _q_manager()->setSender(s); >(gdb) s >QDBusConnectionManager::setSender (this=0x286d580, s=s@entry=0x0) > at qdbusconnection.cpp:72 >72 { >(gdb) s >73 QMutexLocker locker(&senderMutex); >(gdb) s >QMutexLocker (m=0x286d590, this=<synthetic pointer>) > at ../../src/corelib/thread/qmutex.h:108 >108 if (m) { >(gdb) s >QDBusConnectionManager::setSender (this=0x286d580, s=s@entry=0x0) > at qdbusconnection.cpp:72 >72 { >(gdb) s >73 QMutexLocker locker(&senderMutex); >(gdb) s >QMutexLocker (m=0x286d590, this=<synthetic pointer>) > at ../../src/corelib/thread/qmutex.h:108 >108 if (m) { >(gdb) s >109 m->lockInline(); >(gdb) s >lockInline (this=0x286d590) at ../../src/corelib/thread/qmutex.h:187 >187 if (d->recursive) { >(gdb) s >189 } else if(!tryLockInline()) { >(gdb) s >tryLockInline (this=0x286d590) at ../../src/corelib/thread/qmutex.h:189 >189 } else if(!tryLockInline()) { >(gdb) s >testAndSetAcquire (newValue=1, expectedValue=0, this=0x286d5e0) > at ../../src/corelib/thread/qmutex.h:189 >189 } else if(!tryLockInline()) { >(gdb) s >testAndSetOrdered (newValue=1, expectedValue=0, this=0x286d5e0) > at ../../src/corelib/arch/qatomic_x86_64.h:145 >145 : "memory"); >(gdb) s >lockInline (this=0x286d590) at ../../src/corelib/thread/qmutex.h:189 >189 } else if(!tryLockInline()) { >(gdb) s >QMutexLocker (m=0x286d590, this=<synthetic pointer>) > at ../../src/corelib/thread/qmutex.h:110 >110 val = reinterpret_cast<quintptr>(m) | quintptr(1u); >(gdb) s >QDBusConnectionManager::setSender (this=0x286d580, s=s@entry=0x0) > at qdbusconnection.cpp:74 >74 senderName = (s ? s->name : QString()); >(gdb) s >QString (this=0x7fff073bb550) at ../../src/corelib/tools/qstring.h:879 >879 inline QString::QString() : d(&shared_null) { d->ref.ref(); } >(gdb) s >ref (this=<optimized out>) at ../../src/corelib/arch/qatomic_x86_64.h:121 >121 : "memory"); >(gdb) s >QDBusConnectionManager::setSender (this=0x286d580, s=s@entry=0x0) > at qdbusconnection.cpp:74 >74 senderName = (s ? s->name : QString()); >(gdb) s >QString::operator= (this=this@entry=0x286d598, other=...) > at tools/qstring.cpp:1409 >1409 { >(gdb) s >1410 other.d->ref.ref(); >(gdb) s >ref (this=0x3122cdf900 <QString::shared_null>) > at ../../src/corelib/arch/qatomic_x86_64.h:121 >121 : "memory"); >(gdb) s >QString::operator= (this=this@entry=0x286d598, other=...) > at tools/qstring.cpp:1411 >1411 if (!d->ref.deref()) >(gdb) s >deref (this=0x2874660) at ../../src/corelib/arch/qatomic_x86_64.h:133 >133 : "memory"); >(gdb) s >QString::operator= (this=this@entry=0x286d598, other=...) > at tools/qstring.cpp:1411 >1411 if (!d->ref.deref()) >(gdb) s >1413 d = other.d; >(gdb) s >1415 } >(gdb) s >QDBusConnectionManager::setSender (this=0x286d580, s=s@entry=0x0) > at qdbusconnection.cpp:74 >74 senderName = (s ? s->name : QString()); >(gdb) s >~QString (this=0x7fff073bb550, __in_chrg=<optimized out>) > at ../../src/corelib/tools/qstring.h:880 >880 inline QString::~QString() { if (!d->ref.deref()) free(d); } >(gdb) s >deref (this=0x3122cdf900 <QString::shared_null>) > at ../../src/corelib/arch/qatomic_x86_64.h:133 >133 : "memory"); >(gdb) s >~QString (this=0x7fff073bb550, __in_chrg=<optimized out>) > at ../../src/corelib/tools/qstring.h:880 >880 inline QString::~QString() { if (!d->ref.deref()) free(d); } >(gdb) s >QDBusConnectionManager::setSender (this=0x286d580, s=s@entry=0x0) > at qdbusconnection.cpp:74 >74 senderName = (s ? s->name : QString()); >(gdb) s >~QMutexLocker (this=<synthetic pointer>, __in_chrg=<optimized out>) > at qdbusconnection.cpp:74 >74 senderName = (s ? s->name : QString()); >(gdb) s >unlock (this=<synthetic pointer>) at ../../src/corelib/thread/qmutex.h:119 >119 if ((val & quintptr(1u)) == quintptr(1u)) { >(gdb) s >QDBusConnectionManager::setSender (this=0x286d580, s=s@entry=0x0) > at qdbusconnection.cpp:74 >74 senderName = (s ? s->name : QString()); >(gdb) s >~QMutexLocker (this=<synthetic pointer>, __in_chrg=<optimized out>) > at qdbusconnection.cpp:74 >74 senderName = (s ? s->name : QString()); >(gdb) s >unlock (this=<synthetic pointer>) at ../../src/corelib/thread/qmutex.h:120 >120 val &= ~quintptr(1u); >(gdb) s >121 mutex()->unlockInline(); >(gdb) s >unlockInline (this=0x286d590) at ../../src/corelib/thread/qmutex.h:169 >169 if (d->recursive) { >(gdb) s >171 } else if (!d->contenders.testAndSetRelease(1, 0)) { >(gdb) s >testAndSetRelease (newValue=0, expectedValue=1, this=0x286d5e0) > at ../../src/corelib/thread/qmutex.h:171 >171 } else if (!d->contenders.testAndSetRelease(1, 0)) { >(gdb) s >testAndSetOrdered (newValue=0, expectedValue=1, this=0x286d5e0) > at ../../src/corelib/arch/qatomic_x86_64.h:145 >145 : "memory"); >(gdb) s >unlockInline (this=0x286d590) at ../../src/corelib/thread/qmutex.h:171 >171 } else if (!d->contenders.testAndSetRelease(1, 0)) { >(gdb) s >QDBusConnectionManager::setSender (this=0x286d580, s=s@entry=0x0) > at qdbusconnection.cpp:75 >75 } >(gdb) s >QDBusConnectionPrivate::deliverCall (this=this@entry=0x281d000, > object=object@entry=0x2887660, msg=..., metaTypes=..., slotIdx=9) > at qdbusintegrator.cpp:954 >954 if (!ptr.isNull()) >(gdb) s >955 QDBusContextPrivate::set(object, old); >(gdb) s >QDBusContextPrivate::set (obj=obj@entry=0x2887660, > newContext=newContext@entry=0x0) at qdbuscontext.cpp:54 >54 { >(gdb) s >56 if (qobject_cast<QDBusAbstractAdaptor *>(obj)) >(gdb) s >qobject_cast<QDBusAbstractAdaptor*> (object=0x2887660, > object@entry=0x3fb5e5edcd <operator new(unsigned long)+29>) > at ../../src/corelib/kernel/qobject.h:380 >380 return static_cast<T>(reinterpret_cast<T>(object)->staticMetaObject.cast(object)); >(gdb) s >QDBusContextPrivate::set (obj=obj@entry=0x2887660, > newContext=newContext@entry=0x0) at qdbuscontext.cpp:54 >54 { >(gdb) s >56 if (qobject_cast<QDBusAbstractAdaptor *>(obj)) >(gdb) s >qobject_cast<QDBusAbstractAdaptor*> (object=0x2887660, > object@entry=0x3fb5e5edcd <operator new(unsigned long)+29>) > at ../../src/corelib/kernel/qobject.h:380 >380 return static_cast<T>(reinterpret_cast<T>(object)->staticMetaObject.cast(object)); > > > >------------------------------------------------- >Now I figured out I could simply use ENTER >------------------------------------------------- > > > >(gdb) >QMetaObject::cast ( > this=0x31246799e0 <QDBusAbstractAdaptor::staticMetaObject>, > obj=obj@entry=0x2887660) at kernel/qmetaobject.cpp:272 >272 { >(gdb) >273 if (obj) { >(gdb) >274 const QMetaObject *m = obj->metaObject(); >(gdb) >KSMServerInterfaceAdaptor::metaObject (this=0x2887660) > at /usr/src/debug/kde-workspace-4.11.3/x86_64-redhat-linux-gnu/ksmserver/ksmserverinterfaceadaptor.moc:134 >134 return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; >(gdb) >135 } >(gdb) >QMetaObject::cast ( > this=0x31246799e0 <QDBusAbstractAdaptor::staticMetaObject>, > obj=obj@entry=0x2887660) at kernel/qmetaobject.cpp:276 >276 if (m == this) >(gdb) >275 do { >(gdb) >276 if (m == this) >(gdb) >281 } >(gdb) >276 if (m == this) >(gdb) >281 } >(gdb) >QDBusContextPrivate::set (obj=obj@entry=0x2887660, > newContext=newContext@entry=0x0) at qdbuscontext.cpp:56 >56 if (qobject_cast<QDBusAbstractAdaptor *>(obj)) >(gdb) >57 obj = obj->parent(); >(gdb) >parent (this=0x2887660) at qdbuscontext.cpp:57 >57 obj = obj->parent(); >(gdb) >operator-> (this=0x2887668) > at ../../src/corelib/tools/qscopedpointer.h:113 >113 return d; >(gdb) >parent (this=0x2887660) at ../../src/corelib/kernel/qobject.h:273 >273 inline QObject *parent() const { return d_ptr->parent; } >(gdb) >QDBusContextPrivate::set (obj=0x2871620, obj@entry=0x2887660, > newContext=newContext@entry=0x0) at qdbuscontext.cpp:61 >61 void *ptr = obj->qt_metacast("QDBusContext"); >(gdb) >KSMServer::qt_metacast (this=0x2871620, > _clname=0x3124461b27 "QDBusContext") > at /usr/src/debug/kde-workspace-4.11.3/x86_64-redhat-linux-gnu/ksmserver/server.moc:178 >178 if (!_clname) return 0; >(gdb) >177 { >(gdb) >178 if (!_clname) return 0; >(gdb) >179 if (!strcmp(_clname, qt_meta_stringdata_KSMServer)) >(gdb) >180 return static_cast<void*>(const_cast< KSMServer*>(this)); >(gdb) >179 if (!strcmp(_clname, qt_meta_stringdata_KSMServer)) >(gdb) >181 return QObject::qt_metacast(_clname); >(gdb) >QObject::qt_metacast (this=0x2871620, _clname=0x3124461b27 "QDBusContext") > at .moc/release-shared/moc_qobject.cpp:99 >99 if (!_clname) return 0; >(gdb) >98 { >(gdb) >99 if (!_clname) return 0; >(gdb) >100 if (!strcmp(_clname, qt_meta_stringdata_QObject)) >(gdb) >99 if (!_clname) return 0; >(gdb) >QDBusContextPrivate::set (obj=0x2871620, obj@entry=0x2887660, > newContext=newContext@entry=0x0) at qdbuscontext.cpp:63 >63 if (q_ptr) { >(gdb) >69 return 0; >(gdb) >70 } >(gdb) >QDBusConnectionPrivate::deliverCall (this=this@entry=0x281d000, > > object=object@entry=0x2887660, msg=..., metaTypes=..., slotIdx=9) > at qdbusintegrator.cpp:949 >949 QPointer<QObject> ptr = object; >(gdb) >~QPointer (this=0x7fff073bb6d0, __in_chrg=<optimized out>) > at ../../src/corelib/kernel/qpointer.h:64 >64 { QMetaObject::removeGuard(&o); } >(gdb) >QMetaObject::removeGuard (ptr=ptr@entry=0x7fff073bb6d0) > at kernel/qobject.cpp:407 >407 { >(gdb) >408 if (!*ptr) >(gdb) >410 GuardHash *hash = guardHash(); >(gdb) >guardHash () at kernel/qobject.cpp:385 >385 Q_GLOBAL_STATIC(GuardHash, guardHash) >(gdb) >operator! (this=<optimized out>) at kernel/qobject.cpp:385 >385 Q_GLOBAL_STATIC(GuardHash, guardHash) >(gdb) >operator== (value=<optimized out>, this=<optimized out>) > at ../../src/corelib/thread/qbasicatomic.h:154 >154 return _q_value == value; >(gdb) >guardHash () at kernel/qobject.cpp:385 >385 Q_GLOBAL_STATIC(GuardHash, guardHash) >(gdb) >operator QMultiHash<QObject*, QObject**>* (this=<optimized out>) > at ../../src/corelib/thread/qbasicatomic.h:169 >169 return _q_value; >(gdb) >guardHash () at kernel/qobject.cpp:385 >385 Q_GLOBAL_STATIC(GuardHash, guardHash) > > > > >------------------------------------------------------------------------- >Now I got tired pressing ENTER, so hold down the ENTER key for a while: >------------------------------------------------------------------------- > > > >(gdb) >QMetaObject::removeGuard (ptr=ptr@entry=0x7fff073bb6d0) > at kernel/qobject.cpp:413 >413 if (!hash || hash->isEmpty()) >(gdb) >410 GuardHash *hash = guardHash(); >(gdb) >413 if (!hash || hash->isEmpty()) >(gdb) > > >isEmpty (this=0x27b6060) at ../../src/corelib/tools/qhash.h:297 >297 inline bool isEmpty() const { return d->size == 0; } >(gdb) > > > >QMetaObject::removeGuard (ptr=ptr@entry=0x7fff073bb6d0) > at kernel/qobject.cpp:413 >413 if (!hash || hash->isEmpty()) > >(gdb) > >415 QMutexLocker locker(guardHashLock()); > >(gdb) > > >guardHashLock () at kernel/qobject.cpp:386 >386 Q_GLOBAL_STATIC(QMutex, guardHashLock) > >(gdb) >operator! (this=<optimized out>) at kernel/qobject.cpp:386 >386 Q_GLOBAL_STATIC(QMutex, guardHashLock) > >(gdb) > >operator== (value=<optimized out>, this=<optimized out>) > at ../../src/corelib/thread/qbasicatomic.h:154 >154 return _q_value == value; >(gdb) > >guardHashLock () at kernel/qobject.cpp:386 >386 Q_GLOBAL_STATIC(QMutex, guardHashLock) >(gdb) >operator QMutex* (this=<optimized out>) > at ../../src/corelib/thread/qbasicatomic.h:169 >169 return _q_value; >(gdb) >guardHashLock () at kernel/qobject.cpp:386 >386 Q_GLOBAL_STATIC(QMutex, guardHashLock) >(gdb) >QMetaObject::removeGuard (ptr=ptr@entry=0x7fff073bb6d0) > at kernel/qobject.cpp:415 >415 QMutexLocker locker(guardHashLock()); >(gdb) >QMutexLocker (m=<optimized out>, this=<optimized out>) > at ../../src/corelib/thread/qmutex.h:108 >108 if (m) { >(gdb) >QMetaObject::removeGuard (ptr=ptr@entry=0x7fff073bb6d0) > at kernel/qobject.cpp:415 >415 QMutexLocker locker(guardHashLock()); >(gdb) >QMutexLocker (m=0x280eb30, this=<synthetic pointer>) > at ../../src/corelib/thread/qmutex.h:108 >108 if (m) { >(gdb) >109 m->lockInline(); >(gdb) >lockInline (this=0x280eb30) at ../../src/corelib/thread/qmutex.h:187 >187 if (d->recursive) { >(gdb) >189 } else if(!tryLockInline()) { >(gdb) > >tryLockInline (this=0x280eb30) at ../../src/corelib/thread/qmutex.h:189 >189 } else if(!tryLockInline()) { >(gdb) > > >testAndSetAcquire (newValue=1, expectedValue=0, this=0x2819db0) > at ../../src/corelib/thread/qmutex.h:189 >189 } else if(!tryLockInline()) { >(gdb) > > >testAndSetOrdered (newValue=1, expectedValue=0, this=0x2819db0) > at ../../src/corelib/arch/qatomic_x86_64.h:145 >145 : "memory"); >(gdb) > > > >lockInline (this=0x280eb30) at ../../src/corelib/thread/qmutex.h:189 >189 } else if(!tryLockInline()) { >(gdb) > > > >QMetaObject::removeGuard (ptr=ptr@entry=0x7fff073bb6d0) > at kernel/qobject.cpp:416 >416 if (!*ptr) //check again, under the lock > >(gdb) > >415 QMutexLocker locker(guardHashLock()); >(gdb) > > >QMutexLocker (m=0x280eb30, this=<synthetic pointer>) > at ../../src/corelib/thread/qmutex.h:110 >110 val = reinterpret_cast<quintptr>(m) | quintptr(1u); >(gdb) > > > >QMetaObject::removeGuard (ptr=ptr@entry=0x7fff073bb6d0) > at kernel/qobject.cpp:416 >416 if (!*ptr) //check again, under the lock > >(gdb) > >418 GuardHash::iterator it = hash->find(*ptr); >(gdb) > > >find (akey=@0x7fff073bb6d0: 0x2887660, this=0x27b6060) > at kernel/qobject.cpp:418 >418 GuardHash::iterator it = hash->find(*ptr); >(gdb) > >detach (this=0x27b6060) at ../../src/corelib/tools/qhash.h:303 >303 inline void detach() { if (d->ref != 1) detach_helper(); } > >(gdb) > > > >operator!= (value=1, this=0x2819610) > at ../../src/corelib/thread/qbasicatomic.h:75 >75 return _q_value != value; >(gdb) > > >detach (this=0x27b6060) at ../../src/corelib/tools/qhash.h:303 >303 inline void detach() { if (d->ref != 1) detach_helper(); } > >(gdb) > > >find (akey=@0x7fff073bb6d0: 0x2887660, this=0x27b6060) > at ../../src/corelib/tools/qhash.h:868 >868 return iterator(*findNode(akey)); >(gdb) > > > > >QHash<QObject*, QObject**>::findNode (this=this@entry=0x27b6060, > ahp=ahp@entry=0x0, akey=<optimized out>) > at ../../src/corelib/tools/qhash.h:884 >884 if (d->numBuckets) { > >(gdb) > >882 uint h = qHash(akey); >(gdb) > > >qHash<QObject> (key=0x2887660) at ../../src/corelib/tools/qhash.h:882 >882 uint h = qHash(akey); >(gdb) > >qHash (key=42497632) at ../../src/corelib/tools/qhash.h:81 >81 return uint(((key >> (8 * sizeof(uint) - 1)) ^ key) & (~0U)); >(gdb) > > > >QHash<QObject*, QObject**>::findNode (this=this@entry=0x27b6060, > > ahp=ahp@entry=0x0, akey=<optimized out>) > at ../../src/corelib/tools/qhash.h:878 >878 Q_OUTOFLINE_TEMPLATE typename QHash<Key, T>::Node **QHash<Key, T>::findNode(const Key &akey, >(gdb) > >882 uint h = qHash(akey); > >(gdb) > >qHash<QObject> (key=0x2887660) at ../../src/corelib/tools/qhash.h:882 >882 uint h = qHash(akey); >(gdb) > >qHash (key=42497632) at ../../src/corelib/tools/qhash.h:81 >81 return uint(((key >> (8 * sizeof(uint) - 1)) ^ key) & (~0U)); > >(gdb) > > > >QHash<QObject*, QObject**>::findNode (this=this@entry=0x27b6060, > ahp=ahp@entry=0x0, akey=<optimized out>) > at ../../src/corelib/tools/qhash.h:890 >890 node = const_cast<Node **>(reinterpret_cast<const Node * const *>(&e)); >(gdb) > > >882 uint h = qHash(akey); >(gdb) > >qHash<QObject> (key=0x2887660) at ../../src/corelib/tools/qhash.h:882 >882 uint h = qHash(akey); >(gdb) > > >qHash (key=42497632) at ../../src/corelib/tools/qhash.h:81 >81 return uint(((key >> (8 * sizeof(uint) - 1)) ^ key) & (~0U)); >(gdb) > > > >QHash<QObject*, QObject**>::findNode (this=this@entry=0x27b6060, > ahp=ahp@entry=0x0, akey=<optimized out>) > at ../../src/corelib/tools/qhash.h:884 >884 if (d->numBuckets) { > >(gdb) > >885 node = reinterpret_cast<Node **>(&d->buckets[h % d->numBuckets]); > >(gdb) > > >887 while (*node != e && !(*node)->same_key(h, akey)) >(gdb) > > > >same_key (this=0x28b58e0, this=0x28b58e0, key0=<optimized out>, > h0=42497632) at ../../src/corelib/tools/qhash.h:225 >225 inline bool same_key(uint h0, const Key &key0) { return h0 == h && key0 == key; } >(gdb) > > > >892 if (ahp) > >(gdb) > >895 } > >(gdb) > > >QMetaObject::removeGuard (ptr=ptr@entry=0x7fff073bb6d0) > at kernel/qobject.cpp:419 >419 const GuardHash::iterator end = hash->end(); > >(gdb) > >end (this=<optimized out>) at kernel/qobject.cpp:419 >419 const GuardHash::iterator end = hash->end(); >(gdb) > >detach (this=<optimized out>) at ../../src/corelib/tools/qhash.h:303 >303 inline void detach() { if (d->ref != 1) detach_helper(); } >(gdb) > > > >QMetaObject::removeGuard (ptr=ptr@entry=0x7fff073bb6d0) > at kernel/qobject.cpp:418 >418 GuardHash::iterator it = hash->find(*ptr); >(gdb) > > >find (akey=@0x7fff073bb6d0: 0x2887660, this=0x27b6060) > at ../../src/corelib/tools/qhash.h:868 >868 return iterator(*findNode(akey)); >(gdb) > > > >QMetaObject::removeGuard (ptr=ptr@entry=0x7fff073bb6d0) > at kernel/qobject.cpp:419 >419 const GuardHash::iterator end = hash->end(); >(gdb) > >end (this=<optimized out>) at kernel/qobject.cpp:419 >419 const GuardHash::iterator end = hash->end(); >(gdb) > >detach (this=<optimized out>) at kernel/qobject.cpp:419 >419 const GuardHash::iterator end = hash->end(); > >(gdb) > >operator!= (value=<optimized out>, this=<optimized out>) > at ../../src/corelib/thread/qbasicatomic.h:75 >75 return _q_value != value; >(gdb) > > > >detach (this=0x27b6060) at ../../src/corelib/tools/qhash.h:303 >303 inline void detach() { if (d->ref != 1) detach_helper(); } >(gdb) > > > >QMetaObject::removeGuard (ptr=ptr@entry=0x7fff073bb6d0) > at kernel/qobject.cpp:421 >421 for (; it.key() == *ptr && it != end; ++it) { >(gdb) > > >422 if (it.value() == ptr) { >(gdb) >420 bool more = false; //if the QObject has more pointer attached to it. >(gdb) >422 if (it.value() == ptr) { >(gdb) >423 it = hash->erase(it); >(gdb) >QHash<QObject*, QObject**>::erase (this=this@entry=0x27b6060, > it=it@entry=...) at ../../src/corelib/tools/qhash.h:827 >827 Q_OUTOFLINE_TEMPLATE typename QHash<Key, T>::iterator QHash<Key, T>::erase(iterator it) >(gdb) >829 if (it == iterator(e)) >(gdb) >827 Q_OUTOFLINE_TEMPLATE typename QHash<Key, T>::iterator QHash<Key, T>::erase(iterator it) >(gdb) >829 if (it == iterator(e)) >(gdb) >833 ++ret; >(gdb) >operator++ (this=<synthetic pointer>) > at ../../src/corelib/tools/qhash.h:355 >355 i = QHashData::nextNode(i); >(gdb) >QHashData::nextNode (node=node@entry=0x28b58e0) at tools/qhash.cpp:292 >292 next = node->next; >(gdb) >294 if (next->next) >(gdb) >297 int start = (node->h % d->numBuckets) + 1; >(gdb) >298 Node **bucket = d->buckets + start; >(gdb) >297 int start = (node->h % d->numBuckets) + 1; >(gdb) >298 Node **bucket = d->buckets + start; >(gdb) >300 while (n--) { >(gdb) >298 Node **bucket = d->buckets + start; >(gdb) >300 while (n--) { >(gdb) >301 if (*bucket != e) >(gdb) >303 ++bucket; >(gdb) >300 while (n--) { >(gdb) >301 if (*bucket != e) >(gdb) >303 ++bucket; >(gdb) >300 while (n--) { >(gdb) >301 if (*bucket != e) >(gdb) >303 ++bucket; >(gdb) >300 while (n--) { >(gdb) >301 if (*bucket != e) >(gdb) >303 ++bucket; >(gdb) >300 while (n--) { >(gdb) >306 } >(gdb) >QHash<QObject*, QObject**>::erase (this=this@entry=0x27b6060, > it=it@entry=...) at ../../src/corelib/tools/qhash.h:836 >836 Node **node_ptr = reinterpret_cast<Node **>(&d->buckets[node->h % d->numBuckets]); >(gdb) >833 ++ret; >(gdb) >operator++ (this=<synthetic pointer>) > at ../../src/corelib/tools/qhash.h:355 >355 i = QHashData::nextNode(i); >(gdb) >QHash<QObject*, QObject**>::erase (this=this@entry=0x27b6060, > it=it@entry=...) at ../../src/corelib/tools/qhash.h:836 >836 Node **node_ptr = reinterpret_cast<Node **>(&d->buckets[node->h % d->numBuckets]); >(gdb) >837 while (*node_ptr != node) >(gdb) >839 *node_ptr = node->next; >(gdb) >840 deleteNode(node); >(gdb) >deleteNode (node=<optimized out>, this=<optimized out>) > at ../../src/corelib/tools/qhash.h:512 >512 d->freeNode(node); >(gdb) >QHash<QObject*, QObject**>::erase (this=this@entry=0x27b6060, > it=it@entry=...) at ../../src/corelib/tools/qhash.h:839 >839 *node_ptr = node->next; >(gdb) >840 deleteNode(node); >(gdb) >deleteNode (node=0x28b58e0, this=0x27b6060) > at ../../src/corelib/tools/qhash.h:512 >512 d->freeNode(node); >(gdb) >QHashData::freeNode (this=0x2819600, node=0x28b58e0) > at tools/qhash.cpp:186 >186 if (strictAlignment) >(gdb) >187 qFreeAligned(node); >(gdb) >186 if (strictAlignment) >(gdb) >189 qFree(node); >(gdb) >qFree (ptr=0x28b58e0) at global/qmalloc.cpp:60 >60 ::free(ptr); >(gdb) >__GI___libc_free (mem=0x28b58e0) at malloc.c:2885 >2885 = force_reg (__free_hook); >(gdb) >2886 if (__builtin_expect (hook != NULL, 0)) { >(gdb) >2891 if (mem == 0) /* free(0) has no effect */ >(gdb) >2896 if (chunk_is_mmapped(p)) /* release mmapped memory. */ >(gdb) >2894 p = mem2chunk(mem); >(gdb) >2896 if (chunk_is_mmapped(p)) /* release mmapped memory. */ >(gdb) >2910 ar_ptr = arena_for_chunk(p); >(gdb) >2911 _int_free(ar_ptr, p, 0); >(gdb) >_int_free (av=0x3fb3dba780 <main_arena>, p=0x28b58d0, have_lock=0) > at malloc.c:3763 >3763 { >(gdb) >3776 size = chunksize(p); > > > >SNIP > > >(gdb) > > >424 if (!more) more = (it != end && it.key() == *ptr); >(gdb) > > >430 QObjectPrivate::get(*ptr)->hasGuards = false; >(gdb) > > > >~QMutexLocker (this=<synthetic pointer>, __in_chrg=<optimized out>) > at kernel/qobject.cpp:430 >430 QObjectPrivate::get(*ptr)->hasGuards = false; >(gdb) > >unlock (this=<synthetic pointer>) at ../../src/corelib/thread/qmutex.h:119 >119 if ((val & quintptr(1u)) == quintptr(1u)) { > >(gdb) > > >120 val &= ~quintptr(1u); >(gdb) > > >121 mutex()->unlockInline(); >(gdb) > > >unlockInline (this=0x280eb30) at ../../src/corelib/thread/qmutex.h:169 >169 if (d->recursive) { >(gdb) > > > >QMetaObject::removeGuard (ptr=ptr@entry=0x7fff073bb6d0) > at kernel/qobject.cpp:417 >417 return; >(gdb) > >~QMutexLocker (this=<optimized out>, __in_chrg=<optimized out>) > at kernel/qobject.cpp:417 >417 return; >(gdb) > >unlock (this=<optimized out>) at kernel/qobject.cpp:417 >417 return; > >(gdb) > >unlockInline (this=<optimized out>) at kernel/qobject.cpp:417 >417 return; >(gdb) > > >testAndSetRelease (newValue=0, expectedValue=1, this=0x2819db0) > at kernel/qobject.cpp:417 >417 return; >(gdb) > > >testAndSetOrdered (newValue=0, expectedValue=1, this=0x2819db0) > at ../../src/corelib/arch/qatomic_x86_64.h:145 >145 : "memory"); >(gdb) > > > >unlockInline (this=<optimized out>) > at ../../src/corelib/thread/qmutex.h:171 >171 } else if (!d->contenders.testAndSetRelease(1, 0)) { >(gdb) > > > > >QMetaObject::removeGuard (ptr=ptr@entry=0x7fff073bb6d0) > at kernel/qobject.cpp:431 >431 } >(gdb) > > > > >QDBusConnectionPrivate::deliverCall (this=this@entry=0x281d000, > > object=object@entry=0x2887660, msg=..., metaTypes=..., slotIdx=9) > at qdbusintegrator.cpp:955 >955 QDBusContextPrivate::set(object, old); >(gdb) > > >~QDBusContextPrivate (this=0x7fff073bb6e0, __in_chrg=<optimized out>) > at qdbuscontext_p.h:67 >67 class QDBusContextPrivate >(gdb) > > > >QDBusConnection::~QDBusConnection (this=0x7fff073bb6e0, > __in_chrg=<optimized out>) at qdbusconnection.cpp:303 >303 if (d && !d->ref.deref()) >(gdb) > > >deref (this=0x281d010) at ../../src/corelib/arch/qatomic_x86_64.h:133 >133 : "memory"); >(gdb) > > >QDBusConnection::~QDBusConnection (this=0x7fff073bb6e0, > __in_chrg=<optimized out>) at qdbusconnection.cpp:303 >303 if (d && !d->ref.deref()) >(gdb) > > > > >QDBusConnectionPrivate::deliverCall (this=this@entry=0x281d000, > > object=object@entry=0x2887660, msg=..., metaTypes=..., slotIdx=9) > at qdbusintegrator.cpp:960 >960 if (msg.isReplyRequired() && !msg.isDelayedReply()) { > >(gdb) > > > > >QDBusMessage::isReplyRequired (this=this@entry=0x28cc0d0) > at qdbusmessage.cpp:616 >616 if (!d_ptr->msg) >(gdb) > > >615 { >(gdb) > >618 return !q_dbus_message_get_no_reply(d_ptr->msg); >(gdb) > > > > > > > > >q_dbus_message_get_no_reply (message=0x285e3b0) at qdbus_symbols_p.h:209 >209 DEFINEFUNC(dbus_bool_t , dbus_message_get_no_reply, (DBusMessage *message), >(gdb) > > > > > >dbus_message_get_no_reply (message=0x285e3b0) at dbus-message.c:2927 > >2927 _dbus_return_val_if_fail (message != NULL, FALSE); >(gdb) > > >2929 return _dbus_header_get_flag (&message->header, >(gdb) > > > > >_dbus_header_get_flag (header=0x285e3b8, flag=1) > at dbus-marshal-header.c:1484 >1484 return (*flags_p & flag) != 0; >(gdb) > > > >1485 } >(gdb) > > > >QDBusMessage::isReplyRequired (this=this@entry=0x28cc0d0) > at qdbusmessage.cpp:618 >618 return !q_dbus_message_get_no_reply(d_ptr->msg); >(gdb) > >619 } >(gdb) > > > > >QDBusMessage::isDelayedReply (this=this@entry=0x28cc0d0) > at qdbusmessage.cpp:647 >647 return d_ptr->delayedReply; >(gdb) > > >648 } >(gdb) > >QDBusConnectionPrivate::deliverCall (this=this@entry=0x281d000, > object=object@entry=0x2887660, msg=..., metaTypes=..., slotIdx=9) > at qdbusintegrator.cpp:961 >961 if (!fail) { >(gdb) >963 qDBusDebug() << this << "Automatically sending reply:" << outputArgs; >(gdb) >964 send(msg.createReply(outputArgs)); >(gdb) >QDBusMessage::createReply (this=this@entry=0x28cc0d0, arguments=...) > at qdbusmessage.cpp:445 >445 { >(gdb) >446 QDBusMessage reply; >(gdb) >QDBusMessage::QDBusMessage (this=0x7fff073bb680) at qdbusmessage.cpp:513 >513 QDBusMessage::QDBusMessage() >(gdb) >515 d_ptr = new QDBusMessagePrivate; >(gdb) >513 QDBusMessage::QDBusMessage() >(gdb) >515 d_ptr = new QDBusMessagePrivate; >(gdb) >operator new (sz=sz@entry=96) > at ../../../../libstdc++-v3/libsupc++/new_op.cc:45 >45 { >(gdb) >50 sz = 1; >(gdb) >45 { >(gdb) >50 sz = 1; >(gdb) >51 p = (void *) malloc (sz); >(gdb) >__GI___libc_malloc (bytes=140733314741888) at malloc.c:2849 >2849 { >(gdb) >2854 = force_reg (__malloc_hook); >(gdb) >2855 if (__builtin_expect (hook != NULL, 0)) >(gdb) >2858 arena_lookup(ar_ptr); >(gdb) >2860 arena_lock(ar_ptr, bytes); >(gdb) >2863 victim = _int_malloc(ar_ptr, bytes); >(gdb) >_int_malloc (av=0x3fb3dba780 <main_arena>, bytes=96) at malloc.c:3266 >3266 { >(gdb) >3296 checked_request2size(bytes, nb); >(gdb) >3266 { >(gdb) >3296 checked_request2size(bytes, nb); >(gdb) >3304 if ((unsigned long)(nb) <= (unsigned long)(get_max_fast ())) { >(gdb) >3305 idx = fastbin_index(nb); >(gdb) >3306 mfastbinptr* fb = &fastbin (av, idx); >(gdb) >3307 mchunkptr pp = *fb; >(gdb) >3306 mfastbinptr* fb = &fastbin (av, idx); >(gdb) >3311 if (victim == NULL) >(gdb) >3314 while ((pp = catomic_compare_and_exchange_val_acq (fb, victim->fd, victim)) >(gdb) >3315 != victim); >(gdb) >3314 while ((pp = catomic_compare_and_exchange_val_acq (fb, victim->fd, victim)) >(gdb) >3315 != victim); >(gdb) >3317 if (__builtin_expect (fastbin_index (chunksize (victim)) != idx, 0)) >(gdb) >3694 if (__builtin_expect (perturb_byte, 0)) >(gdb) >3693 void *p = chunk2mem(victim); >(gdb) >3694 if (__builtin_expect (perturb_byte, 0)) >(gdb) >3755 } >(gdb) >__GI___libc_malloc (bytes=96) at malloc.c:2864 >2864 if(!victim) { >(gdb) >2863 victim = _int_malloc(ar_ptr, bytes); >(gdb) > >2864 if(!victim) { >(gdb) >2871 (void)mutex_unlock(&ar_ptr->mutex); >(gdb) >2875 } >(gdb) >operator new (sz=sz@entry=96) > at ../../../../libstdc++-v3/libsupc++/new_op.cc:52 >52 while (p == 0) >(gdb) >62 } >(gdb) >QDBusMessagePrivate::QDBusMessagePrivate (this=0x28cc0f0) > at qdbusmessage.cpp:68 >68 parametersValidated(false), autoStartService(true) >(gdb) >QList (this=0x28cc0f0) at ../../src/corelib/tools/qlist.h:121 >121 inline QList() : d(&QListData::shared_null) { d->ref.ref(); } >(gdb) > > >ref (this=<optimized out>) at ../../src/corelib/arch/qatomic_x86_64.h:121 >121 : "memory"); >(gdb) > > >QDBusMessagePrivate::QDBusMessagePrivate (this=0x28cc0f0) > at qdbusmessage.cpp:68 >68 parametersValidated(false), autoStartService(true) >(gdb) > >QString (this=0x28cc0f8) at ../../src/corelib/tools/qstring.h:879 >879 inline QString::QString() : d(&shared_null) { d->ref.ref(); } >(gdb) > > >ref (this=<optimized out>) at ../../src/corelib/arch/qatomic_x86_64.h:121 >121 : "memory"); >(gdb) > > >QDBusMessagePrivate::QDBusMessagePrivate (this=0x28cc0f0) > at qdbusmessage.cpp:68 >68 parametersValidated(false), autoStartService(true) >(gdb) > >QString (this=0x28cc100) at ../../src/corelib/tools/qstring.h:879 >879 inline QString::QString() : d(&shared_null) { d->ref.ref(); } >(gdb) >ref (this=<optimized out>) at ../../src/corelib/arch/qatomic_x86_64.h:121 >121 : "memory"); >(gdb) >QDBusMessagePrivate::QDBusMessagePrivate (this=0x28cc0f0) > at qdbusmessage.cpp:68 >68 parametersValidated(false), autoStartService(true) >(gdb) >QString (this=0x28cc108) at ../../src/corelib/tools/qstring.h:879 >879 inline QString::QString() : d(&shared_null) { d->ref.ref(); } >(gdb) >ref (this=<optimized out>) at ../../src/corelib/arch/qatomic_x86_64.h:121 >121 : "memory"); >(gdb) >QDBusMessagePrivate::QDBusMessagePrivate (this=0x28cc0f0) > at qdbusmessage.cpp:68 >68 parametersValidated(false), autoStartService(true) > >(gdb) >QString (this=0x28cc110) at ../../src/corelib/tools/qstring.h:879 >879 inline QString::QString() : d(&shared_null) { d->ref.ref(); } >(gdb) >ref (this=<optimized out>) at ../../src/corelib/arch/qatomic_x86_64.h:121 >121 : "memory"); >(gdb) >QDBusMessagePrivate::QDBusMessagePrivate (this=0x28cc0f0) > at qdbusmessage.cpp:68 >68 parametersValidated(false), autoStartService(true) >(gdb) >QString (this=0x28cc118) at ../../src/corelib/tools/qstring.h:879 >879 inline QString::QString() : d(&shared_null) { d->ref.ref(); } >(gdb) >ref (this=<optimized out>) at ../../src/corelib/arch/qatomic_x86_64.h:121 >121 : "memory"); >(gdb) >QDBusMessagePrivate::QDBusMessagePrivate (this=0x28cc0f0) > at qdbusmessage.cpp:68 >68 parametersValidated(false), autoStartService(true) >(gdb) >QString (this=0x28cc120) at ../../src/corelib/tools/qstring.h:879 >879 inline QString::QString() : d(&shared_null) { d->ref.ref(); } >(gdb) >ref (this=<optimized out>) at ../../src/corelib/arch/qatomic_x86_64.h:121 >121 : "memory"); >(gdb) >QDBusMessagePrivate::QDBusMessagePrivate (this=0x28cc0f0) > at qdbusmessage.cpp:68 >68 parametersValidated(false), autoStartService(true) >(gdb) > >QAtomicInt (value=1, this=0x28cc148) > at ../../src/corelib/thread/qatomic.h:63 >63 _q_value = value; >(gdb) >QDBusMessagePrivate::QDBusMessagePrivate (this=0x28cc0f0) > at qdbusmessage.cpp:68 >68 parametersValidated(false), autoStartService(true) >(gdb) >QDBusMessage::QDBusMessage (this=0x7fff073bb680) at qdbusmessage.cpp:516 >516 } >(gdb) >QDBusMessage::createReply (this=this@entry=0x28cc0d0, arguments=...) > at qdbusmessage.cpp:447 >447 reply.setArguments(arguments); >(gdb) >QDBusMessage::setArguments (this=0x7fff073bb680, arguments=...) > at qdbusmessage.cpp:696 >696 { >(gdb) >698 d_ptr->arguments = arguments; >(gdb) >operator= (l=..., this=0x28cc0f0) at ../../src/corelib/tools/qlist.h:439 >439 if (d != l.d) { >(gdb) > >QDBusMessage::setArguments (this=<optimized out>, arguments=...) > at qdbusmessage.cpp:699 >699 } >(gdb) >QDBusMessage::createReply (this=this@entry=0x28cc0d0, arguments=...) > at qdbusmessage.cpp:449 >449 if (d_ptr->msg) >(gdb) >448 reply.d_ptr->type = DBUS_MESSAGE_TYPE_METHOD_RETURN; >(gdb) >449 if (d_ptr->msg) >(gdb) >448 reply.d_ptr->type = DBUS_MESSAGE_TYPE_METHOD_RETURN; >(gdb) >449 if (d_ptr->msg) >(gdb) >450 reply.d_ptr->reply = q_dbus_message_ref(d_ptr->msg); >(gdb) >q_dbus_message_ref (message=0x285e3b0) at qdbus_symbols_p.h:273 >273 DEFINEFUNC(DBusMessage* , dbus_message_ref, (DBusMessage *message), >(gdb) > >dbus_message_ref (message=0x285e3b0) at dbus-message.c:1593 >1593 _dbus_return_val_if_fail (message != NULL, NULL); >(gdb) >1590 { >(gdb) >1593 _dbus_return_val_if_fail (message != NULL, NULL); >(gdb) >1594 _dbus_return_val_if_fail (message->generation == _dbus_current_generation, NULL); >(gdb) > >1595 _dbus_return_val_if_fail (!message->in_cache, NULL); >(gdb) >1597 old_refcount = _dbus_atomic_inc (&message->refcount); >(gdb) >_dbus_atomic_inc (atomic=atomic@entry=0x285e3b0) > at dbus-sysdeps-unix.c:2443 >2443 return __sync_add_and_fetch(&atomic->value, 1)-1; >(gdb) >2452 } >(gdb) > >dbus_message_ref (message=0x285e3b0) at dbus-message.c:1601 >1601 return message; >(gdb) >1602 } >(gdb) >QDBusMessage::createReply (this=this@entry=0x28cc0d0, arguments=...) > at qdbusmessage.cpp:450 >450 reply.d_ptr->reply = q_dbus_message_ref(d_ptr->msg); >(gdb) >451 if (d_ptr->localMessage) { >(gdb) >459 } >(gdb) >QDBusConnectionPrivate::send (this=this@entry=0x281d000, message=...) > at qdbusintegrator.cpp:1843 >1843 { >(gdb) >1844 if (QDBusMessagePrivate::isLocal(message)) >(gdb) >1843 { >(gdb) > >1844 if (QDBusMessagePrivate::isLocal(message)) >(gdb) >QDBusMessagePrivate::isLocal (message=...) at qdbusmessage.cpp:252 >252 return message.d_ptr->localMessage; >(gdb) >253 } >(gdb) >QDBusConnectionPrivate::send (this=this@entry=0x281d000, message=...) > at qdbusintegrator.cpp:1848 >1848 QDBusError error; >(gdb) >1849 DBusMessage *msg = QDBusMessagePrivate::toDBusMessage(message, capabilities, &error); >(gdb) >1848 QDBusError error; >(gdb) > >QDBusError::QDBusError (this=0x7fff073bb530, error=0x0) > at qdbuserror.cpp:246 >246 QDBusError::QDBusError(const DBusError *error) >(gdb) >247 : code(NoError) >(gdb) >QString (this=<optimized out>) at ../../src/corelib/tools/qstring.h:879 >879 inline QString::QString() : d(&shared_null) { d->ref.ref(); } >(gdb) >QDBusError::QDBusError (this=0x7fff073bb530, error=0x0) > at qdbuserror.cpp:247 >247 : code(NoError) >(gdb) >QString (this=0x7fff073bb538) at ../../src/corelib/tools/qstring.h:879 >879 inline QString::QString() : d(&shared_null) { d->ref.ref(); } > >(gdb) >ref (this=<optimized out>) at ../../src/corelib/arch/qatomic_x86_64.h:121 >121 : "memory"); >(gdb) >QDBusError::QDBusError (this=0x7fff073bb530, error=0x0) > at qdbuserror.cpp:247 >247 : code(NoError) >(gdb) >QString (this=0x7fff073bb540) at ../../src/corelib/tools/qstring.h:879 >879 inline QString::QString() : d(&shared_null) { d->ref.ref(); } >(gdb) >ref (this=<optimized out>) at ../../src/corelib/arch/qatomic_x86_64.h:121 >121 : "memory"); >(gdb) >QDBusError::QDBusError (this=0x7fff073bb530, error=0x0) > at qdbuserror.cpp:249 >249 if (!error || !q_dbus_error_is_set(error)) >(gdb) >255 } >(gdb) > >QDBusConnectionPrivate::send (this=this@entry=0x281d000, message=...) > at qdbusintegrator.cpp:1849 >1849 DBusMessage *msg = QDBusMessagePrivate::toDBusMessage(message, capabilities, &error); >(gdb) >QFlags (f=..., this=0x7fff073bb520) > at ../../src/corelib/global/qglobal.h:2311 >2311 Q_DECL_CONSTEXPR inline QFlags(const QFlags &f) : i(f.i) {} >(gdb) >QDBusConnectionPrivate::send (this=this@entry=0x281d000, message=...) > at qdbusintegrator.cpp:1849 >1849 DBusMessage *msg = QDBusMessagePrivate::toDBusMessage(message, capabilities, &error); >(gdb) >QFlags (f=..., this=0x7fff073bb520) > at ../../src/corelib/global/qglobal.h:2311 >2311 Q_DECL_CONSTEXPR inline QFlags(const QFlags &f) : i(f.i) {} >(gdb) >QDBusConnectionPrivate::send (this=this@entry=0x281d000, message=...) > at qdbusintegrator.cpp:1849 >1849 DBusMessage *msg = QDBusMessagePrivate::toDBusMessage(message, capabilities, &error); >(gdb) >QDBusMessagePrivate::toDBusMessage (message=..., capabilities=..., > error=error@entry=0x7fff073bb530) at qdbusmessage.cpp:107 >107 { >(gdb) >114 const QDBusMessagePrivate *d_ptr = message.d_ptr; >(gdb) >107 { >(gdb) >116 switch (d_ptr->type) { >(gdb) >138 msg = q_dbus_message_new(DBUS_MESSAGE_TYPE_METHOD_RETURN); >(gdb) >q_dbus_message_new (message_type=2) at qdbus_symbols_p.h:262 >262 DEFINEFUNC(DBusMessage* , dbus_message_new, (int message_type), >(gdb) >dbus_message_new (message_type=2) at dbus-message.c:1212 >1212 { > >(gdb) >1215 _dbus_return_val_if_fail (message_type != DBUS_MESSAGE_TYPE_INVALID, NULL); >(gdb) >1217 message = dbus_message_new_empty_header (); >(gdb) >dbus_message_new_empty_header () at dbus-message.c:1127 >1127 { >(gdb) >1131 message = dbus_message_get_cached (); >(gdb) >dbus_message_get_cached () at dbus-message.c:551 >551 _DBUS_LOCK (message_cache); >(gdb) > >_dbus_rmutex_lock (mutex=0x28197d0) at dbus-threads.c:175 >175 if (mutex && thread_init_generation == _dbus_current_generation) >(gdb) > >176 _dbus_platform_rmutex_lock (mutex); >(gdb) > >_dbus_platform_rmutex_lock (mutex=0x28197d0) at dbus-sysdeps-pthread.c:156 >156 PTHREAD_CHECK ("pthread_mutex_lock", pthread_mutex_lock (&mutex->lock)); >(gdb) > > >__GI___pthread_mutex_lock (mutex=0x28197d0) at pthread_mutex_lock.c:50 >50 unsigned int type = PTHREAD_MUTEX_TYPE (mutex); >(gdb) >47 { >(gdb) >50 unsigned int type = PTHREAD_MUTEX_TYPE (mutex); >(gdb) >52 LIBC_PROBE (mutex_entry, 1, mutex); >(gdb) >54 if (__builtin_expect (type & ~PTHREAD_MUTEX_KIND_MASK_NP, 0)) >(gdb) >57 pid_t id = THREAD_GETMEM (THREAD_SELF, tid); >(gdb) >59 if (__builtin_expect (type, PTHREAD_MUTEX_TIMED_NP) >(gdb) >67 else if (__builtin_expect (type == PTHREAD_MUTEX_RECURSIVE_NP, 1)) >(gdb) >72 if (mutex->__data.__owner == id) >(gdb) >85 LLL_MUTEX_LOCK (mutex); >(gdb) >88 mutex->__data.__count = 1; >(gdb) >128 mutex->__data.__owner = id; >(gdb) >130 ++mutex->__data.__nusers; >(gdb) >133 LIBC_PROBE (mutex_acquired, 1, mutex); >(gdb) >135 return 0; >(gdb) >dbus_message_get_cached () at dbus-message.c:555 >555 if (message_cache_count == 0) >(gdb) >570 if (message_cache[i]) >(gdb) >568 while (i < MAX_MESSAGE_CACHE_SIZE) >(gdb) >570 if (message_cache[i]) >(gdb) >dbus_message_new_empty_header () at dbus-message.c:1131 >1131 message = dbus_message_get_cached (); >(gdb) >dbus_message_get_cached () at dbus-message.c:587 >587 _DBUS_UNLOCK (message_cache); >(gdb) >573 message_cache[i] = NULL; >(gdb) >574 message_cache_count -= 1; >(gdb) >573 message_cache[i] = NULL; >(gdb) >587 _DBUS_UNLOCK (message_cache); >(gdb) > >_dbus_rmutex_unlock (mutex=0x28197d0) at dbus-threads.c:199 >199 if (mutex && thread_init_generation == _dbus_current_generation) >(gdb) > >200 _dbus_platform_rmutex_unlock (mutex); >(gdb) > >_dbus_platform_rmutex_unlock (mutex=0x28197d0) > at dbus-sysdeps-pthread.c:168 >168 PTHREAD_CHECK ("pthread_mutex_unlock", pthread_mutex_unlock (&mutex->lock)); >(gdb) > >__GI___pthread_mutex_unlock (mutex=0x28197d0) > at pthread_mutex_unlock.c:297 > >297 return __pthread_mutex_unlock_usercnt (mutex, 1); >(gdb) > >__pthread_mutex_unlock_usercnt (decr=1, mutex=0x28197d0) > at pthread_mutex_unlock.c:296 >296 { >(gdb) > >297 return __pthread_mutex_unlock_usercnt (mutex, 1); >(gdb) > >__pthread_mutex_unlock_usercnt (decr=1, mutex=0x28197d0) > at pthread_mutex_unlock.c:37 >37 int type = PTHREAD_MUTEX_TYPE (mutex); >(gdb) >38 if (__builtin_expect (type & ~PTHREAD_MUTEX_KIND_MASK_NP, 0)) >(gdb) > >37 int type = PTHREAD_MUTEX_TYPE (mutex); >(gdb) >38 if (__builtin_expect (type & ~PTHREAD_MUTEX_KIND_MASK_NP, 0)) > >(gdb) >41 if (__builtin_expect (type, PTHREAD_MUTEX_TIMED_NP) >(gdb) >58 else if (__builtin_expect (type == PTHREAD_MUTEX_RECURSIVE_NP, 1)) >(gdb) >61 if (mutex->__data.__owner != THREAD_GETMEM (THREAD_SELF, tid)) >(gdb) >64 if (--mutex->__data.__count != 0) >(gdb) >46 mutex->__data.__owner = 0; >(gdb) >49 --mutex->__data.__nusers; >(gdb) >52 lll_unlock (mutex->__data.__lock, PTHREAD_MUTEX_PSHARED (mutex)); >(gdb) >54 LIBC_PROBE (mutex_release, 1, mutex); >(gdb) >__GI___pthread_mutex_unlock (mutex=0x28197d0) > at pthread_mutex_unlock.c:298 >298 } >(gdb) >dbus_message_new_empty_header () at dbus-message.c:1153 >1153 _dbus_atomic_inc (&message->refcount); >(gdb) > >_dbus_atomic_inc (atomic=atomic@entry=0x285aa50) > at dbus-sysdeps-unix.c:2443 >2443 return __sync_add_and_fetch(&atomic->value, 1)-1; >(gdb) >2452 } >(gdb) >dbus_message_new_empty_header () at dbus-message.c:1159 >1159 message->in_cache = FALSE; >(gdb) >1163 message->changed_stamp = 0; >(gdb) >1176 _dbus_header_reinit (&message->header); >(gdb) >1161 message->counters = NULL; >(gdb) >1162 message->size_counter_delta = 0; >(gdb) >1166 message->n_unix_fds = 0; >(gdb) >1167 message->n_unix_fds_allocated = 0; >(gdb) >1168 message->unix_fd_counter_delta = 0; >(gdb) >1176 _dbus_header_reinit (&message->header); >(gdb) >_dbus_header_reinit (header=header@entry=0x285aa58) > at dbus-marshal-header.c:442 >442 { > >(gdb) >443 _dbus_string_set_length (&header->data, 0); >(gdb) >442 { >(gdb) >443 _dbus_string_set_length (&header->data, 0); >(gdb) > >_dbus_string_set_length (str=str@entry=0x285aa58, length=length@entry=0) > at dbus-string.c:786 >786 return set_length (real, length); >(gdb) > >set_length (real=real@entry=0x285aa58, new_length=new_length@entry=0) > at dbus-string.c:378 >378 { >(gdb) > >382 if (_DBUS_UNLIKELY (new_length > _DBUS_STRING_MAX_LENGTH)) >(gdb) >378 { >(gdb) >382 if (_DBUS_UNLIKELY (new_length > _DBUS_STRING_MAX_LENGTH)) >(gdb) >384 else if (new_length > (real->allocated - _DBUS_STRING_ALLOCATION_PADDING) && >(gdb) >390 real->str[new_length] = '\0'; >(gdb) >389 real->len = new_length; >(gdb) >390 real->str[new_length] = '\0'; >(gdb) >391 return TRUE; >(gdb) >393 } >(gdb) > >_dbus_header_reinit (header=header@entry=0x285aa58) > at dbus-marshal-header.c:445 >445 header->padding = 0; >(gdb) >447 _dbus_header_cache_invalidate_all (header); >(gdb) >_dbus_header_cache_invalidate_all (header=0x285aa58) > at dbus-marshal-header.c:141 >141 header->fields[i].value_pos = _DBUS_HEADER_FIELD_VALUE_UNKNOWN; >(gdb) >139 while (i <= DBUS_HEADER_FIELD_LAST) >(gdb) >_dbus_header_reinit (header=header@entry=0x285aa58) > at dbus-marshal-header.c:447 >447 _dbus_header_cache_invalidate_all (header); >(gdb) >_dbus_header_cache_invalidate_all (header=0x285aa58) > at dbus-marshal-header.c:141 >141 header->fields[i].value_pos = _DBUS_HEADER_FIELD_VALUE_UNKNOWN; >(gdb) >139 while (i <= DBUS_HEADER_FIELD_LAST) >(gdb) >_dbus_header_reinit (header=header@entry=0x285aa58) > at dbus-marshal-header.c:447 >447 _dbus_header_cache_invalidate_all (header); >(gdb) >_dbus_header_cache_invalidate_all (header=0x285aa58) > at dbus-marshal-header.c:141 >141 header->fields[i].value_pos = _DBUS_HEADER_FIELD_VALUE_UNKNOWN; >(gdb) >139 while (i <= DBUS_HEADER_FIELD_LAST) >(gdb) >_dbus_header_reinit (header=header@entry=0x285aa58) > at dbus-marshal-header.c:447 >447 _dbus_header_cache_invalidate_all (header); >(gdb) >_dbus_header_cache_invalidate_all (header=0x285aa58) > at dbus-marshal-header.c:141 >141 header->fields[i].value_pos = _DBUS_HEADER_FIELD_VALUE_UNKNOWN; >(gdb) >139 while (i <= DBUS_HEADER_FIELD_LAST) >(gdb) >_dbus_header_reinit (header=header@entry=0x285aa58) > at dbus-marshal-header.c:447 >447 _dbus_header_cache_invalidate_all (header); >(gdb) >_dbus_header_cache_invalidate_all (header=0x285aa58) > at dbus-marshal-header.c:141 >141 header->fields[i].value_pos = _DBUS_HEADER_FIELD_VALUE_UNKNOWN; >(gdb) >139 while (i <= DBUS_HEADER_FIELD_LAST) >(gdb) >_dbus_header_reinit (header=header@entry=0x285aa58) > at dbus-marshal-header.c:447 >447 _dbus_header_cache_invalidate_all (header); >(gdb) >_dbus_header_cache_invalidate_all (header=0x285aa58) > at dbus-marshal-header.c:141 >141 header->fields[i].value_pos = _DBUS_HEADER_FIELD_VALUE_UNKNOWN; >(gdb) >139 while (i <= DBUS_HEADER_FIELD_LAST) >(gdb) >_dbus_header_reinit (header=header@entry=0x285aa58) > at dbus-marshal-header.c:447 >447 _dbus_header_cache_invalidate_all (header); >(gdb) >_dbus_header_cache_invalidate_all (header=0x285aa58) > at dbus-marshal-header.c:141 >141 header->fields[i].value_pos = _DBUS_HEADER_FIELD_VALUE_UNKNOWN; >(gdb) >139 while (i <= DBUS_HEADER_FIELD_LAST) >(gdb) >_dbus_header_reinit (header=header@entry=0x285aa58) > at dbus-marshal-header.c:447 >447 _dbus_header_cache_invalidate_all (header); >(gdb) >_dbus_header_cache_invalidate_all (header=0x285aa58) > at dbus-marshal-header.c:141 >141 header->fields[i].value_pos = _DBUS_HEADER_FIELD_VALUE_UNKNOWN; >(gdb) >139 while (i <= DBUS_HEADER_FIELD_LAST) >(gdb) >_dbus_header_reinit (header=header@entry=0x285aa58) > at dbus-marshal-header.c:447 >447 _dbus_header_cache_invalidate_all (header); >(gdb) >_dbus_header_cache_invalidate_all (header=0x285aa58) > at dbus-marshal-header.c:141 >141 header->fields[i].value_pos = _DBUS_HEADER_FIELD_VALUE_UNKNOWN; >(gdb) >139 while (i <= DBUS_HEADER_FIELD_LAST) >(gdb) >_dbus_header_reinit (header=header@entry=0x285aa58) > at dbus-marshal-header.c:447 >447 _dbus_header_cache_invalidate_all (header); >(gdb) >_dbus_header_cache_invalidate_all (header=0x285aa58) > at dbus-marshal-header.c:141 >141 header->fields[i].value_pos = _DBUS_HEADER_FIELD_VALUE_UNKNOWN; >(gdb) >139 while (i <= DBUS_HEADER_FIELD_LAST) >(gdb) >_dbus_header_reinit (header=header@entry=0x285aa58) > at dbus-marshal-header.c:448 >448 } >(gdb) >dbus_message_new_empty_header () at dbus-message.c:1177 >1177 _dbus_string_set_length (&message->body, 0); >(gdb) > >_dbus_string_set_length (str=str@entry=0x285aaa0, length=length@entry=0) > at dbus-string.c:786 >786 return set_length (real, length); >(gdb) > >set_length (real=real@entry=0x285aaa0, new_length=new_length@entry=0) > at dbus-string.c:378 >378 { >(gdb) >382 if (_DBUS_UNLIKELY (new_length > _DBUS_STRING_MAX_LENGTH)) >(gdb) >378 { >(gdb) >382 if (_DBUS_UNLIKELY (new_length > _DBUS_STRING_MAX_LENGTH)) >(gdb) >384 else if (new_length > (real->allocated - _DBUS_STRING_ALLOCATION_PADDING) && >(gdb) >390 real->str[new_length] = '\0'; >(gdb) >389 real->len = new_length; >(gdb) >390 real->str[new_length] = '\0'; >(gdb) >391 return TRUE; >(gdb) >393 } >(gdb) >dbus_message_new_empty_header () at dbus-message.c:1196 >1196 } >(gdb) >dbus_message_new (message_type=2) at dbus-message.c:1218 >1218 if (message == NULL) >(gdb) >1217 message = dbus_message_new_empty_header (); >(gdb) >1218 if (message == NULL) >(gdb) >1221 if (!_dbus_header_create (&message->header, >(gdb) > >_dbus_header_create (header=header@entry=0x285aa58, > byte_order=byte_order@entry=108, message_type=message_type@entry=2, > destination=destination@entry=0x0, path=path@entry=0x0, > > interface=interface@entry=0x0, member=member@entry=0x0, > error_name=error_name@entry=0x0) at dbus-marshal-header.c:534 >534 { >(gdb) >547 if (!reserve_header_padding (header)) >(gdb) > >reserve_header_padding (header=0x285aa58, header@entry=0x285aa60) > at dbus-marshal-header.c:100 >100 MAX_POSSIBLE_HEADER_PADDING - header->padding)) >(gdb) > >_dbus_header_create (header=header@entry=0x285aa58, > byte_order=byte_order@entry=108, message_type=message_type@entry=2, > destination=destination@entry=0x0, path=path@entry=0x0, > > interface=interface@entry=0x0, member=member@entry=0x0, > error_name=error_name@entry=0x0) at dbus-marshal-header.c:534 >534 { >(gdb) >547 if (!reserve_header_padding (header)) >(gdb) > >reserve_header_padding (header=0x285aa58, header@entry=0x285aa60) > at dbus-marshal-header.c:99 >99 if (!_dbus_string_lengthen (&header->data, >(gdb) > >_dbus_string_lengthen (str=str@entry=0x285aa58, additional_length=7) > at dbus-string.c:744 >744 if (_DBUS_UNLIKELY (additional_length > _DBUS_STRING_MAX_LENGTH - real->len)) >(gdb) > >747 return set_length (real, >(gdb) > >set_length (real=real@entry=0x285aa58, new_length=7) at dbus-string.c:378 >378 { >(gdb) > >382 if (_DBUS_UNLIKELY (new_length > _DBUS_STRING_MAX_LENGTH)) >(gdb) >378 { >(gdb) >382 if (_DBUS_UNLIKELY (new_length > _DBUS_STRING_MAX_LENGTH)) >(gdb) >384 else if (new_length > (real->allocated - _DBUS_STRING_ALLOCATION_PADDING) && >(gdb) >390 real->str[new_length] = '\0'; >(gdb) >389 real->len = new_length; >(gdb) >390 real->str[new_length] = '\0'; >(gdb) >391 return TRUE; >(gdb) >393 } >(gdb) > >_dbus_header_create (header=header@entry=0x285aa58, > byte_order=byte_order@entry=108, message_type=message_type@entry=2, > destination=destination@entry=0x0, path=path@entry=0x0, > interface=interface@entry=0x0, member=member@entry=0x0, > error_name=error_name@entry=0x0) at dbus-marshal-header.c:548 >548 return FALSE; >(gdb) > >547 if (!reserve_header_padding (header)) >(gdb) > >reserve_header_padding (header=0x285aa58, header@entry=0x285aa60) > at dbus-marshal-header.c:99 >99 if (!_dbus_string_lengthen (&header->data, >(gdb) >_dbus_header_create (header=header@entry=0x285aa58, > byte_order=byte_order@entry=108, message_type=message_type@entry=2, > destination=destination@entry=0x0, path=path@entry=0x0, > interface=interface@entry=0x0, member=member@entry=0x0, > error_name=error_name@entry=0x0) at dbus-marshal-header.c:550 >550 _dbus_type_writer_init_values_only (&writer, byte_order, >(gdb) >547 if (!reserve_header_padding (header)) >(gdb) >reserve_header_padding (header=0x285aa58, header@entry=0x285aa60) > at dbus-marshal-header.c:102 >102 header->padding = MAX_POSSIBLE_HEADER_PADDING; > > >----------------------------------------- >Now I decided to let it continue, to see whether the shutdown works without stepping manually. >Output was: >----------------------------------------- > >(gdb) c >Continuing. > >Program received signal SIGPIPE, Broken pipe. >0x0000003fb420e05d in write () at ../sysdeps/unix/syscall-template.S:81 >81 T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS) > > >----------------------------------------- >And the other terminal that executed "qdbus org.kde.ksmserver /KSMServer logout 0 2 2" said: >----------------------------------------- > > >Error: org.freedesktop.DBus.Error.NoReply >Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken. > > > >----------------------------------------- >No shutdown was performed after this attempt. >----------------------------------------- > > > > >Attempt 2 >_________ > >----------------------------------------- >Trying again without stepping: >----------------------------------------- > > >(gdb) break KSMServer::logout(int,int,int) >Breakpoint 1 at 0x3f28627ee0: file /usr/src/debug/kde-workspace-4.11.3/ksmserver/shutdown.cpp, line 88. >(gdb) c >Continuing. > >Breakpoint 1, KSMServer::logout (this=0x2871620, confirm=0, sdtype=2, > sdmode=2) > at /usr/src/debug/kde-workspace-4.11.3/ksmserver/shutdown.cpp:88 >88 sdtype = KWorkSpace::ShutdownTypeNone; >(gdb) c >Continuing. > > >----------------------------------------- >gdb keeps busy, I can not do 'Ctrl+D' in the terminal. >----------------------------------------- > > >----------------------------------------- >When I do 'Ctrl+C' in the terminal, I get: >----------------------------------------- > >^C >Program received signal SIGINT, Interrupt. >0x0000003fb3aeb7fd in poll () at ../sysdeps/unix/syscall-template.S:81 >81 T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS) >(gdb) > > >----------------------------------------- >And the other terminal that executed "qdbus org.kde.ksmserver /KSMServer logout 0 2 2" did end without warning. >However, again, no shutdown was performed after this attempt. >----------------------------------------- >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 983110
:
788563
| 833866 |
833895
|
915731