]> granicus.if.org Git - postgresql/commitdiff
Ignore SIGSYS during initdb.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 25 Oct 2013 01:51:00 +0000 (21:51 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 25 Oct 2013 01:51:30 +0000 (21:51 -0400)
This prevents the recently-added probe for shm_open() from crashing
on platforms that are impolite enough to deliver a signal rather than
returning ENOSYS for an unimplemented kernel call.  At least on the
one known example (HPUX 10.20), ignoring SIGSYS does result in the
desired behavior of getting an ENOSYS error return instead.

Per discussion, we might later wish to do this in the backend as well,
but for now it seems sufficient to do it in initdb.

src/bin/initdb/initdb.c

index 3983b23731330b78a66a74d14faaf76f7aff85c2..30e3701f92a6cf03a8993546e9d7f51bdd214fb7 100644 (file)
@@ -3197,6 +3197,11 @@ setup_signals(void)
 #ifdef SIGPIPE
        pqsignal(SIGPIPE, SIG_IGN);
 #endif
+
+       /* Prevent SIGSYS so we can probe for kernel calls that might not work */
+#ifdef SIGSYS
+       pqsignal(SIGSYS, SIG_IGN);
+#endif
 }