httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Marc Slemko <ma...@worldgate.com>
Subject Re: general/1056: USE_FLOCK_SERIALIZED_ACCEPT is no use.
Date Fri, 05 Sep 1997 01:04:24 GMT
On Thu, 4 Sep 1997, Dean Gaudet wrote:

> I really can't believe this one ... could a freebsd person start up a
> server, then ktrace/truss/whatever a few of the pids and make sure only
> one of them is in accept() ? 

Looks fine to me using 1.3-dev code.

Possible they are seeing oddities if they are NFS mounting things.

This is one of the PRs I hope to get around to some day...

> 
> Dean
> 
> On Tue, 26 Aug 1997, Tetsuya Furukawa wrote:
> 
> > 
> > >Number:         1056
> > >Category:       general
> > >Synopsis:       USE_FLOCK_SERIALIZED_ACCEPT is no use.
> > >Confidential:   no
> > >Severity:       non-critical
> > >Priority:       medium
> > >Responsible:    apache (Apache HTTP Project)
> > >State:          open
> > >Class:          sw-bug
> > >Submitter-Id:   apache
> > >Arrival-Date:   Tue Aug 26 04:40:02 1997
> > >Originator:     tetsuya@secom-sis.co.jp
> > >Organization:
> > apache
> > >Release:        1.2.1
> > >Environment:
> > FreeBSD 2.1.7.1-RELEASE, FreeBSD 2.2-STABLE
> > >Description:
> > If USE_FLOCK_SERIALIZED_ACCEPT is defined,
> > 1. First, the parent will create a lock file and get the file descriptor
> >    associated with the file in accept_mutex_init().
> > 2. Then, the children will intend to do flock() on the descriptor
> >    in accept_mutex_on() and accept_mutex_off().
> > 
> > The flock(lock_fd, LOCK_EX) will always success without blocking in the case.
> > I think it isn't the expected action.
> > However, it doesn't currently seem to cause any problem on FreeBSD.
> > >How-To-Repeat:
> > At the next of the line ``accept_mutex_on();'', insert
> > ``log_printf(server_conf, "accept_mutex_on: %d", (int)getpid());''.
> > Then make, install and start the Apache on the FreeBSD system.
> > You'll see the multiple "accept_mutex_on: xxxx" in the error log
> > even if no client accesses the server.
> > >Fix:
> > I made a patch.
> > It seems to work fine on my system.
> > --------
> > --- http_main.c.original        Tue Aug 26 20:15:21 1997
> > +++ http_main.c Tue Aug 26 20:15:12 1997
> > @@ -271,7 +271,7 @@
> >         fprintf (stderr, "Cannot open lock file\n");
> >         exit (1);
> >      }
> > -    unlink(lock_fname);
> > +    pclosef(p, lock_fd);
> >  }
> >  
> >  void accept_mutex_on()
> > @@ -1228,6 +1228,9 @@
> >  void sig_term() {
> >      log_error("httpd: caught SIGTERM, shutting down", server_conf);
> >      cleanup_scoreboard();
> > +#if defined(USE_FLOCK_SERIALIZED_ACCEPT)
> > +    unlink(lock_fname);
> > +#endif
> >      ap_killpg (pgrp, SIGKILL);
> >      close(sd);
> >      exit(1);
> > @@ -1665,6 +1668,16 @@
> >      dupped_csd = -1;
> >      child_num = child_num_arg;
> >      requests_this_child = 0;
> > +    
> > +#if defined(USE_FLOCK_SERIALIZED_ACCEPT)
> > +    lock_fd = popenf(pconf, lock_fname, O_WRONLY, 0);
> > +    if (lock_fd == -1)
> > +    {
> > +       perror ("open");
> > +       fprintf (stderr, "Cannot open lock file\n");
> > +       exit (1);
> > +    }
> > +#endif
> >  
> >      reopen_scoreboard(pconf);
> >      (void)update_child_status(child_num, SERVER_READY, (request_rec*)NULL);
> > -------
> > >Audit-Trail:
> > >Unformatted:
> > 
> > 
> > 
> 


Mime
View raw message