Re: [HACKERS] [PATCHES] fork/exec patch - Mailing list pgsql-hackers-win32

From Magnus Hagander
Subject Re: [HACKERS] [PATCHES] fork/exec patch
Date
Msg-id 6BCB9D8A16AC4241919521715F4D8BCE17157B@algol.sollentuna.se
Whole thread Raw
Responses Re: [HACKERS] [PATCHES] fork/exec patch
List pgsql-hackers-win32
They seem to be thread-unsafe, yes, but that can be fixed pretty easy
(and probably should).

The difference is that if you fire the entire signal handler on the
different thread, which means they can execute concurrently. That won't
happen on Unix AFAIK - the main executino is stopped, right? So the
"main thread" could change a variable while the signal handler is still
executing - this can never happen in Unix when the signal handler
executes, because the main thread is stopped?

An option would be to SuspendThread() on the main thread, which freezes
it completely durnig the execution of the signal. If necessary, are we
safe against that? (Basically, SuspendThread() will suspend a thread
even if it's inside a kernel call.


//Magnus

> -----Original Message-----
> From: Tom Lane [mailto:tgl@sss.pgh.pa.us]
> Sent: Wednesday, December 17, 2003 4:36 PM
> To: Bruce Momjian
> Cc: Magnus Hagander; pgsql-hackers-win32
> Subject: Re: [pgsql-hackers-win32] [HACKERS] [PATCHES]
> fork/exec patch
>
>
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > I see for the CONNX driver code that handles signal masking:
>
> Aren't these functions in themselves totally thread-unsafe?
>
> That wouldn't matter in a non-thread-based implementation,
> but if you are going to rely on a second thread to handle
> signal processing, all of the code that manipulates the
> private state of the signal emulation had better be thread-safe.
>
>             regards, tom lane
>

pgsql-hackers-win32 by date:

Previous
From: Tom Lane
Date:
Subject: Re: [HACKERS] [PATCHES] fork/exec patch
Next
From: Tom Lane
Date:
Subject: Re: [HACKERS] [PATCHES] fork/exec patch