Bug 372292

Summary: apper hang on close
Product: [Unmaintained] apper Reporter: Rex Dieter <rdieter>
Component: generalAssignee: Daniel Nicoletti <dantti12>
Status: RESOLVED FIXED    
Severity: normal CC: kde, loic.yhuel, mattia.verga
Priority: NOR    
Version First Reported In: unspecified   
Target Milestone: ---   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:
Attachments: use correct QDialog::finished signal prototype

Description Rex Dieter 2016-11-10 13:40:43 UTC
Using latest build from master/ branch (Nov 11, 2016), Seems apper process hangs on close.  After closing the application, the apper process is still running in the background.

I'll try to get a backtrace.
Comment 1 Rex Dieter 2016-11-10 13:42:48 UTC
(gdb) thread apply all backtrace

Thread 3 (Thread 0x7f5132394700 (LWP 20468)):
#0  0x00007f514b7a556d in poll () at /lib64/libc.so.6
#1  0x00007f5147e00a06 in g_main_context_iterate (priority=<optimized out>, n_fds=4, fds=0x7f5124016300, timeout=<optimized out>, context=0x7f5124000990) at gmain.c:4135
#2  0x00007f5147e00a06 in g_main_context_iterate (context=context@entry=0x7f5124000990, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3835
#3  0x00007f5147e00b1c in g_main_context_iteration (context=0x7f5124000990, may_block=may_block@entry=1) at gmain.c:3901
#4  0x00007f514c5ab73f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7f51240008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:417
#5  0x00007f514c55a81a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7f5132393c40, flags=..., flags@entry=...) at kernel/qeventloop.cpp:206
#6  0x00007f514c3b9353 in QThread::exec() (this=this@entry=0x7f5152dd0060 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at thread/qthread.cpp:500
#7  0x00007f5152d5b559 in QDBusConnectionManager::run() (this=0x7f5152dd0060 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at qdbusconnection.cpp:189
#8  0x00007f514c3bd9ba in QThreadPrivate::start(void*) (arg=0x7f5152dd0060 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at thread/qthread_unix.cpp:365
#9  0x00007f51496835ca in start_thread () at /lib64/libpthread.so.0
#10 0x00007f514b7b10ed in clone () at /lib64/libc.so.6

Thread 2 (Thread 0x7f51336ff700 (LWP 20467)):
#0  0x00007f514b7a556d in poll () at /lib64/libc.so.6
#1  0x00007f5148d8ef80 in _xcb_conn_wait (__timeout=-1, __nfds=1, __fds=0x7f51336feb80) at /usr/include/bits/poll2.h:46
#2  0x00007f5148d8ef80 in _xcb_conn_wait (c=c@entry=0x55d426025d40, cond=cond@entry=0x55d426025d80, vector=vector@entry=0x0, count=count@entry=0x0) at xcb_conn.c:459
#3  0x00007f5148d90b79 in xcb_wait_for_event (c=0x55d426025d40) at xcb_in.c:693
#4  0x00007f513644af99 in QXcbEventReader::run() (this=0x55d426030410) at qxcbconnection.cpp:1331
#5  0x00007f514c3bd9ba in QThreadPrivate::start(void*) (arg=0x55d426030410) at thread/qthread_unix.cpp:365
#6  0x00007f51496835ca in start_thread () at /lib64/libpthread.so.0
#7  0x00007f514b7b10ed in clone () at /lib64/libc.so.6

Thread 1 (Thread 0x7f513cecc940 (LWP 20463)):
#0  0x00007f514b7a556d in poll () at /lib64/libc.so.6
#1  0x00007f5147e00a06 in g_main_context_iterate (priority=<optimized out>, n_fds=3, fds=0x55d42606f040, timeout=<optimized out>, context=0x7f512c0016f0) at gmain.c:4135
#2  0x00007f5147e00a06 in g_main_context_iterate (context=context@entry=0x7f512c0016f0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3835
#3  0x00007f5147e00b1c in g_main_context_iteration (context=0x7f512c0016f0, may_block=may_block@entry=1) at gmain.c:3901
#4  0x00007f514c5ab73f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x55d42605b4a0, flags=...) at kernel/qeventdispatcher_glib.cpp:417
#5  0x00007f514c55a81a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7ffd2084e080, flags=..., flags@entry=...) at kernel/qeventloop.cpp:206
#6  0x00007f514c5623bc in QCoreApplication::exec() () at kernel/qcoreapplication.cpp:1285
#7  0x000055d42416f127 in main(int, char**) (argc=<optimized out>, argv=0x7ffd2084e2d8) at /usr/src/debug/apper-0.9.3/Apper/main.cpp:56
Comment 2 Loïc Yhuel 2016-12-20 02:54:15 UTC
When trying to relaunch apper a second time, the new process only prints "Message recipient disconnected from message bus without replying", and both exit.
Launching it again then works.
So for the user, it looks like apper only starts one time out of two.

On first launch :
QCommandLineParser: option not defined: "install-mime-type"
QCommandLineParser: option not defined: "install-package-name"
QCommandLineParser: option not defined: "install-provide-file"
QCommandLineParser: option not defined: "install-catalog"
QCommandLineParser: option not defined: "remove-package-by-file"
Invalid pixmap specified.
Invalid pixmap specified.
QObject::connect: No such slot MainUi::setCaption(QString)
QObject::connect:  (sender name:   'ApperKCM')
QObject::connect: No such signal MainUi::finished()

The issue comes from the "No such signal MainUi::finished()".
I don't know why it seems new, since the code is quite old.
Comment 3 Loïc Yhuel 2016-12-20 02:57:58 UTC
Created attachment 102886 [details]
use correct QDialog::finished signal prototype

Patch fixing the issue : SIGNAL(finished()) => SIGNAL(finished(int))
Comment 4 Rex Dieter 2016-12-22 14:36:24 UTC
Git commit 0816948bb791b1f79920ed5b44bdc45bbedec0d4 by Rex Dieter.
Committed on 22/12/2016 at 14:36.
Pushed by rdieter into branch 'master'.

use correct QDialog::finished signal prototype

Patch fixing the issue : SIGNAL(finished()) => SIGNAL(finished(int))
Courtesy of Loïc Yhuel, thanks.

M  +4    -4    Apper/Apper.cpp

https://commits.kde.org/apper/0816948bb791b1f79920ed5b44bdc45bbedec0d4