The following reply was made to PR os-unixware/1553; it has been noted by GNATS.
From: Sean Garagan <[EMAIL PROTECTED]>
To: Dean Gaudet <[EMAIL PROTECTED]>
Cc: [EMAIL PROTECTED]
Subject: Re: os-unixware/1553: Apache hangs on request
Date: Mon, 15 Dec 1997 14:41:24 -0400
On Mon, Dec 15, 1997 at 02:02:32PM -0400, Dean Gaudet wrote:
> Is your ServerRoot on an NFS partition? If so try using "LockFile
> /var/tmp/htlock" to move the lockfile elsewhere.
>
No, the partition is local.
> Otherwise, check if there are any unixware patches. Traditionally
> unixware/sco have needed to have various patches applied before they'll
> run apache reliably.
>
I will check this shortly. I am quickly realizing just how broken Unixware
seems to be :)
> Another useful thing you can do is try using truss/ktrace/strace
> (whichever your system has) on the children after they've stopped serving.
> To make this easier you probably should use MinSpareServer 1 and
> MaxSpareServer 2.
>
After setting Min to 1 and Max to 2, I got the parent with 2 children.
Running truss on the processes gives the following:
getmsg(15, 0x0804770C, 0x08047700, 0x0804771C) (sleeping...)
poll(0x08045850, 1, -1) (sleeping...)
waitsys(P_ALL, 0, 0x08047850, WEXITED|WTRAPPED|WNOHANG) = 0
sleep(1)
The order of these goes from the youngest to oldest process id.
When I hit a server that is hanging, truss reports the following:
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...)
I hope this helps, thanks for the quick response.
Sean