Stefan Kaltenbrunner <stefan@kaltenbrunner.cc> writes:
> On 06/22/2012 11:47 PM, Tom Lane wrote:
>> Could you gdb each of these processes and get a stack trace?
[ unsurprising stack traces ]
OK, so they're waiting exactly where they should be.
So what we know is that the shutdown failure is caused by the child
processes having all blockable signals blocked. What we don't know
is how they could have gotten that way. I do not see any way that
the code in Postgres would ever block all signals, which makes this
look a lot like a BSD libc bug. But that doesn't help much.
The only way I can think of to narrow it down is to run the postmaster
under "strace -f" or local equivalent, and look for sigprocmask calls
that set all the bits. That could be pretty tedious though, if the
occurrence of the bug is as low-probability as it seems to be.
Given your earlier comment about a new threading library, I wonder
whether this has something to do with confusion between process-wide
and per-thread signal masks ...
regards, tom lane