Edit report at http://bugs.php.net/bug.php?id=51701&edit=1
ID: 51701
Comment by: magnolitao at gmail dot com
Reported by: k dot nagakiran at gmail dot com
Summary: "Maximum execution time exceeded" error with round()
API on octeon platform
Status: Open
Type: Bug
Package: Math related
Operating System: Octeon
PHP Version: 5.3.2
New Comment:
I had a problem like this with php 5.3.2. but on freebsd 7.2...
Not a problem of max_execution_time but with the round() function,
<?php
echo round((5.5/100),3);
// gives : 0.0550000000000000002775557561563 <== I specified and
expected 3 floats, and no 30 !
?>
I have tested it on different PHP versions and OS, and others worked
fine.
<?php
echo round((5.5/100),3);
// gives : 0.055
?>
Finally, the error was in my php.ini, "precision" was setted to 30.
I change it to 14 , as usually.
Now, it works fine.
It was my responsability.... but this comportement of round() is very
surprising and I suppose this could help to understand a problem of
max_execution of time if your "precision" is very large.
I tested to raise progressively the "precision" to 100000 and even if I
cannot obtain an error like "max_execution_time exceeded", pages were
more and more long to charge until I obtain this error : "Balloc()
allocation exceeds list boundary".
Before, the max of floats I obtained is 57 :
0.055000000000000000277555756156289135105907917022705078125.
I don't know if we could talk about a bug for this comportment of PHP,
but it seems very important to let the directive "precision" to 14...
Previous Comments:
------------------------------------------------------------------------
[2010-04-30 08:55:56] k dot nagakiran at gmail dot com
Stack Trace:
(gdb) bt
#0 mult (a=0xb32000, b=0xb33000) at
src/dist/php/Zend/zend_strtod.c:674
#1 0x006c9604 in pow5mult (b=0xb32000, k=<value optimized out>) at
src/dist/php/Zend/zend_strtod.c:803
#2 0x006cbf80 in zend_dtoa (_d=<value optimized out>, mode=2,
ndigits=14, decpt=0x3ffe9d80, sign=0x3ffe9d84, rve=0x0) at
src/dist/php/Zend/zend_strtod.c:1838
#3 0x005cd3c4 in php_gcvt (value=12, ndigit=14, dec_point=46 '.',
exponent=0 '\0', buf=0x3ffe9df1 "") at src/dist/php/main/snprintf.c:142
#4 0x005ce67c in vspprintf (pbuf=0x3ffea0e8, max_len=0, format=<value
optimized out>, ap=<value optimized out>) at
src/dist/php/main/spprintf.c:669
#5 0x00620db8 in zend_spprintf (message=0x3ffea0e8, max_len=0,
format=0x2 <Address 0x2 out of bounds>) at
src/dist/php/Zend/zend_exceptions.c:529
#6 0x006bc270 in zend_locale_sprintf_double (op=0x3ffea0e8) at
src/dist/php/Zend/zend_operators.c:2047
#7 0x005f8dbc in zend_make_printable_zval (expr=0x9aec40,
expr_copy=0x3ffea0e8, use_copy=0x3ffea0f8) at
src/dist/php/Zend/zend.c:276
#8 0x005f8e8c in zend_print_zval_ex (write_func=0x5bb56c
<php_body_write_wrapper>, expr=0x3ffea0e8, indent=<value optimized out>)
at src/dist/php/Zend/zend.c:300
#9 0x005f95a0 in zend_print_zval (expr=0x0, indent=2) at
src/dist/php/Zend/zend.c:291
#10 0x006cce04 in zend_print_variable (var=0x3ffea0e8) at
src/dist/php/Zend/zend_variables.c:150
#11 0x0063d2b0 in ZEND_ECHO_SPEC_VAR_HANDLER (execute_data=0xaf1020) at
src/dist/php/Zend/zend_vm_execute.h:7819
#12 0x00625ea4 in execute (op_array=<value optimized out>) at
src/dist/php/Zend/zend_vm_execute.h:104
#13 0x005f7328 in zend_execute_scripts (type=8, retval=0x0,
file_count=3) at src/dist/php/Zend/zend.c:1194
#14 0x005bafbc in php_execute_script (primary_file=0x3ffeb8b8) at
src/dist/php/main/main.c:2260
#15 0x006cffa4 in main (argc=0, argv=0x0) at
src/dist/php/sapi/cgi/cgi_main.c:2102
(gdb) finish
Run till exit from #0 mult (a=0xb32000, b=0xb33000) at
src/dist/php/Zend/zend_strtod.c:674
0x006c9604 in pow5mult (b=0xb32000, k=<value optimized out>) at
src/dist/php/Zend/zend_strtod.c:803
803 in src/dist/php/Zend/zend_strtod.c
Value returned is $22 = (Bigint *) 0xb34000
(gdb) finish
Run till exit from #0 0x006c9604 in pow5mult (b=0xb32000, k=<value
optimized out>) at src/dist/php/Zend/zend_strtod.c:803
X-Powered-By: PHP/5.3.2
Content-type: text/html
<br />
<b>Fatal error</b>: Maximum execution time of 30 seconds exceeded in
<b>/cf/var/jail/jail-srxsme/html/testPHP.php</b> on line <b>13</b><br
/>
Program exited with code 0377.
------------------------------------------------------------------------
[2010-04-30 07:02:32] k dot nagakiran at gmail dot com
Description:
------------
I am facing issues with round() API of PHP 5.3.2 compiled for octeon
platform.
The following one line script throws the following error:
"Maximum execution time of 30 seconds exceeded in <fileName>"
<?php
echo round(12);
?>
With gdb, I noticed that its doing an infinite loop inside
"static Bigint * mult(Bigint *a, Bigint *b)" in Zend/zend_strtod.c
It works fine with PHP 5.2.3 compiled for octeon platform.
I don't see any difference in function definition between these 2
releases.
Is it a known issue or any patch available?
Please let me know if I need to provide more information.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/bug.php?id=51701&edit=1