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? -- Álvaro Herrera http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers