Re: Function written in C, hangs on one machine and not another... - Mailing list pgsql-general

From Douglas McNaught
Subject Re: Function written in C, hangs on one machine and not another...
Date
Msg-id m2k6fxinpi.fsf@Douglas-McNaughts-Powerbook.local
Whole thread Raw
In response to Re: Function written in C, hangs on one machine and not another...  (Martijn van Oosterhout <kleptog@svana.org>)
Responses Re: Function written in C, hangs on one machine and not another...  (CG <cgg007@yahoo.com>)
List pgsql-general
Martijn van Oosterhout <kleptog@svana.org> writes:

> The things that have screwed me up in the past with pulling tricks like
> this are:
>
> 1. Program has registered atexit() handlers. _exit() avoids this.
> 2. Pending stdio output that gets flushed. The backend doesn't use
> stdio much so you might be fine here.
> 3. Signals. Make sure you don't get sent signals that screw state.
> Might be wise to block them all, or reset them all to default.
>
> Truly, exec() is the cleanest way to solve all this, it simply replaces
> the current process, lock, stock and barrel.

Definitely.  It would probably also be good to close all file
descriptors (except for stdin/etdout/stderr) before exec(), just in
case the other binary does something screwy with random file
descriptors (which it obviously shouldn't).

-Doug

pgsql-general by date:

Previous
From: Martijn van Oosterhout
Date:
Subject: Re: Function written in C, hangs on one machine and not another...
Next
From: davidgn@servidor.unam.mx
Date:
Subject: querying while copying into a table and optimizations