On Darwin, detect and report a multithreaded postmaster.
Noah Misch <noah@leadboat.com>
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
| Path | Change | +/− |
|---|---|---|
| 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 |