Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 30 Apr 2003 00:59:15 +0300 (EEST)
From:      Narvi <narvi@haldjas.folklore.ee>
To:        Daniel Eischen <eischen@pcnet1.pcnet.com>
Cc:        threads@freebsd.org
Subject:   Re: Question about rtld-elf. Anyone?.. Anyone? 
Message-ID:  <20030429234505.X40030-100000@haldjas.folklore.ee>
In-Reply-To: <Pine.GSO.4.10.10304291534330.6239-100000@pcnet1.pcnet.com>

next in thread | previous in thread | raw e-mail | index | archive | help

On Tue, 29 Apr 2003, Daniel Eischen wrote:

> On Tue, 29 Apr 2003, Daniel Eischen wrote:
>
> > On Tue, 29 Apr 2003, Narvi wrote:
> > >
> > > No, you would see the problem as soon as you tried to use a function that
> > > used a locked structure, depending on how the dynamic linker did thinks
> > > this might include any fiunction, including exec* - threads + forking
> > > gives you really fascinating problems. How do you know that say malloc
> > > state was consistent at the moment you forked? You really need
> > > per-subsystem cleanups so that you won't occasionaly fail miserably. Its
> > > not really the threads lib that can / should track locks, unless it comes
> > > with its own copy of the subsystems.
>
> In regards to inconsistent data (and not the state of the locks)...
>
> You could have use an atfork() handler to reinitialize any
> inconsistent data.  POSIX already defines pthread_atfork(),
> and the kernel has at_fork(9) for kernel modules.  Perhaps
> pthread_atfork() could be utilized by libc, being careful
> to detect the potential for threads first.
>

Well, i think we should gurantee something about the sanity of libc
internals to the forked process.

I think it would be more efficent to use a specific cleanup function that
fork() implicitly knows about instead of a number of actual calls to
pthread_atfork. You could probaby set things up so with rtld that the
cleanups happen lazily so that there is no overhead for immediate /
near-immediate exec with no acess to functions that would need the
cleanup, but I don't think its an immediate concern.

> --
> Dan Eischen
>




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030429234505.X40030-100000>