ID: 29896
Updated by: [EMAIL PROTECTED]
Reported By: terry at pothecary dot com
-Status: Open
+Status: Verified
Bug Type: Zend Engine 2 problem
-Operating System: Windows 2000
+Operating System: *
-PHP Version: 5.0.1
+PHP Version: 5CVS-2005-03-07
Previous Comments:
------------------------------------------------------------------------
[2004-09-28 10:17:18] flying at dom dot natm dot ru
I can confirm this bug still available into newly released PHP 5.0.2.
Besides mentioned problem of functions agruments shifting there is also
a problem with arguments substitution for a function, where error
occurs. Here is example code and backtrace results print:
Script
======
<?php
function err()
{
echo debug_print_backtrace();
};
set_error_handler('err');
function a()
{
b('arg-b');
};
function b()
{
c('arg-c');
};
function c()
{
$a = 1/0;
};
a('arg-a');
?>
debug_print_backtrace() output
==============================
#0 err() called at [c:\test.php:21]
#1 c() called at [c:\test.php:21]
#2 c(2, Division by zero, c:\test.php, 21, Array ()) called at
[c:\test.php:16]
#3 b(arg-c) called at [c:\test.php:11]
#4 a(arg-b) called at [c:\test.php:24]
Array
Expected results
================
1. line #1 should not be here
2. line #2 should have actual argument 'arg-a' instead of listed
arguments, which are actually passed to error handler function
3. It is not clear for me where 'Array' word is came from on last line
------------------------------------------------------------------------
[2004-08-30 14:14:39] terry at pothecary dot com
Description:
------------
If you call and enumerate the information from a debug_backtrace() in a
user error handler then the argument list is out of step with the other
information.
Reproduce code:
---------------
function userErrorHandler($num, $msg, $file, $line, $vars)
{
debug_print_backtrace();
}
$OldErrorHandler = set_error_handler("userErrorHandler");
function GenerateError1($A1)
{
$a = $b;
}
function GenerateError2($A1)
{
GenerateError1("Test1");
}
GenerateError2("Test2");
Expected result:
----------------
I expect the final line in the backtrace to show a call of:
GenerateError2(Test2)
Actual result:
--------------
The final line in the backtrace shows a call of:
GenerateError2(Test1)
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=29896&edit=1