From a9d3724eb048862af7f89f037f37582df118abfd Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Thu, 29 Aug 2019 09:34:04 -0400 Subject: [PATCH] session-worker: don't kill progress group until PostSession is run Killing the process group leads to the worker getting killed, so the PostSession never gets run. This commit fixes that, by deferring killing the process group until after PostSession has run. --- daemon/gdm-session-worker.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c index 0e8541589..9bdee361f 100644 --- a/daemon/gdm-session-worker.c +++ b/daemon/gdm-session-worker.c @@ -1793,65 +1793,65 @@ run_script (GdmSessionWorker *worker, } return gdm_run_script (dir, worker->priv->username, worker->priv->x11_display_name, worker->priv->display_is_local? NULL : worker->priv->hostname, worker->priv->x11_authority_file); } static void session_worker_child_watch (GPid pid, int status, GdmSessionWorker *worker) { g_debug ("GdmSessionWorker: child (pid:%d) done (%s:%d)", (int) pid, WIFEXITED (status) ? "status" : WIFSIGNALED (status) ? "signal" : "unknown", WIFEXITED (status) ? WEXITSTATUS (status) : WIFSIGNALED (status) ? WTERMSIG (status) : -1); gdm_session_worker_uninitialize_pam (worker, PAM_SUCCESS); gdm_dbus_worker_emit_session_exited (GDM_DBUS_WORKER (worker), worker->priv->service, status); - killpg (pid, SIGHUP); - worker->priv->child_pid = -1; worker->priv->child_watch_id = 0; run_script (worker, GDMCONFDIR "/PostSession"); + + killpg (pid, SIGHUP); } static void gdm_session_worker_watch_child (GdmSessionWorker *worker) { g_debug ("GdmSession worker: watching pid %d", worker->priv->child_pid); worker->priv->child_watch_id = g_child_watch_add (worker->priv->child_pid, (GChildWatchFunc)session_worker_child_watch, worker); } static gboolean _is_loggable_file (const char* filename) { struct stat file_info; if (g_lstat (filename, &file_info) < 0) { return FALSE; } return S_ISREG (file_info.st_mode) && g_access (filename, R_OK | W_OK) == 0; } static void rotate_logs (const char *path, guint n_copies) { int i; -- 2.21.0