ID:               28377
 Updated by:       [EMAIL PROTECTED]
 Reported By:      sean at caedmon dot net
 Status:           Verified
 Bug Type:         Scripting Engine problem
 Operating System: *
 PHP Version:      4CVS-2004-07-02
 New Comment:

debug_backtrace loses information in subsequent movements up the
stack.

Simple test script:
<?php
function a() {
    b();
}

function b() {
    c('foo', 'bar');
}

function c($a, $b){
    print_r(debug_backtrace());
    d();
}

function d() {
    print_r(debug_backtrace());
}

a();
?>

This block should be present in both backtraces:

            [function] => c
            [args] => Array
                (
                    [0] => foo
                    [1] => bar
                )

In the second backtrace, it is not:

            [function] => c
            [args] => Array
                (
                )

This problem does not, as one might expect, propogate to
debug_print_backtrace.


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

[2005-03-01 18:41:14] helmut at topconcepts dot de

I have the same error with 5.0.3 and 5.0.4-dev
so it's not only a PHP 4 problem

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

[2004-05-12 20:43:48] sean at caedmon dot net

Description:
------------
debug_backtrace() behaves strangely when passed as a function
argument.

This does not happen if debug_backtrace is dereferenced (see code), nor
if debug_backtrace() is the first parameter to my custom_callback
function (not denoted in code)

I'll be happy to provide additional details.

This SEEMS like #27397 but is not a ZE2 problem (I'm using 4.3) and is
NOT fixed in CVS.

Thanks,
S


Reproduce code:
---------------
<?php
function doit($a, $b)
{
  $trace = debug_backtrace();
  custom_callback('dereferenced', $trace);
  custom_callback('direct', debug_backtrace());
}
  
function custom_callback($traceName, $btInfo)
{
  echo $traceName ." -- args: ";
  echo isset($btInfo[0]['args']) ? 'exists' : 'does not exist';
  echo "\n";
}
  
doit('a','b');

?>


Expected result:
----------------
dereferenced -- args: exists
direct -- args: exists


Actual result:
--------------
dereferenced -- args: exists
direct -- args: does not exist



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


-- 
Edit this bug report at http://bugs.php.net/?id=28377&edit=1

Reply via email to