Search Postgresql Archives

Re: fork() and dynamically loaded c functions....

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux