|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #51458 Lack of error context with nested exceptions
Submitted: 2010-04-01 23:15 UTC Modified: 2011-01-16 22:26 UTC
From: nlgordon at gmail dot com Assigned: stas
Status: Closed Package: Unknown/Other Function
PHP Version: 5.3.2 OS: Redhat Linux
Private report: No CVE-ID:
 [2010-04-01 23:15 UTC] nlgordon at gmail dot com
In short, if you thrown an exception from within the exception handler, you get an uninformative error message with no contextual information.  It makes sense for this case to be a fatal error.  We don't want to get recursive throwing of exceptions and spiral to our death.

If you create an exception in the error handler without throwing it, it has the correct info about where it was created. This is enough to figure out where the error is coming from.  It is at least far more informative and gives you a starting place in a potentially complex code base.

From my quick look at the code in Zend/zend_exceptions.c:94 where this originates.  It looks like the exception is there, and that would have file/line num info.

Test script:


function exceptionHandler($excp)
	throw new Exception("Error 2");

throw new Exception("Error 1");

Expected result:
Fatal Error: Error 2

Actual result:
Fatal error: Exception thrown without a stack frame in Unknown on line 0


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2011-01-09 22:37 UTC] sailormax at inbox dot lv
same problem with 5.2.x after 5.2.5;
I had calling unexist function in exception handler. In result PHP returned empty page and didn't write any error in logs. Not very comfortable debug scripts in such conditions... :/
 [2011-01-16 22:24 UTC]
Automatic comment from SVN on behalf of stas
Log: Fix bug #47143, bug #51458 - provide more useful info in bad exception cases
 [2011-01-16 22:26 UTC]
-Status: Open +Status: Closed -Assigned To: +Assigned To: stas
 [2011-01-16 22:26 UTC]
This bug has been fixed in SVN.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
Thank you for the report, and for helping us make PHP better.

 [2011-05-17 07:55 UTC] paul at annesley dot cc
More specifically, this was fixed between PHP 5.3.5 and PHP 5.3.6 in the following 

r307523 | stas | 2011-01-17 08:24:43 +1100 (Mon, 17 Jan 2011) | 2 lines
Fix bug #47143, bug #51458 - provide more useful info in bad exception cases

It didn't seem to make it into the ChangeLog, though.
PHP Copyright © 2001-2015 The PHP Group
All rights reserved.
Last updated: Tue Dec 01 14:01:33 2015 UTC