Hello. I'm having trouble with a new setup on a RedHat Entreprise Linux 4 box. The problem is that whenever there is perl code that fork to execute something, the apache child hang.
The problem occur with a specific function is called. But the weird part
is that the hang don't occur when that function is called; it happened
later, when a call to an external program is made, like:
my ($x, $y) = MyFunc();
# anything else
$h = qx( /bin/hostname );
# hanged here.
When it hang, it will show up is ps like this:
$ ps axf
[....]
10002 ? Ss 0:00 /usr/local/apache_backend-1.3.33/bin/httpd
10003 ? S 0:00 \_ usr/local/apache_backend-1.3.33/bin/httpd
10004 ? S 0:00 \_ usr/local/apache_backend-1.3.33/bin/httpd
10042 ? S 0:00 \_ [hostname]
If I strace the apache child, all I see is that the process is reading
something, but hanged there.
[...]
clone(child_stack=0,
flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD,
child_tidptr=0xb7ff7708) = 10009
close(10) = 0
close(8) = 0
read(9,
If I strace the hostname process, the process is released: the request
continue, the output is sent, and the apache child is released.
I've tried to isolate what it the function could cause or favorise the
hang: the function is used to setup a session using Apache::Session on
an NFS shared directory.
I've added some "return ({}, {});" here and there in the function to
find a specific place. But the spot I've found is pretty weird... It is
completely at the end of the function.
return ($zzz, $xxx) ; # with fake data; will work
return ($session, $params_cookie); # real data, will not work
So, if a add a return with empty hash-ref, or fake value hashref, it is
ok. But if I return the actual hashref, it will then hang later.
This is running on Apache 1.3.33, mod_perl 1.29, on a dual-processor
machine. Perl is 5.8.5, as shipped from RedHat. Apache and mod_perl is
compiled, with mod_perl as a compiled-in module. The same code is
running on 3 RHEL 3 without problems; it's only with RHEL4 that it does
not work, with everything compiled the same way.
Anyone have an idea what else I can test and/or try?
--
Benoit Caron
Administrateur système
Canoe inc.
----
I read the FM, and it didn't work.
signature.asc
Description: OpenPGP digital signature
