You are viewing a plain text version of this content. The canonical link for it is here.
Posted to bugs@httpd.apache.org by bu...@apache.org on 2002/08/07 02:27:52 UTC

DO NOT REPLY [Bug 11514] New: - MPM of worker leads to Apache stalling (child exits)

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11514>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11514

MPM of worker leads to Apache stalling (child exits)

           Summary: MPM of worker leads to Apache stalling (child exits)
           Product: Apache httpd-2.0
           Version: 2.0.39
          Platform: Other
               URL: http://netlab1.usu.edu
        OS/Version: Other
            Status: NEW
          Severity: Major
          Priority: Other
         Component: worker
        AssignedTo: bugs@httpd.apache.org
        ReportedBy: jrd@cc.usu.edu


Apache 2.0.39 on UnixWare 7.11. Building for MPM of forked works.
But MPM of worker creates the problem, which follows.
 Server loads ok, services an initial request for / (page and two
short grahics). Thereafter all client requests stall because server
is in trouble.
 If I reduce the number of childern to 1 then a connection can
keep going and going, but the next encounters the error.
 The main process is running, but error.log shows a child
encounterd a segment fault. I tried truss on the running program
and it shows the same thing, but well buried. Below is a section
of truss output when using max children of 1.
 Suspects are serialized accept(), and interproccess locking.
UnixWare 7.11 needs serialized accept() and apparently the
configure script and minions decide upon a pthread mutex.
That should be ok, but maybe is not. Trying to coerce the
mutex into say FCNTL or SYSVSEM has not been successful
(configure has beaten me several times, drats).
 Sources compiled with UnixWare cc, not gnu stuff. Build
script (short) for failing case is:

$ cat myway
#! /bin/sh
./configure \
--prefix=/opt/lib/httpd3 \
--enable-http \
--enable-auth-anon \
--enable-mime-magic \
--enable-cern-meta \
--enable-expires \
--enable-headers \
--enable-unique-id \
--enable-info \
--enable-cgi \
--enable-cgid \
--enable-speling \
--enable-rewrite \
--enable-so \
--enable-modules-shared=all \
--with-mpm=worker


Snippet of truss near seg fault line:

