The following reply was made to PR os-unixware/1553; it has been noted by GNATS.
From: Dean Gaudet <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED]
Cc: Subject: Re: os-unixware/1553: Apache hangs on request (fwd)
Date: Mon, 5 Jan 1998 10:11:49 -0800 (PST)
---------- Forwarded message ----------
Date: Mon, 5 Jan 1998 11:58:30 -0400
From: Sean Garagan <[EMAIL PROTECTED]>
To: Dean Gaudet <[EMAIL PROTECTED]>
Subject: Re: os-unixware/1553: Apache hangs on request
Hi Dean,
Sorry for the slow reply, but tis the season and all that :)
The fix of adding -DUSE_FCNTL_SERIALIZED_ACCEPT seems to have worked, but I
also had to switch to the supplied cc from gcc for other reasons, so I am
not sure which was the exact fix. If the problem occurs again, I will let
you know
Sean
On Mon, Dec 15, 1997 at 03:00:08PM -0400, Dean Gaudet wrote:
> On Mon, 15 Dec 1997, Sean Garagan wrote:
>
> > getmsg(15, 0x0804770C, 0x08047700, 0x0804771C) (sleeping...)
>
> I'm reminded of how much I despise sysvr4 STREAMS ... they obscure so much
> useful stuff under abstractions. This is *probably* an accept()
> call.
>
> > poll(0x08045850, 1, -1) (sleeping...)
>
> This is select() implemented as poll() under the covers.
>
> > waitsys(P_ALL, 0, 0x08047850, WEXITED|WTRAPPED|WNOHANG) = 0
> > sleep(1)
>
> This is the parent.
>
> > poll(0x08045850, 1, -1) (sleeping...)
> > poll(0x08045850, 1, -1) = 1
> > sigaction(SIGUSR1, 0x080477F4, 0x08047830) = 0
> > sigprocmask(SIG_BLOCK, 0x08047754, 0x08047764) = 0
> > getmsg(15, 0x08047774, 0x00000000, 0x08047834) = 0
> > sigprocmask(SIG_SETMASK, 0x08047764, 0x00000000) = 0
> > ioctl(15, I_GETTP, 0x00000000) = 50
> > fxstat(2, 15, 0x08047780) = 0
> > open("/etc/netconfig", O_RDONLY, 0666) = 3
> > ioctl(3, TCGETS, 0x080471D0) Err#25 ENOTTY
> > ioctl(3, I_GETTP, 0x00000000) Err#25 ENOTTY
> > fxstat(2, 3, 0x08047210) = 0
> > read(3, " t c p\t t p i _ c o t s".., 8192) = 806
> > read(3, 0x0809FB30, 8192) = 0
> > lseek(3, 0, 0) = 0
> > read(3, " t c p\t t p i _ c o t s".., 8192) = 806
> > read(3, 0x0809FB30, 8192) = 0
> > close(3) = 0
> > xstat(2, "/dev/tcp", 0x08047780) = 0
> > open("/dev/tcp", O_RDWR, 027776033624) = 3
> > ioctl(3, I_FIND, "sockmod") = 0
> > ioctl(3, I_PUSH, "sockmod") = 0
> > ioctl(3, I_SETCLTIME, 0x08047718) = 0
> > ioctl(3, I_SWROPT, 0x00000002) = 0
> > sigprocmask(SIG_BLOCK, 0x080476A0, 0x080476B0) = 0
> > ioctl(3, I_STR, 0x08047668) = 0
> > sigprocmask(SIG_SETMASK, 0x080476B0, 0x00000000) = 0
> > ioctl(3, I_GETSIG, 0x080476E0) Err#22 EINVAL
> > sigprocmask(SIG_BLOCK, 0x080475C4, 0x080475D4) = 0
> > ioctl(3, I_STR, 0x08047580) = 0
> > sigprocmask(SIG_SETMASK, 0x080475D4, 0x00000000) = 0
> > sigprocmask(SIG_BLOCK, 0x08047754, 0x08047764) = 0
> > ioctl(15, I_FDINSERT, 0x08047808) = 0
> > fcntl(15, F_GETFL, 0x00000000) = 2
> > getmsg(15, 0x0804770C, 0x08047700, 0x0804771C) (sleeping...)
>
> Look at all that fun stuff! How ugly. What is it smoking with that
> fcntl() call? Interesting.
>
> Ok, wild guess time, try adding -DUSE_FCNTL_SERIALIZED_ACCEPT to
> EXTRA_CFLAGS in Configure and rebuilding the entire server. I'm
> guessing unixware doesn't like having the same socket inside an
> accept() and a select() at the same time.
>
> Dean
>