https://bugs.kde.org/show_bug.cgi?id=361702
Mihai DONȚU changed:
What|Removed |Added
CC||mihai.do...@gmail.com
--- Comment #4 from Mihai DONȚU ---
I have the same issue and it's been happening for a while now. I just now got
the time to take a closer look. It would appear the application exits while
leaving taken semaphore in its path, leading to a deadlock when cleaning up:
#0 pthread_cond_wait () at
../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1 0x7fbb9e5ebefa in QWaitConditionPrivate::wait
(time=18446744073709551615, this=0xad6f20) at
thread/qwaitcondition_unix.cpp:136
#2 QWaitCondition::wait (this=this@entry=0xad7298, mutex=mutex@entry=0xad7290,
time=time@entry=18446744073709551615) at thread/qwaitcondition_unix.cpp:208
#3 0x7fbb9e5e609b in QSemaphore::acquire (this=this@entry=0x7ffec6742f40,
n=n@entry=1) at thread/qsemaphore.cpp:137
#4 0x7fbb9e7b192f in QMetaObject::activate (sender=sender@entry=0xad8080,
signalOffset=, local_signal_index=local_signal_index@entry=0,
argv=argv@entry=0x7ffec6742fd0) at kernel/qobject.cpp:3698
#5 0x7fbb9e7b1fc7 in QMetaObject::activate (sender=sender@entry=0xad8080,
m=m@entry=0x7fbb9e9c0d60 ,
local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffec6742fd0)
at kernel/qobject.cpp:3595
#6 0x7fbb9e7b206f in QObject::destroyed (this=this@entry=0xad8080,
_t1=_t1@entry=0xad8080) at .moc/moc_qobject.cpp:213
#7 0x7fbb9e7b8d65 in QObject::~QObject (this=,
__in_chrg=) at kernel/qobject.cpp:913
#8 0x7fbb92f83c39 in Breeze::Style::~Style() () from
/usr/lib64/qt5/plugins/styles/breeze.so
#9 0x7fbb9e7b1a0e in QtPrivate::QSlotObjectBase::call (a=0x7ffec67431d0,
r=0xad8080, this=) at
../../include/QtCore/../../src/corelib/kernel/qobject_impl.h:124
#10 QMetaObject::activate (sender=sender@entry=0xad8450,
signalOffset=, local_signal_index=local_signal_index@entry=0,
argv=argv@entry=0x7ffec67431d0) at kernel/qobject.cpp:3715
#11 0x7fbb9e7b1fc7 in QMetaObject::activate (sender=sender@entry=0xad8450,
m=m@entry=0x7fbb9e9c0d60 ,
local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffec67431d0)
at kernel/qobject.cpp:3595
#12 0x7fbb9e7b206f in QObject::destroyed (this=this@entry=0xad8450,
_t1=_t1@entry=0xad8450) at .moc/moc_qobject.cpp:213
#13 0x7fbb9e7b8d65 in QObject::~QObject (this=,
__in_chrg=) at kernel/qobject.cpp:913
#14 0x7fbb92f96ae7 in Breeze::StylePlugin::~StylePlugin() () from
/usr/lib64/qt5/plugins/styles/breeze.so
#15 0x7fbb9e781a23 in QLibraryPrivate::unload (this=this@entry=0xad1020,
flag=flag@entry=QLibraryPrivate::UnloadSys) at plugin/qlibrary.cpp:551
#16 0x7fbb9e7786b2 in QFactoryLoaderPrivate::~QFactoryLoaderPrivate
(this=0xacf410, __in_chrg=) at plugin/qfactoryloader.cpp:88
#17 0x7fbb9e7787e9 in QFactoryLoaderPrivate::~QFactoryLoaderPrivate
(this=0xacf410, __in_chrg=) at plugin/qfactoryloader.cpp:91
#18 0x7fbb9e7b9151 in QScopedPointerDeleter::cleanup
(pointer=) at
../../include/QtCore/../../src/corelib/tools/qscopedpointer.h:54
#19 QScopedPointer
>::~QScopedPointer (this=0x7fbb9f9fcae8 <(anonymous
namespace)::Q_QGS_loader::innerFunction()::holder+8>, __in_chrg=) at ../../include/QtCore/../../src/corelib/tools/qscopedpointer.h:101
#20 QObject::~QObject (this=, __in_chrg=) at
kernel/qobject.cpp:893
#21 0x7fbb9eaa in QFactoryLoader::~QFactoryLoader (this=0x7fbb9f9fcae0
<(anonymous namespace)::Q_QGS_loader::innerFunction()::holder>,
__in_chrg=) at plugin/qfactoryloader.cpp:226
#22 0x7fbb9f5688c9 in (anonymous namespace)::Q_QGS_loader::Holder::~Holder
(this=, __in_chrg=) at
styles/qstylefactory.cpp:70
#23 0x7fbb9d8d7b48 in __run_exit_handlers (status=0, listp=0x7fbb9dc35618
<__exit_funcs>, run_list_atexit=run_list_atexit@entry=true) at exit.c:82
#24 0x7fbb9d8d7b95 in __GI_exit (status=) at exit.c:104
#25 0x7fbba00ab3ca in
KDBusService::KDBusService(QFlags, QObject*) ()
from /usr/lib64/libKF5DBusAddons.so.5
#26 0x00410a66 in main ()
(gdb) info threads
Id Target Id Frame
* 1Thread 0x7fbba03d97c0 (LWP 5951) "kactivitymanage" pthread_cond_wait ()
at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
When logging out, three such processes remained hanged in the same place, but
with different stacks. Here's another example:
#0 pthread_cond_wait () at
../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1 0x7f2a63e2eefa in QWaitConditionPrivate::wait
(time=18446744073709551615, this=0x18e6f60) at
thread/qwaitcondition_unix.cpp:136
#2 QWaitCondition::wait (this=this@entry=0x18e12c8,
mutex=mutex@entry=0x18e12c0, time=time@entry=18446744073709551615) at
thread/qwaitcondition_unix.cpp:208
#3 0x7f2a63e2909b in QSemaphore::acquire (this=this@entry=0x7ffde3f33140,
n=n@entry=1) at thread/qsemaphore.cpp:137
#4 0x7f2a63ff492f in QMetaObject::ac