ID: 28687 User updated by: equake at epmail dot com dot br Reported By: equake at epmail dot com dot br Status: Bogus Bug Type: Reproducible crash Operating System: Linux 2.4.24 PHP Version: PHP5-200406081230 New Comment:
So PHP shouldn't show a "decent" error message in this situation? I think that it's not so important when you have a static script that you're working on a text editor, but it can be a major problem where you are generating php code "automagically" from a XML + XSLT, for example. Sometimes my (erroneous) generated script dies, without *any* message :/ Previous Comments: ------------------------------------------------------------------------ [2004-06-08 16:10:55] [EMAIL PROTECTED] 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. ------------------------------------------------------------------------ [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 ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/28687 -- Edit this bug report at http://bugs.php.net/?id=28687&edit=1