Bug #74093 [Opn->Fbk]: Maximum execution time of n+2 seconds exceed not written in error_log

From: Date: Tue, 14 Feb 2017 08:06:30 +0000
Subject: Bug #74093 [Opn->Fbk]: Maximum execution time of n+2 seconds exceed not written in error_log
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-207376@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=74093&edit=1

 ID:                 74093
 Updated by:         laruence@php.net
 Reported by:        rainer-phpbugs at 7val dot com
 Summary:            Maximum execution time of n+2 seconds exceed not
                     written in error_log
-Status:             Open
+Status:             Feedback
 Type:               Bug
 Package:            FPM related
 Operating System:   Linux
 PHP Version:        7.1.1
 Block user comment: N
 Private report:     N

 New Comment:

this is an expected behavior, since 7.1 we have new safe timeout handling system, and you example
must trigger hard_timeout, in that case, no php function can be called for safety, so we only can
call fprintf(stderr instead..

thanks


Previous Comments:
------------------------------------------------------------------------
[2017-02-13 14:48:09] rainer-phpbugs at 7val dot com

Description:
------------
If a Library call does not return within 2s after the max_execution_time has been exceeded,
zend_timeout_handler() in Zend/zend_execute_API.c approx. Line 1201 emits the error message to
STDERR instead of writing it into the error_log and then kills the child. As a result, the following
message, without any further explanation, is logged in error_log:

child 23444 exited with code 1 after 360.705768 seconds from start

If catch_workers_output is enabled, the "Maximum execution [...] exceeded" message is
logged in error_log, prefixed with "said into stderr".

This is a regression from PHP 7.0. (tested with 7.0.15, which logs a message in error_log, while
7.1.1 does not with the default configuration).

Test script:
---------------
<?php
/* generate an image with lots of colors using imagemagick:
convert -size 4096x4096 -define gradient:direction=east gradient:red-green PNG48:hor_gradient.png
convert hor_gradient.png -rotate 90 gradient_h.png
convert -size 4096x4096 gradient: PNG48:linear_gradient.png
composite linear_gradient.png -compose Multiply gradient_h.png grad.png

or download from http://can avan.de/lots_of_colors.png
*/

$i = new imagick();
$i->readimage('grad.png');
print($i->getImageColors()."\n");


Expected result:
----------------
"Fatal error: Maximum execution time of 30+2 seconds" should be logged in the configured
error_log, just like the "Fatal error: Maximum execution time of 30 seconds" message. 

This should be independent of the catch_workers_output setting.

Actual result:
--------------
Only "child 1903 exited with code 1 after 68.983009 seconds from start" is logged.


------------------------------------------------------------------------



--
Edit this bug report at https://bugs.php.net/bug.php?id=74093&edit=1


Thread (7 messages)

« previous php.bugs (#207376) next »