From owner-freebsd-threads@FreeBSD.ORG Tue Apr 29 12:42:30 2003 Return-Path: Delivered-To: freebsd-threads@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id C699037B401 for ; Tue, 29 Apr 2003 12:42:30 -0700 (PDT) Received: from mail.pcnet.com (mail.pcnet.com [204.213.232.4]) by mx1.FreeBSD.org (Postfix) with ESMTP id 1A49E43F75 for ; Tue, 29 Apr 2003 12:42:30 -0700 (PDT) (envelope-from eischen@pcnet1.pcnet.com) Received: from pcnet1.pcnet.com (localhost [127.0.0.1]) by mail.pcnet.com (8.12.8/8.12.1) with ESMTP id h3TJgRBg007736; Tue, 29 Apr 2003 15:42:27 -0400 (EDT) Received: from localhost (eischen@localhost)h3TJgQ1p007733; Tue, 29 Apr 2003 15:42:26 -0400 (EDT) Date: Tue, 29 Apr 2003 15:42:26 -0400 (EDT) From: Daniel Eischen To: Narvi In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII cc: threads@freebsd.org Subject: Re: Question about rtld-elf. Anyone?.. Anyone? X-BeenThere: freebsd-threads@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Threading on FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 Apr 2003 19:42:31 -0000 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. -- Dan Eischen