john@labtam.oz (John Carey) (05/08/90)
Sent to mit X Window System Bug Report xbugs@expo.lcs.mit.edu VERSION: R4 CLIENT MACHINE and OPERATING SYSTEM: Labtam Delta/386 running System V Release 3.2 DISPLAY TYPE: Labtam Xengine (all models) WINDOW MANAGER: twm AREA: twm SYNOPSIS: twm handles signals incorrectly +FIX DESCRIPTION: twm catches SIGQUIT when running in the background. The code setting the signals should check if the SIGQUIT is SIG_IGN before setting the new handler. REPEAT BY: twm & # start twm in the background ^\ # then hit QUIT character twm then exits SAMPLE FIX: Here is the patch -------------------------------------------------------------------------------- *** twm.c_old Mon May 7 17:05:12 1990 --- twm.c Mon May 7 17:04:03 1990 *************** *** 179,186 **** if (old_handler != SIG_IGN) signal(SIGHUP, Done); ! signal(SIGQUIT, Done); ! signal(SIGTERM, Done); Home = getenv("HOME"); if (Home == NULL) --- 179,191 ---- if (old_handler != SIG_IGN) signal(SIGHUP, Done); ! old_handler = signal(SIGQUIT, SIG_IGN); ! if (old_handler != SIG_IGN) ! signal(SIGQUIT, Done); ! ! old_handler = signal(SIGTERM, SIG_IGN); ! if (old_handler != SIG_IGN) ! signal(SIGTERM, Done); Home = getenv("HOME"); if (Home == NULL)