ID:               28827
 Updated by:       [EMAIL PROTECTED]
 Reported By:      valyala at tut dot by
-Status:           No Feedback
+Status:           Closed
 Bug Type:         Documentation problem
 Operating System: any
 PHP Version:      4.3.7
 New Comment:

This bug has been fixed in the documentation's XML sources. Since the
online and downloadable versions of the documentation need some time
to get updated, we would like to ask you to be a bit patient.

Thank you for the report, and for helping us make our documentation
better.




Previous Comments:
------------------------------------------------------------------------

[2004-06-28 01:00:02] phpdoc at lists dot php dot net

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".

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

[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

Reply via email to