#43175 [Opn->Ver]: __destruct() with __call() causes segfault
| From: | jani@php.net | Date: | Thu, 01 Nov 2007 17:17:42 +0000 |
| Subject: | #43175 [Opn->Ver]: __destruct() with __call() causes segfault | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-119218@lists.php.net to get a copy of this message | ||
ID: 43175
Updated by: jani@php.net
Reported By: development at domain51 dot com
-Status: Open
+Status: Verified
Bug Type: *General Issues
-Operating System: Linux and Mac OS X
+Operating System: *
-PHP Version: 5.2.4
+PHP Version: 5CVS,6CVS (2007-11-01)
New Comment:
I noticed you try to throw in destructor and that's not supposed to
work. See page: http://docs.php.net/manual/en/language.oop5.decon.php
"Note: Attempting to throw an exception from a destructor (called in
the time of script termination) causes a fatal error. "
Of course it shouldn't cause any crash though. :)
Previous Comments:
------------------------------------------------------------------------
[2007-11-01 15:27:51] development at domain51 dot com
Description:
------------
If __destruct() throws an exception on an object that was not assigned
to a variable, but had __call() invoked, it will segfault
Reproduce code:
---------------
Full test case available at:
http://plumb.domain51.com/sandbox/__destruct-bug/bug.phpt
http://plumb.domain51.com/sandbox/__destruct-bug/bug.phps
(syntax
highlighted)
Simplified sample:
foobar::factory()>unknown();
foobar()->unknown(); // where foobar is a function wrapping new foobar
Expected result:
----------------
Exception to be thrown in foobar::__destruct()
Actual result:
--------------
Segfault on Linux
Bus error on Mac OSX
I'll get a backtrace added later as time allows
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=43175&edit=1