On Darwin, detect and report a multithreaded postmaster.

Noah Misch <noah@leadboat.com>

Commit: 1a366d51effd0e9f3301d68c2d3dce09c8c43d1f
Author: Noah Misch <noah@leadboat.com>
Date: 2015-01-08T03:40:40Z
Releases: 9.3.6
On Darwin, detect and report a multithreaded postmaster.

Darwin --enable-nls builds use a substitute setlocale() that may start a
thread.  Buildfarm member orangutan experienced BackendList corruption
on account of different postmaster threads executing signal handlers
simultaneously.  Furthermore, a multithreaded postmaster risks undefined
behavior from sigprocmask() and fork().  Emit LOG messages about the
problem and its workaround.  Back-patch to 9.0 (all supported versions).

Files

PathChange+/−
configure modified +2 −1
configure.in modified +1 −1
src/backend/postmaster/postmaster.c modified +43 −0
src/include/pg_config.h.in modified +3 −0
src/port/exec.c modified +12 −0