diff --git a/session-manager/src/nsmd.C b/session-manager/src/nsmd.C index 026346f..e047098 100644 --- a/session-manager/src/nsmd.C +++ b/session-manager/src/nsmd.C @@ -626,6 +626,13 @@ launch ( const char *executable, const char *client_id ) char *args[] = { strdup( executable ), NULL }; setenv( "NSM_URL", url, 1 ); + + /* Ensure the launched process can receive SIGCHLD */ + /* Unblocking SIGCHLD here does NOT unblock it for nsmd itself */ + sigset_t mask; + sigemptyset( &mask ); + sigaddset( &mask, SIGCHLD ); + sigprocmask(SIG_UNBLOCK, &mask, NULL ); if ( -1 == execvp( executable, args ) ) {