Jay Flattery <jaycode@xxxxxxxxxxxxxx> writes: >> What exactly is that child process doing? It sure sounds like it thinks >> it's a valid backend. > Actually it's not doing anything, as I'm just trying to work it all out - just a > bunch of printfs and waits. > But the library is a PG_MAGIC_MODULE. > I tried killing it with pg_terminate_backend(pid) - but I get WARNING: PID > 1166738497 is not a PostgreSQL server process. (Interestingly the child > pid=28629, which was printed in the line before) The forked process still thinks it's a backend, so when you try to kill it it's going to try to disconnect from shared memory. This is bad, since the parent still thinks the same thing, but the child will have zapped the parent's entries in shared memory. Offhand the only clean way I can see to launch a child process is to fork *and exec something*. There is way too much state lying around in a backend process that could rise up to bite you if you don't. You might find that doing on_exit_reset() in the child would fix the worst problems, but it still sounds chancy as heck. regards, tom lane -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general