ID: 27759 Updated by: [EMAIL PROTECTED] Reported By: patrick at rap-x dot com Status: Closed Bug Type: BC math related Operating System: win32 only PHP Version: 5.0.0RC1 New Comment:
The fix was located just *after* the release of 5.0.0 (literally, like, the next day), look for it in 5.0.1. Previous Comments: ------------------------------------------------------------------------ [2004-07-25 00:22:19] davesk78 at yahoo dot com This bug still exists in the final release (5.0.0). I'm running Apache 2, PHP 5.0.0, and Windows XP Pro. Same test case: $total = "0"; $diff = ""; $result = bcadd($total, $diff, 6); echo $result; exit; The following also causes Apache to crash: $total = "0"; $diff = ""; $result = bcpow($total, $diff, 6); echo $result; exit; ------------------------------------------------------------------------ [2004-07-07 15:48:45] pk at onpk dot net The reproduce code still crashes on my box Windows 2000 pro, Apache 1.3.27, PHP5 build 2195. And not only with "bcadd" but also with : $total = "0"; $diff = ""; bcpow($total, $diff, 6); And : $total = "0"; $diff = ""; bcsub($total, $diff, 6); However I've to admit that ttt_cao at hotmail dot com's remedy does work. By the way, I'm not using PEAR`s Benchmark_Timer. Hope someone will look at this. Thanks in advance. Perrick :: http://www.onpk.net/ ------------------------------------------------------------------------ [2004-06-29 18:51:18] ttt_cao at hotmail dot com update the function getProfiling() in timer.php as the follows, maybe you can fix the bug. function getProfiling() { $i = 0; $total = $temp = '0.0'; $result = array(); foreach ($this->markers as $marker => $time) { if (extension_loaded('bcmath')) { $diff = bcsub($time, $temp, 6); if ($i > 0) $total = bcadd($total, $diff, 6); } else { $diff = $time - $temp; $total = $total + $diff; } echo "$time $diff $total <br>"; $result[$i]['name'] = $marker; $result[$i]['time'] = $time; $result[$i]['diff'] = $diff; $result[$i]['total'] = $total; $this->strlen_max = (strlen($marker) > $this->strlen_max ? strlen($marker) + 1 : $this->strlen_max); $temp = $time; $i++; } $result[0]['diff'] = '-'; $this->strlen_max = (strlen('total') > $this->strlen_max ? strlen('total') : $this->strlen_max); $this->strlen_max += 4; return $result; } ------------------------------------------------------------------------ [2004-06-18 01:21:42] rashid at ds dot pg dot gda dot pl bug is closed so i dare to add 'me too' so maybe someone will reopen it :] php5 rc2: problem exists in both bc_sub and bc_add (PEAR`s Benchmark_Timer works great as perfect example of this bug) ------------------------------------------------------------------------ [2004-04-26 13:26:06] marv at cyberia dot net dot lb This bug still exists in PHP5RC2. There isn't a problem with bcmath itself, but something is corrupting heap memory that bcmath uses. bcmath allocates three numbers (zero, one, and two) when it first starts up. If any of these numbers is then used (such as when adding zero to a number in bcadd) Apache crashes. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/27759 -- Edit this bug report at http://bugs.php.net/?id=27759&edit=1