summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHwankyu Jhun <h.jhun@samsung.com>2018-12-18 08:10:19 +0900
committerHwankyu Jhun <h.jhun@samsung.com>2018-12-18 09:08:02 +0900
commit0fbcdd1969571c72cc97a2a24dd76a76c42a18e3 (patch)
tree84acb8ced7c0f641a11f322934ac7a378954f5f9
parentd5e4fcf0334697e386042361f8eea98817338373 (diff)
downloadlaunchpad-0fbcdd1969571c72cc97a2a24dd76a76c42a18e3.tar.gz
launchpad-0fbcdd1969571c72cc97a2a24dd76a76c42a18e3.tar.bz2
launchpad-0fbcdd1969571c72cc97a2a24dd76a76c42a18e3.zip
Remove calling signal finalization
Sometimes, the app process is deadlock while calling the g_object_unref(). While calling fork(), gdbus thread of the parent process has a mutex locked. In the child, the mutex is in the locked state. (locked by a nonexistent thread and thus can never be unlocked.) Backtrace: - #0 0xb6132900 in syscall () from /usr/lib/libc-2.24.so - #1 0xb63aab90 in g_mutex_lock_slowpath () from /usr/lib/libglib-2.0.so.0.5200.2 - #2 0xb635bbe4 in g_source_destroy_internal () from /usr/lib/libglib-2.0.so.0.5200.2 - #3 0xb657f510 in _g_kdbus_worker_stop () from /usr/lib/libgio-2.0.so.0.5200.2 - #4 0xb65365d4 in g_dbus_connection_dispose () from /usr/lib/libgio-2.0.so.0.5200.2 - #5 0xb6434720 in g_object_unref () from /usr/lib/libgobject-2.0.so.0.5200.2 - #6 0x004e1361 in _signal_fini () from /usr/bin/launchpad-process-pool - #7 0x004dac9d in __exec_app_process () from /usr/bin/launchpad-process-pool - #8 0x004d9f0f in __fork_app_process () from /usr/bin/launchpad-process-pool - #9 0x004dc01b in __handle_launch_event () from /usr/bin/launchpad-process-pool Change-Id: Iaad316621111f2494381f440c3a7fe0ab4473731 Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
-rwxr-xr-xsrc/launchpad.c3
1 files changed, 0 insertions, 3 deletions
diff --git a/src/launchpad.c b/src/launchpad.c
index 363ba3a..3fa9a2f 100755
--- a/src/launchpad.c
+++ b/src/launchpad.c
@@ -571,8 +571,6 @@ static int __exec_loader_process(void *arg)
char **argv = arg;
_signal_unblock_sigchld();
- _signal_fini();
-
_close_all_fds();
_setup_stdio(basename(argv[LOADER_ARG_PATH]));
@@ -1016,7 +1014,6 @@ static int __exec_app_process(void *arg)
_debug_prepare_debugger(launch_arg->kb);
_signal_unblock_sigchld();
- _signal_fini();
_delete_sock_path(getpid(), getuid());