httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stipe Tolj <t...@wapme-systems.de>
Subject Re: [PATCH] 1.3: changing accept mutex for Cygwin
Date Thu, 17 Jan 2002 16:18:13 GMT
Jeff Trawick wrote:
> 
> Jeff Trawick <trawick@attglobal.net> writes:
> 
> > Jim Jagielski <jim@jaguNET.com> writes:
> >
> > > >diff -ur apache-1.3/src/main/http_main.c apache-1.3-cygwin/src/main/http_main.c
> > > >--- apache-1.3/src/main/http_main.c        Wed Oct 17 14:45:30 2001
> > > >+++ apache-1.3-cygwin/src/main/http_main.c Tue Jan  1 16:05:19 2002
> > > >@@ -662,11 +662,17 @@
> > > >   perror("pthread_mutexattr_init");
> > > >   exit(APEXIT_INIT);
> > > >     }
> > > >X-Mozilla-Status: 8009n has problems with this pthread call claiming that
these
> > > >+     * are "Invalid arguements", Stipe Tolj <tolj@wapme-systems.de>
> > > >+     */
> > > >+#if !defined(CYGWIN)
> > > >     if ((errno = pthread_mutexattr_setpshared(&mattr,
> > > >                                           PTHREAD_PROCESS_SHARED))) {
> > > >   perror("pthread_mutexattr_setpshared");
> > > >   exit(APEXIT_INIT);
> > > >     }
> > > >+#endif
> > >
> > > This looks mangled though :) :)
> >
> > manglement aside, I'm -1 without an answer to the question on this
> > code which I posted previously...
> >
> > the answer may simply be
> >
> > "with Cygwin, all pthread mutexes are cross-process, so there is no
> > need for such a call"
> >
> > Since on other systems pthread mutexes are intra-process without
> > such a call, I can't help but wonder.
> 
> Let me clarify my concern, in case somebody can find a flaw in my
> logic or in case it helps Stipe know what I would like him to verify
> (and document in comments).
> 
> base facts/assumptions:
> 
> 1) pthread mutexes are normally intra process, but if the following
>    conditions are met, pthread mutexes can be used cross-process
> 
>    a) the mutex itself lives in shared memory which is addressible by
>       the processes which need to serialize via the mutex
> 
>    b) the pthread_mutexattr_setpshared(,PTHREAD_PROCESS_SHARED) call
>       is used to tell the pthreads library that the mutex is
>       cross-process
> 
> 2) not all systems which support pthread mutexes have the support to
>    make them work cross-process; such systems either neglect to define
>    PTHREAD_PROCESS_SHARED or return an error from
>    pthread_mutexattr_setpshared(,PTHREAD_PROCESS_SHARED)
> 
> 3) Cygwin always returns an error from
>    pthread_mutexattr_setpshared(,PTHREAD_PROCESS_SHARED)
> 
> 4) it is possible for Apache to appear to work correctly without
>    proper accept serialization
> 
> My conclusion from these facts/assumptions is that with Stipe's change
> he is falling into #4 above.  In other words, he isn't getting working
> accept serialization.  If that is true, I would prefer that for Cygwin
> we (Stipe) set whatever is required so that we don't try to do accept
> serialization at all, rather than using the pthread mutex support in a
> non-working manner.
> 
> I accept that Cygwin may have certain nuances/deviations that result
> in Stipe's code to be appropriate (perhaps on Cygwin all pthread
> mutexes are cross-process and returning an error from
> pthread_mutexattr_setpshared() is Cygwin's way of telling you that the
> call is unnecessary), but I would like to see such nuances spelled out
> in comments adjacent to "#if !defined(CYGWIN)".  As it stands, the
> code looks broken.
> 
> I suspect that deep knowledge of Cygwin pthread mutex support (i.e.,
> communication with one of the developers or examining the source) is
> necessary to address the concern.  If it is unclear why
> pthread_mutexattr_setpshared() returns EINVAL then probably we don't
> have the information to know why skipping that call is appropriate.

yep, I forwarded the issue to Robert Collins
<robert.collins@itdomain.com.au> which is the one dealing with
Cygwin's pthreads.

Stipe

tolj@wapme-systems.de
-------------------------------------------------------------------
Wapme Systems AG

Münsterstr. 248
40470 Düsseldorf

Tel: +49-211-74845-0
Fax: +49-211-74845-299

E-Mail: info@wapme-systems.de
Internet: http://www.wapme-systems.de
-------------------------------------------------------------------
wapme.net - wherever you are

Mime
View raw message