#33621 [Fbk->Bgs]: Exit code 0377 when calling a non-existant method using a dynamic call

From: 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

« previous php.bugs (#81654) next »