On Mon, Jul 28, 2014 at 9:38 PM, Alvaro Herrera
<alvherre@2ndquadrant.com> wrote:
> Robert Haas wrote:
>> OK, I think I see the problem. In EXEC_BACKEND mode,
>> SubPostmasterMain() calls InitProcess() before IsBackgroundWorker has
>> been set. InitProcess() therefore pulls the PGPROC for the worker
>> from freeProcs rather than bgworkerFreeProcs. By exit time,
>> IsBackgroundWorker has been set, so the PGPROC gets put back on the
>> bgworkerFreeProcs list. Eventually there are no regular PGPROCs left;
>> they've all been moved to the bgworkerFreeProcs list.
>
> Doh. I'm surprised -- I tested a worker that crashed over and over to
> ensure PGPROCs were reused sanely. I guess I forgot to run it under
> EXEC_BACKEND.
>
> Are you fixing it?
Working on it now.
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company