Bug #79827 [Dup]: debug_backtrace() does not return passed args

From: Date: Fri, 10 Jul 2020 19:09:19 +0000
Subject: Bug #79827 [Dup]: debug_backtrace() does not return passed args
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-227944@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=79827&edit=1 ID: 79827 Updated by: nikic@php.net Reported by: michael dot vorisek at email dot cz Summary: debug_backtrace() does not return passed args Status: Duplicate Type: Bug Package: Scripting Engine problem Operating System: any PHP Version: 7.4.8 Block user comment: N Private report: N New Comment: As I have already indicated with the link above, this is an intentional behavior change in PHP 7.0, which is mentioned in https://www.php.net/manual/en/migration70.incompatible.php#migration70.incompatible.other.func-parameter-modified. It has nothing to do with by-value / by-reference passing, it is just a question of whether the original or current values of parameter variables are provided. Not providing the original values removes the need to copy the original values for every call. Extensions like xdebug remember original values, with the associated performance cost. Previous Comments: ------------------------------------------------------------------------ [2020-07-10 19:00:31] michael dot vorisek at email dot cz This actually violates the language definition, as $filename = realpath($filename); is not an assigment by reference! ------------------------------------------------------------------------ [2020-07-10 16:09:39] michael dot vorisek at email dot cz Any functions that rely on backtrace are currently affected. Is the penalty of copy on write really that high and is there a will to fix this issue? ------------------------------------------------------------------------ [2020-07-10 14:10:35] nikic@php.net Duplicate of bug #71547. ------------------------------------------------------------------------ [2020-07-10 14:08:03] michael dot vorisek at email dot cz Description: ------------ debug_backtrace() currently returns args by reference, ie. the returned args variables, not the passed values. Very hard to debug, backtrace should always return the passed data. Test script: --------------- function x(string $filename) { $filename = realpath($filename); $trace = debug_backtrace(); var_dump($trace[0]['args']); } x('non_existing_file.txt'); Expected result: ---------------- array(1) { [0]=> bool(false) } Actual result: -------------- array(1) { [0]=> string(21) "non_existing_file.txt" } ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=79827&edit=1

« previous php.bugs (#227944) next »