perl 5.8.8, backtick execution and leopard
perl 5.8.8, backtick execution and leopard
- Subject: perl 5.8.8, backtick execution and leopard
- From: Nathan Herring <email@hidden>
- Date: Wed, 23 Jan 2008 15:42:15 -0800
- Acceptlanguage: en-US
- Thread-topic: perl 5.8.8, backtick execution and leopard
Title: perl 5.8.8, backtick execution and leopard
We have a lightweight perl-based HTTP server running. The main loop looks like accept() (with a 10s timeout), and if it timed out, we run an “OnTick” periodic task. After upgrading from 10.4.10 to 10.5.1, the server will eventually stop responding. We’ve tracked it down to perl hanging in __wait4() underneath a backtick execution (calling df to determine whether we need to do disk space cleanup commands). wait4()’s argument is a pid that isn’t in the process list, but nonetheless, the function never returns. This doesn’t seem to happen until such time as the HTTP server kicks off a local process that uses the machine heavily (including making major edits in the directory on which df is called). Because the pid isn’t around, I don’t think df is the culprit, but I cannot fathom why wait4 would get stuck. (From gdb’s perspective, there’s only one thread, so...)
Is this a known issue and/or is there something I can do to track it down further or work around it? (I was using Instruments with tracing the user function Perl_my_popen with argument1 (the cmd), and the syscall to wait4 for both entry and exit to see that exit isn’t happening.)
-nh
--
Nathan Herring
com.microsoft.devdiv.clr.os/development
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden