ID: 28827 Updated by: [EMAIL PROTECTED] Reported By: valyala at tut dot by -Status: Feedback +Status: No Feedback Bug Type: Documentation problem Operating System: any PHP Version: 4.3.7 New Comment:
No feedback was provided for this bug for over a week, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open". Previous Comments: ------------------------------------------------------------------------ [2004-06-18 12:40:38] [EMAIL PROTECTED] The example from docs works perfectly with latest PHP5 & PHP4. Concerning stack overflows, read php-dev archives. For example this post: http://lists.php.net/article.php?group=php.internals&article=8851 and all the tread: http://lists.php.net/article.php?group=php.internals&article=8840 Short version: this is expected behaviour. ------------------------------------------------------------------------ [2004-06-18 12:23:54] valyala at tut dot by Description: ------------ The following example code, which "will calculate factorial of 1000 (pretty big number) very fast" on documentation page http://php.net/gmp/ crashes PHP. ------------------------------- <?php function fact($x) { if ($x <= 1) { return 1; } else { return gmp_mul($x, fact($x-1)); } } echo gmp_strval(fact(1000)) . "\n"; ?> ------------------------------- The next PHP code avoids the crash: ------------------------------- <?php function fact($x) { $result = 1; while ($x > 1) { $result = gmp_mul($result, $x--); } return $result; } echo gmp_strval(fact(1000)) . "\n"; } ?> ------------------------------- This bug related to the following bugs: #7720, #15522, #26212. It seems that PHP4.3.7 (and older) don't handle stack overflow during function calls. You can find the maximum recursion depth for your version of PHP independently. Just play with $rec_depth number in the following script: --------------------------- <?php function f($n) { if (--$n) f($n); } /* adjust this number to find the maximum recursion depth */ $rec_depth = 1000; f($rec_depth); ?> --------------------------- p.s. Are the volunteers in PHP developement team, who wanted to track stack overflow problem? Reproduce code: --------------- see above Expected result: ---------------- decimal view of 1000! Actual result: -------------- PHP crash ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=28827&edit=1