#33621 [Fbk->Bgs]: Exit code 0377 when calling a non-existant method using a dynamic call
| From: | dmitry@php.net | Date: | Mon, 11 Jul 2005 06:51:57 +0000 |
| Subject: | #33621 [Fbk->Bgs]: Exit code 0377 when calling a non-existant method using a dynamic call | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-81654@lists.php.net to get a copy of this message | ||
ID: 33621
Updated by: dmitry@php.net
Reported By: davey@php.net
-Status: Feedback
+Status: Bogus
Bug Type: Scripting Engine problem
Operating System: Ubuntu Linux 5.04
PHP Version: 5CVS-2005-07-09 (dev)
Assigned To: dmitry
New Comment:
Seems you lose fatal error messages. Set "disaplay_error" and
"error_reporting" directives in your php.ini.
Fatal error: Call to undefined method foo::foo() in ...
Fatal error: Method foo::__call() must take exactly 2 arguments in ...
Previous Comments:
------------------------------------------------------------------------
[2005-07-09 11:39:28] tony2001@php.net
Are you sure you have display_errors set to ON ?
I can't see any "crashes" here, only Fatal error and the following exit
with status 0377.
Exactly the same result you'll get with
<?php nonex(); ?>
------------------------------------------------------------------------
[2005-07-09 05:56:44] davey@php.net
After further testing, I have found two more cases where this error
occurs:
When __call is defined, but no args are specified (i.e. function
__call() { }) and is_callable() or method_exists() are called, Exit
Code 0377 is also given.
Whilst I understand this is an erroneous situation, it should either
not care (i.e. func_get_args is being used for some stupid reason) or
throw an error.
- Davey
------------------------------------------------------------------------
[2005-07-09 05:17:59] davey@php.net
Description:
------------
I'm using head as of 5 minutes ago, approx: 23:10 EST
Calling a non-existant method using the $obj->{$var}() notation causes
an unexplained exit of the script with the exit code 0377.
Reproduce code:
---------------
<?php
class foo {
function __construct()
{
$var = "foo";
$this->{$var}();
}
}
$foo = new foo;
?>
Expected result:
----------------
Nothing
Actual result:
--------------
With --enable-debug all I get this from gdb:
(gdb) run -f
/var/www/php-cvs/testcase/evil_death_variable_method_call_nonexistant.php
Starting program: /var/www/php-cvs/php-src/sapi/cli/php -f
/var/www/php-cvs/testcase/evil_death_variable_method_call_nonexistant.php
[Thread debugging using libthread_db enabled]
[New Thread -1214975328 (LWP 9095)]
Program exited with code 0377.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=33621&edit=1