ID: 21040 Comment by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] Status: Open Bug Type: Apache2 related Operating System: Solaris x86 2.7 PHP Version: 4.4.0-dev New Comment:
Just out of curiosity, and admittedly not quite understanding what I was doing, I have tried changing the zend_set_timeout code to use SIGALRM instead of SIGPROF and thus pass ITIMER_REAL to setitimer instead of ITIMER_PROF Guess what? It works now. I understand that this can have nasty side effects. I was just wondering why SIGPROF was being used and if this could be the reason. The setitimer man page on Solaris says a lot of things about using it in MT environment which I don't quite catch :-) Previous Comments: ------------------------------------------------------------------------ [2002-12-16 05:08:07] [EMAIL PROTECTED] reopened..(please don't add comments to your own bug report, use the 'Edit Submission' and change the status to open when you give feedback.) ------------------------------------------------------------------------ [2002-12-16 04:47:49] [EMAIL PROTECTED] Just tried with php4-200212160830 (4.4.0-dev): same, the script never exits. I'm compiling this on Solaris 2.7/SPARC and FreeBSD 4.5 to see how much O/S & platform specific this problem is. I've added a zend_printf("zend_timeout<BR>\n"); to zend_timeout() (Zend/zend_execute_API.c). I can see the message in the browser when timeout works (like when running in Apache 1.3) but not when it doesn't (although my loop.php script now exits after a huge for loop so that I can see the page output). So I presume that the signal triggered by setittimer in zend_set_timeout() is never delivered. Thanks for the impressively fast reply! ------------------------------------------------------------------------ [2002-12-16 03:27:52] [EMAIL PROTECTED] Recategorize. Can you also try it with the latest CVS version (HEAD) (you may find the development snapshot at http://snaps.php.net ------------------------------------------------------------------------ [2002-12-16 03:24:54] [EMAIL PROTECTED] I have max_execution_time set to 30 and safe_mode set to On in php.ini. The phpinfo() page shows them as such. When PHP 4.3.0RC3 is compiled as a module for Apache 2.0.43, a script that loops is never stopped e.g.: loop.php: cat loop.php <? while ( 1 ) { } ?> will loop forever. I have tested that max_execution_time value is correct by having a script use ini_get to get it and display it. PHP configured as: ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local --enable-memory-limit=yes --enable-track-vars --enable-debug=no --enable-sockets Apache configured as: CFLAGS="-DFD_SETSIZE=8128" ./configure --enable-so --enable-ssl --enable-include --enable-cgi --enable-rewrite --enable-status --enable-expires --enable-info --with-egd=/var/run/egd-pool --with-mpm=worker More checks done: PHP 4.3.0RC3 configured for Apache 1.3.26 static works normally. Same, with Apache 2.0.43 configured to use prefork (non-threaded) model instead of worker: works also. So it seems to be related to the Apache 2 threaded stuff. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=21040&edit=1