Subject: Re: Threading problems
To: Bill Studenmund <wrstuden@netbsd.org>
From: Eric Haszlakiewicz <erh@nimenees.com>
List: tech-kern
Date: 11/24/2004 02:45:11
On Tue, Nov 23, 2004 at 06:59:43PM -0800, Bill Studenmund wrote:
> Also, you're assuming that the program is fine being suddenly-threaded.
> Say _it_ is built different if threads are enabled or not. Adding -pthread
> to the command line defines "_REENTRANT", which a program certainly can
> use to change its behavior. Looking in stdio.h, its behavior will be
> different. Some things it does will never be able to work right adding
> threading later.
I didn't think of that. That just about kills my idea. oh well.
> Given how much code really needs to be _REENTRANT or not at compile time,
> I don't see how we can ever make "magic add pthread later" work right. So
> I think what we're doing now is the right thing, by making it obvious the
> code needs recompiling.
uhm... I guess I'm not entirely up to speed on what all the requirements
for a threaded program are. What you're saying seems to imply that
(going back to the original problem) the postgres binary needs to be built
with -pthread from the very beginning if it is to dlopen a pthread-linked
library. It is not enough to use LD_PRELOAD. Correct?
The best that can be done is to do (magic handwaving) to build postgres
as if it was a library that is intended to be used in both threaded and
non-threaded apps. If that is done, then LD_PRELOAD could be used to
selectively turn on full pthread support at exec time if it is known that
a pthread library will be loaded later.
btw, what is the (magic handwaving) necessary? Just define _REENTRANT?
eric