Hello, this patch introduced a bug in 5_3/HEAD, the timeout is no longer checked in the shutdown function:
set_time_limit(1); register_shutdown_function("plop"); function plop() { while(1); } plop(); doesn't terminate http://patches.colder.ch/php-src/shutdown_timeout-5_3.patch?markup fixes it but I'm not sure it's the right way to do it. Can you please take a look? Thanks. On Tue, Mar 18, 2008 at 11:42 PM, Rasmus Lerdorf <ras...@php.net> wrote: > rasmus Tue Mar 18 21:42:51 2008 UTC > > Modified files: (Branch: PHP_5_3) > /ZendEngine2 zend_execute.h zend_execute_API.c > /php-src/main SAPI.c SAPI.h main.c php_globals.h > /php-src/sapi/apache mod_php5.c > Log: > exit_on_timeout patch > > After the sigsetjmp change, this is patch #2 in an effort to get some > sanity restored to signal handling in PHP. > > This patch does two things. First, it makes it possible to reset the > timeout without resetting the signal handlers. This is important for > cases where an extension may have deferred signals in its MINIT in order > to implement critical sections. It also lays the groundwork for cleaning > up our signal handling and perhaps eventually implementing our own > signal deferring mechanism so we can have true critical sections. > > The second thing this does is to make it possible to terminate the current > child process (only for Apache1 at the moment) on a timeout. There are > a number of extensions that are unhappy about being longjmp'ed out of > and when this happens on a timeout they are left in an inconsistent state. > By turning on exit_on_timeout you can now force the process to terminate > on a timeout which will clean up any hanging locks and/or memory left > hanging after the longjmp. > > > -- > PHP CVS Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > -- Etienne Kneuss http://www.colder.ch Men never do evil so completely and cheerfully as when they do it from a religious conviction. -- Pascal -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php