ID: 28687 Updated by: [EMAIL PROTECTED] Reported By: equake at epmail dot com dot br -Status: Open +Status: Bogus Bug Type: Reproducible crash Operating System: Linux 2.4.24 PHP Version: PHP5-200406081230 New Comment:
This behaviour is caused by endless loop: non-ex method -> __call -> non-ex method -> __call -> .. etc. Try to call this func: function foo() { return foo(); } and you'll get the same result. not a bug, though. Previous Comments: ------------------------------------------------------------------------ [2004-06-08 15:58:41] equake at epmail dot com dot br hmm the problem seems to happen ONLY when I try to return a inexistent method from the __call method class test { function __construct() { echo ("script started at ".time()."<br>\n"); } function __call($method, $params) { if ($method == "foo") { return $this->foo_method(); } else { return $this->buggy(); } } function foo_method() { return "TESTE DE MENSAGEM"; } } $test = new test(); $var = $test->foo(); // works $var2 = $test->foo2(); // segmentation fault ------------------------------------------------------------------------ [2004-06-08 15:47:29] equake at epmail dot com dot br the (correct) small script that throws the error: abstract class test { function __call($method, $params) { if (is_callable(array($this, $method))) { echo ("ok<br>"); return $this->{$method}($params); // [error_log] [notice] child pid # exit signal Segmentation fault (11) } } } class test2 extends test { function __construct() { echo ("hi, im test2 at ". time () ." seconds since 01/01/1970 <br>"); } function bla() { echo ('haha'); } function x() { } } $x = new test2(); $x->xjhjk(); // any inexistent method name ------------------------------------------------------------------------ [2004-06-08 15:42:35] equake at epmail dot com dot br I'm still having problems with the CVS-PHP5-200406081230 [Tue Jun 08 10:43:03 2004] [notice] child pid 2711 exit signal Segmentation fault (11) But I think that the problem only happen when I try to return a inexistent method inside a abstract class. The following code works well (no segmentation fault): class test { function call($method, $params=null) { if (is_callable(array($this, $method))) { return $this->{$method}($params); } else { echo ("not found"); } } function message() { return "TESTE DE MENSAGEM"; } } $test = new test(); $var = $test->call("not_exist"); echo $var; ------------------------------------------------------------------------ [2004-06-08 09:46:35] [EMAIL PROTECTED] Please try using this CVS snapshot: http://snaps.php.net/php5-latest.tar.gz For Windows: http://snaps.php.net/win32/php5-win32-latest.zip ------------------------------------------------------------------------ [2004-06-07 23:40:09] equake at epmail dot com dot br Description: ------------ I got a Segmentation Fault every time that I try to return some method that does not exists. Reproduce code: --------------- abstract class test { function __call($method, $params) { if (is_callable(array($this, $method))) { echo ("ok<br>"); return $this->{$method}($params); // abstract class test { function __call($method, $params) { if (is_callable(array($this, $method))) { echo ("ok<br>"); return $this->{$method}($params); // [error_log] [notice] child pid # exit signal Segmentation fault (11) } } } class test2 extends test { function __construct() { echo ("hi, im test2 at ". time () ." seconds since 01/01/1970 <br>"); } function bla() { echo ('haha'); } } $x = new test2(); $x->bla_inexistent(); // any inexistent method name } } } class test2 extends test { function __construct() { echo ("hi, im test2 at ". time () ." seconds since 01/01/1970 <br>"); } function bla() { echo ('haha'); } } $x = new test2(); $x->bla_inexistent(); // any inexistent method name Expected result: ---------------- hi, im test2 at 1086644752 seconds since 01/01/1970 Actual result: -------------- "[error_log] [notice] child pid # exit signal Segmentation fault (11)" on the apache Error Log ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=28687&edit=1