Ensure SA_SIGNAL test only signals itself.
When the test's child signals its parent and it exits the result of getppid changes. On Ubuntu 20.04 this results in the ppid being that of the GDM session, causing it to exit. Analysis and testing from pedro at ambientworks.net
This commit is contained in:
parent
dc2da29aae
commit
4fa9e048c2
|
@ -2534,10 +2534,12 @@ static void sighandler(int sig) { }
|
|||
sa.sa_flags = SA_RESTART;
|
||||
(void)sigaction(SIGTERM, &sa, NULL);
|
||||
if ((pid = fork()) == 0) { /* child */
|
||||
pid = getppid();
|
||||
sleep(1);
|
||||
kill(getppid(), SIGTERM);
|
||||
kill(pid, SIGTERM);
|
||||
sleep(1);
|
||||
kill(getppid(), SIGKILL);
|
||||
if (getppid() == pid) /* if parent did not exit, shoot it */
|
||||
kill(pid, SIGKILL);
|
||||
exit(0);
|
||||
} else { /* parent */
|
||||
r = select(0, NULL, NULL, NULL, NULL);
|
||||
|
|
Loading…
Reference in New Issue