Browse files

Use pqsignal() in contrib programs rather than calling signal(2) dire…

…ctly.

The semantics of signal(2) are more variable than one could wish; in
particular, on strict-POSIX platforms the signal handler will be reset
to SIG_DFL when the signal is delivered.  This demonstrably breaks
pg_test_fsync's use of SIGALRM.  The other changes I made are not
absolutely necessary today, because the called handlers all exit the
program anyway.  But it seems like a good general practice to use
pqsignal() exclusively in Postgres code, now that we have it available
everywhere.
  • Loading branch information...
1 parent b1fae82 commit 3c07fbf40bd0276e4be02fc72cba6b1cd62da301 @tglsfdc tglsfdc committed Mar 17, 2013
Showing with 8 additions and 8 deletions.
  1. +4 −4 contrib/pg_standby/pg_standby.c
  2. +4 −4 contrib/pg_test_fsync/pg_test_fsync.c
View
8 contrib/pg_standby/pg_standby.c
@@ -549,7 +549,7 @@ sighandler(int sig)
static void
sigquit_handler(int sig)
{
- signal(SIGINT, SIG_DFL);
+ pqsignal(SIGINT, SIG_DFL);
kill(getpid(), SIGINT);
}
#endif
@@ -592,9 +592,9 @@ main(int argc, char **argv)
*
* There's no way to trigger failover via signal on Windows.
*/
- (void) signal(SIGUSR1, sighandler);
- (void) signal(SIGINT, sighandler); /* deprecated, use SIGUSR1 */
- (void) signal(SIGQUIT, sigquit_handler);
+ (void) pqsignal(SIGUSR1, sighandler);
+ (void) pqsignal(SIGINT, sighandler); /* deprecated, use SIGUSR1 */
+ (void) pqsignal(SIGQUIT, sigquit_handler);
#endif
while ((c = getopt(argc, argv, "cdk:lr:s:t:w:")) != -1)
View
8 contrib/pg_test_fsync/pg_test_fsync.c
@@ -101,14 +101,14 @@ main(int argc, char *argv[])
handle_args(argc, argv);
/* Prevent leaving behind the test file */
- signal(SIGINT, signal_cleanup);
- signal(SIGTERM, signal_cleanup);
+ pqsignal(SIGINT, signal_cleanup);
+ pqsignal(SIGTERM, signal_cleanup);
#ifndef WIN32
- signal(SIGALRM, process_alarm);
+ pqsignal(SIGALRM, process_alarm);
#endif
#ifdef SIGHUP
/* Not defined on win32 */
- signal(SIGHUP, signal_cleanup);
+ pqsignal(SIGHUP, signal_cleanup);
#endif
prepare_buf();

0 comments on commit 3c07fbf

Please sign in to comment.