For Programmers: Free Programming Magazines  


Home > Archive > PHP Documentation > June 2004 > #28827 [Fbk->NoF]: The example PHP code in docs http://php.net/gmp/ crashes PHP









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author #28827 [Fbk->NoF]: The example PHP code in docs http://php.net/gmp/ crashes PHP
phpdoc@lists.php.net

2004-06-28, 8:57 am

ID: 28827
Updated by: phpdoc@lists.php.net
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 w, 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] tony2001@php.net

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
Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com