The following reply was made to PR os-unixware/1553; it has been noted by GNATS.
From: Dean Gaudet <[EMAIL PROTECTED]>
To: Sean Garagan <[EMAIL PROTECTED]>
Cc: [EMAIL PROTECTED]
Subject: Re: os-unixware/1553: Apache hangs on request
Date: Mon, 15 Dec 1997 11:00:08 -0800 (PST)
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