This is the mail archive of the
cygwin-developers@cygwin.com
mailing list for the Cygwin project.
Re: dll_entry [was Re: fork expert needed: (was .....])
- To: "Trevor Forbes" <trevorforbes at ozemail dot com dot au>,"Cygwin-developers" <cygwin-developers at cygwin dot com>
- Subject: Re: dll_entry [was Re: fork expert needed: (was .....])
- From: "Robert Collins" <robert dot collins at itdomain dot com dot au>
- Date: Mon, 16 Apr 2001 23:13:11 +1000
- References: <037701c0c3ab$9049bf30$0200a8c0@lifelesswks> <20010413221222.C5606@dothill.com> <006001c0c4af$179b79c0$0200a8c0@lifelesswks> <20010414223139.A906@redhat.com> <001701c0c557$02a861b0$0200a8c0@lifelesswks> <20010415090600.A8359@redhat.com> <001301c0c5af$9cb7e520$0200a8c0@lifelesswks> <20010415153317.C9015@redhat.com> <013b01c0c613$53cdac00$0200a8c0@lifelesswks> <20010415222520.E10309@redhat.com> <035e01c0c675$c2c11180$0200a8c0@voyager>
----- Original Message -----
From: "Trevor Forbes" <trevorforbes@ozemail.com.au>
To: "Cygwin-developers" <cygwin-developers@cygwin.com>
Sent: Monday, April 16, 2001 11:04 PM
Subject: dll_entry [was Re: fork expert needed: (was .....])
> ----- Original Message -----
> From: "Christopher Faylor" <cgf@redhat.com>
> >
> > > Robert Collins wrote:
> > >Also while MSDN states that only one thread at a time can call the
> > >entry point function, it does not state or imply that other threads
are
> > >suspended during that process.
> >
> > Ok, I reluctantly stand corrected. I thought that both the MSDN and
> > my own personal experience (waiting for a signal from Cygwi's signal
> > thread that never arrived) said this. I couldn't find any reference
> > to this, though.
>
> Moved thread location.....
>
> The system serializes calls to the dll entry point function and "it
> suspends" the other related threads during the process.
> (Jeffery Richer - Microsoft Press)
I believe that means that if (say) 3 threads (whether in the same
process or not) simultaneously attach to a single dll, two of the three
threads are blocked while they wait to run the dll entry point function.
That's not the scenario we were discussing. Still, a test case will
demonstrate it wiether way quite quickly.
***
More importantly, we're not in cygwin's dll entry point, so that is
irrelevant to us. We may cause other dll entry point functions to run as
we call LoadLibrary multiple times (once for each dll the parent had
attached to before fork was called).
***
> The attached patch can avoid the bottleneck but it may introduce
new/old
> problems.
It won't avoid the issue we're looking at :[ Other than that, no comment
from this corner - too ignorant of cygwin's needs in that area at the
moment.
Rob