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