11231:  fcntl(28, F_GETFL, 0x00000000)                  = 2
11231:  fcntl(28, F_SETFL, 0x00000082)                  = 0
11231:  read(28, " G E T   / s e r v e r -".., 8000)    = 493
11231:  xstat(2, "/home/ftp/server-status/", 0xBFE309BC) Err#2  ENOENT
11231:  lxstat(2, "/home", 0xBFE3099C)                  = 0
11231:  lxstat(2, "/home/ftp", 0xBFE3099C)              = 0
11231:  lxstat(2, "/home/ftp/server-status", 0xBFE3099C) Err#2  ENOENT
11231:  getpid()                                        = 11231  [ 11180 ]
11231:  open("/etc/resolv.conf", O_RDONLY, 0666)        = 29
11231:  ioctl(29, TCGETS, 0xBFE3003C)                   Err#25 ENOTTY
11231:  fxstat(2, 29, 0xBFE3007C)                       = 0
11231:  brk(0x08307D48)                                 = 0
11231:  read(29, " d o m a i n   u s u . e".., 8192)    = 124
11231:  read(29, 0x08301FE0, 8192)                      = 0
11231:  close(29)                                       = 0
11231:  open("/etc/netconfig", O_RDONLY, 0666)          = 29
11231:  ioctl(29, TCGETS, 0xBFE303E8)                   Err#25 ENOTTY
11231:  fxstat(2, 29, 0xBFE30428)                       = 0
11231:  read(29, " t c p\t t p i _ c o t s".., 8192)    = 1143
11231:  lseek64(29, -1069, 1)                           = 74
11231:  close(29)                                       = 0
11231:  open("/etc/hosts", O_RDONLY, 0666)              = 29
11231:  ioctl(29, TCGETS, 0xBFE302C8)                   Err#25 ENOTTY
11231:  fxstat(2, 29, 0xBFE30308)                       = 0
11231:  read(29, " # i d e n t\t " @ ( # )".., 8192)    = 219
11231:  read(29, 0x08301FE0, 8192)                      = 0
11231:  close(29)                                       = 0
11231:  xsocket(UW71|XPG4, AF_INET, SOCK_DGRAM, 0)      = 29
11231:  xconnect(UW71|XPG4, 29, 0x082927F0, 16)         = 0
11231:  xsendmsg(UW71|XPG4, 29, 0xBFE2F7CC, 0)          = 43
11231:  poll(0xBFE2F5C0, 1, 5000)                       = 1
11231:  xrecvmsg(UW71|XPG4, 29, 0xBFE2F7C4, 0)          = 176
11231:  close(29)                                       = 0
11231:  open("/etc/services", O_RDONLY, 0666)           = 29
11231:  ioctl(29, TCGETS, 0xBFE302D8)                   Err#25 ENOTTY
11231:  fxstat(2, 29, 0xBFE30318)                       = 0
11231:  read(29, " # i d e n t\t " @ ( # )".., 8192)    = 3000
11231:  lseek64(29, -1811, 1)                           = 1189
11231:  close(29)                                       = 0
11231:  open("/etc/hosts", O_RDONLY, 0666)              = 29
11231:  ioctl(29, TCGETS, 0xBFE2FFA0)                   Err#25 ENOTTY
11231:  fxstat(2, 29, 0xBFE2FFE0)                       = 0
11231:  read(29, " # i d e n t\t " @ ( # )".., 8192)    = 219
11231:  read(29, 0x08304130, 8192)                      = 0
11231:  close(29)                                       = 0
11231:  xsocket(UW71|XPG4, AF_INET, SOCK_DGRAM, 0)      = 29
11231:  xconnect(UW71|XPG4, 29, 0x082927F0, 16)         = 0
11231:  xsendmsg(UW71|XPG4, 29, 0xBFE2F32C, 0)          = 29
11231:  poll(0xBFE2F120, 1, 5000)                       = 1
11231:  xrecvmsg(UW71|XPG4, 29, 0xBFE2F324, 0)          = 153
11231:  close(29)                                       = 0
11231:  open("/usr/lib/ns.so", O_RDONLY, 027770602404)  = 29
11231:  fxstat(2, 29, 0xBFE2FFB4)                       = 0
11231:  close(29)                                       = 0
11231:  getpid()                                        = 11231  [ 11180 ]
11231:  open("/etc/netconfig", O_RDONLY, 0666)          = 29
11231:  ioctl(29, TCGETS, 0xBFE302F0)                   Err#25 ENOTTY
11231:  fxstat(2, 29, 0xBFE30330)                       = 0
11231:  read(29, " t c p\t t p i _ c o t s".., 8192)    = 1143
11231:  lseek64(29, -999, 1)                            = 144
11231:  close(29)                                       = 0
11231:  open("/dev/udp", O_RDWR, 01006426120)           = 29
11231:  ioctl(29, I_FIND, "timod")                      = 0
11231:  ioctl(29, I_PUSH, "timod")                      = 0
11231:  sigprocmask(SIG_SETMASK, 0xBFE7288C, 0x00000000) = 0
11231:  sigprocmask(SIG_SETMASK, 0xBFE30F5C, 0x00000000) = 0
11231:  ioctl(29, I_STR, 0xBFE3031C)                    = 0
11231:  sigprocmask(SIG_SETMASK, 0xBFE7288C, 0x00000000) = 0
11231:  sigprocmask(SIG_SETMASK, 0xBFE30F5C, 0x00000000) = 0
11231:  sigprocmask(SIG_SETMASK, 0xBFE30F5C, 0x00000000) = 0
11231:  getrlimit(RLIMIT_NOFILE, 0xBFE30350)            = 0
11231:  ioctl(29, I_FLUSH, FLUSHRW)                     = 0
11231:  sigprocmask(SIG_SETMASK, 0xBFE7288C, 0x00000000) = 0
11231:  sigprocmask(SIG_SETMASK, 0xBFE30F5C, 0x00000000) = 0
11231:  ioctl(29, I_STR, 0xBFE30240)                    = 0
11231:  sigprocmask(SIG_SETMASK, 0xBFE7288C, 0x00000000) = 0
11231:  sigprocmask(SIG_SETMASK, 0xBFE30F5C, 0x00000000) = 0
11231:  fcntl(29, F_SETFD, 0x00000001)                  = 0
11231:  ioctl(29, I_GETTP, 0x00000000)                  = 3
11231:  sigprocmask(SIG_SETMASK, 0xBFE7288C, 0x00000000) = 0
11231:  sigprocmask(SIG_SETMASK, 0xBFE30F5C, 0x00000000) = 0
11231:  sigprocmask(SIG_BLOCK, 0xBFE30320, 0xBFE30374)  = 0
11231:  ioctl(29, I_STR, 0xBFE30310)                    = 0
11231:  sigprocmask(SIG_SETMASK, 0xBFE30374, 0x00000000) = 0
11231:  sigprocmask(SIG_SETMASK, 0xBFE7288C, 0x00000000) = 0
11231:  sigprocmask(SIG_SETMASK, 0xBFE30F5C, 0x00000000) = 0
11231:  ioctl(29, I_GETTP, 0x00000000)                  = 3
11231:  sigprocmask(SIG_SETMASK, 0xBFE7288C, 0x00000000) = 0
11231:  sigprocmask(SIG_SETMASK, 0xBFE30F5C, 0x00000000) = 0
11231:  ioctl(29, I_STR, 0xBFE3028C)                    = 0
11231:  sigprocmask(SIG_SETMASK, 0xBFE7288C, 0x00000000) = 0
11231:  sigprocmask(SIG_SETMASK, 0xBFE30F5C, 0x00000000) = 0
11231:  brk(0x08319D48)                                 = 0
11231:  getpid()                                        = 11231  [ 11180 ]
11231:  ioctl(29, I_GETTP, 0x00000000)                  = 3
11231:  sigprocmask(SIG_SETMASK, 0xBFE7288C, 0x00000000) = 0
11231:  sigprocmask(SIG_SETMASK, 0xBFE30F5C, 0x00000000) = 0
11231:  ioctl(29, I_STR, 0xBFE30304)                    = 0
11231:  sigprocmask(SIG_SETMASK, 0xBFE7288C, 0x00000000) = 0
11231:  sigprocmask(SIG_SETMASK, 0xBFE30F5C, 0x00000000) = 0
11231:  getrlimit(RLIMIT_NOFILE, 0xBFE3030C)            = 0
11231:  ioctl(29, I_GETTP, 0x00000000)                  = 3
11231:  putmsg(29, 0xBFE302D8, 0xBFE302CC, 0)           = 0
11231:  poll(0xBFE30350, 1, 3000)                       = 1
11231:  ioctl(29, I_GETTP, 0x00000000)                  = 3
11231:  getmsg(29, 0xBFE302D4, 0x08299370, 0xBFE302E8)  = 0
11231:  ioctl(29, I_GETTP, 0x00000000)                  = 3
11231:  sigprocmask(SIG_SETMASK, 0xBFE7288C, 0x00000000) = 0
11231:  sigprocmask(SIG_SETMASK, 0xBFE30F5C, 0x00000000) = 0
11231:  close(29)                                       = 0
11231:  sigprocmask(SIG_SETMASK, 0xBFE7288C, 0x00000000) = 0
11231:  sigprocmask(SIG_SETMASK, 0xBFE30F5C, 0x00000000) = 0
11231:  brk(0x08311D48)                                 = 0
11231:  open("/etc/services", O_RDONLY, 0666)           = 29
11231:  ioctl(29, TCGETS, 0xBFE3044C)                   Err#25 ENOTTY
11231:  fxstat(2, 29, 0xBFE3048C)                       = 0
11231:  brk(0x08309D48)                                 = 0
11231:  read(29, " # i d e n t\t " @ ( # )".., 8192)    = 3000
11231:  read(29, 0x08306138, 8192)                      = 0
11231:  close(29)                                       = 0
11231:  open("/etc/netconfig", O_RDONLY, 0666)          = 29
11231:  ioctl(29, TCGETS, 0xBFE30854)                   Err#25 ENOTTY
11231:  fxstat(2, 29, 0xBFE30894)                       = 0
11231:  read(29, " t c p\t t p i _ c o t s".., 8192)    = 1143
11231:  lseek64(29, -498, 1)                            = 645
11231:  close(29)                                       = 0
11231:  open("/etc/hosts", O_RDONLY, 0666)              = 29
11231:  ioctl(29, TCGETS, 0xBFE3040C)                   Err#25 ENOTTY
11231:  fxstat(2, 29, 0xBFE3044C)                       = 0
11231:  read(29, " # i d e n t\t " @ ( # )".., 8192)    = 219
11231:  read(29, 0x08306138, 8192)                      = 0
11231:  close(29)                                       = 0
11231:  xsocket(UW71|XPG4, AF_INET, SOCK_DGRAM, 0)      = 29
11231:  xconnect(UW71|XPG4, 29, 0x082927F0, 16)         = 0
11231:  xsendmsg(UW71|XPG4, 29, 0xBFE2F798, 0)          = 29
11231:  poll(0xBFE2F58C, 1, 5000)                       = 1
11231:  xrecvmsg(UW71|XPG4, 29, 0xBFE2F790, 0)          = 75
11231:  close(29)                                       = 0
11231:  xsocket(UW71|XPG4, AF_INET, SOCK_DGRAM, 0)      = 29
11231:  xconnect(UW71|XPG4, 29, 0x082927F0, 16)         = 0
11231:  xsendmsg(UW71|XPG4, 29, 0xBFE2F798, 0)          = 37
11231:  poll(0xBFE2F58C, 1, 5000)                       = 1
11231:  xrecvmsg(UW71|XPG4, 29, 0xBFE2F790, 0)          = 83
11231:  close(29)                                       = 0
11231:  open("/etc/netconfig", O_RDONLY, 0666)          = 29
11231:  ioctl(29, TCGETS, 0xBFE30854)                   Err#25 ENOTTY
11231:  fxstat(2, 29, 0xBFE30894)                       = 0
11231:  read(29, " t c p\t t p i _ c o t s".., 8192)    = 1143
11231:  lseek64(29, -1069, 1)                           = 74
11231:  close(29)                                       = 0
11231:  open("/etc/hosts", O_RDONLY, 0666)              = 29
11231:  ioctl(29, TCGETS, 0xBFE3040C)                   Err#25 ENOTTY
11231:  fxstat(2, 29, 0xBFE3044C)                       = 0
11231:  read(29, " # i d e n t\t " @ ( # )".., 8192)    = 219
11231:  read(29, 0x08306138, 8192)                      = 0
11231:  close(29)                                       = 0
11231:  xsocket(UW71|XPG4, AF_INET, SOCK_DGRAM, 0)      = 29
11231:  xconnect(UW71|XPG4, 29, 0x082927F0, 16)         = 0
11231:  xsendmsg(UW71|XPG4, 29, 0xBFE2F798, 0)          = 29
11231:  poll(0xBFE2F58C, 1, 5000)                       = 1
11231:  xrecvmsg(UW71|XPG4, 29, 0xBFE2F790, 0)          = 153
11231:  close(29)                                       = 0
11231:  sysconfig(CLK_TCK)                              = 100
11231:      Incurred fault #5, FLTACCESS  %pc = 0x080C5414
11231:        siginfo: SIGSEGV SEGV_ACCERR addr=0xBFE2CA00
11231:      Received signal #11, SIGSEGV [caught]
11231:        siginfo: SIGSEGV SEGV_ACCERR addr=0xBFE2CA00
11180:      Received signal #18, SIGCLD, in poll() [default]
11180:        siginfo: SIGCLD CLD_KILLED pid=11231 uid=0 status=0x000B
11231:          *** process killed ***
11182:  block(0x00000000)                               = 0
11182:  prepblock(0xBFE02000, 0xBFE02000, 3)            = 0
11180:  poll(0x080479B4, 0, 1000)                       = 0
11180:  waitsys(P_ALL, 0, 0x08047B28, WEXITED|WTRAPPED|WUNTRACED|WNOHANG) = 0
11180:  write(21, " [ S u n   A u g   0 4  ".., 88)     = 88
11180:  waitsys(P_ALL, 0, 0x08047B28, WEXITED|WTRAPPED|WUNTRACED|WNOHANG) = 0
11180:  poll(0x080479B4, 0, 1000)                       = 0
11180:  waitsys(P_ALL, 0, 0x08047B28, WEXITED|WTRAPPED|WUNTRACED|WNOHANG) = 0
11182:  read(19, 0x08047C0B, 1)         (sleeping...)
11180:  poll(0x080479B4, 0, 1000)                       = 0
11180:  waitsys(P_ALL, 0, 0x08047B28, WEXITED|WTRAPPED|WUNTRACED|WNOHANG) = 0
11180:  poll(0x080479B4, 0, 1000)                       = 0
11180:  waitsys(P_ALL, 0, 0x08047B28, WEXITED|WTRAPPED|WUNTRACED|WNOHANG) = 0
11180:  poll(0x080479B4, 0, 1000)                       = 0
        repeats...
11180:  poll(0x080479B4, 0, 1000)                       = 0
11180:  waitsys(P_ALL, 0, 0x08047B28, WEXITED|WTRAPPED|WUNTRACED|WNOHANG) = 0
11180:      Received signal #15, SIGTERM, in poll() [caught]
11180:        siginfo: SIGTERM pid=11250 uid=0
11180:  poll(0x080479B4, 0, 1000)                       Err#4  EINTR
11180:  sigprocmask(SIG_SETMASK, 0xBFE727CC, 0x00000000) = 0
11180:  sigprocmask(SIG_SETMASK, 0xBFE7288C, 0x00000000) = 0
11180:  setcontext(0x080474F4)
11180:  write(20, " $", 1)                              = 1
11180:  write(20, " $", 1)                              = 1
11180:  write(20, " $", 1)                              = 1
11180:  write(20, " $", 1)                              = 1
11180:  write(20, " $", 1)                              = 1
11180:  write(20, " $", 1)                              = 1
11182:  read(19, " $", 1)                               = 1
11182:  write(21, " [ S u n   A u g   0 4  ".., 103)    = 103
11182:  _lwp_kill(2, SIGHUP)                            = 0
11182:  unblock(0xBFE728A8, 0xBFE728A8, 4)              = 0
11182:  unblock(0xBFE728A8, 0xBFE728A8, 4)              Err#22 EINVAL
11182:  sigaction(SIGWAITING, 0x08047B50, 0x00000000)   = 0
11182:  unblock(0xBFE728A8, 0xBFE728A8, 4)              Err#22 EINVAL
11182:  unblock(0xBFE728A8, 0xBFE728A8, 4)              Err#22 EINVAL
11182:  unblock(0xBFE728A8, 0xBFE728A8, 4)              Err#22 EINVAL
11182:  unblock(0xBFE728A8, 0xBFE728A8, 4)              Err#22 EINVAL
11182:  unblock(0xBFE728A8, 0xBFE728A8, 4)              Err#22 EINVAL
11182:  unblock(0xBFE728A8, 0xBFE728A8, 4)              Err#22 EINVAL
11182:  unblock(0xBFE728A8, 0xBFE728A8, 4)              Err#22 EINVAL
11182:  unblock(0xBFE728A8, 0xBFE728A8, 4)              Err#22 EINVAL
11182:  unblock(0xBFE728A8, 0xBFE728A8, 4)              Err#22 EINVAL
11182:  unblock(0xBFE728A8, 0xBFE728A8, 4)              Err#22 EINVAL
11182:  unblock(0xBFE728A8, 0xBFE728A8, 4)              Err#22 EINVAL
11182:  unblock(0xBFE728A8, 0xBFE728A8, 4)              Err#22
  etc

Finally, the obligatory uname info:
$ uname -a
UnixWare netlab1 5 7.1.1 i386 x86at SCO UNIX_SVR5

 Thanks,
 Joe Doupnik
 jrd@cc.usu.edu
 Utah State University

---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org