ID: 38387 User updated by: trivoallan at clever-age dot com Reported By: trivoallan at clever-age dot com -Status: Feedback +Status: Open Bug Type: Apache2 related Operating System: GNU/Linux (ubuntu dapper) PHP Version: 5.1.4 New Comment:
bugs.php.net says : "Please do not SPAM our bug system." so here's a link to the code : http://hashphp.org/pastebin.php?pid=8014 Previous Comments: ------------------------------------------------------------------------ [2006-08-08 22:01:43] judas dot iscariote at gmail dot com again, need **complete** reproduce code .. WTH the setFailureMessage() and errorOccured() methods do eh ? ------------------------------------------------------------------------ [2006-08-08 21:52:34] trivoallan at clever-age dot com I found the source of the problem while reviewing the handleError method code (thanks for the pointer :). There was a missing break in the switch statement. Should it segfault anyway ? Here's the uncorrected code for the handleError method : function handleRuntimeError($errno, $errstr, $errfile = null, $errline = null, $errcontext = array() ) { $error_types = array ( E_ERROR => 'Error', E_WARNING => 'Warning', E_PARSE => 'Parsing Error', E_NOTICE => 'Notice', E_CORE_ERROR => 'Core Error', E_CORE_WARNING => 'Core Warning', E_COMPILE_ERROR => 'Compile Error', E_COMPILE_WARNING => 'Compile Warning', E_USER_ERROR => 'User Error', E_USER_WARNING => 'User Warning', E_USER_NOTICE => 'User Notice', E_STRICT => 'Runtime Notice', E_RECOVERABLE_ERRROR => 'Catchable Fatal Error' ); $msg = sprintf('%s : "%s" occured in %s on line %d', $error_types[$errno], $errstr, $errfile, $errline); switch($errno) { // A notice cannot fail the job case E_NOTICE: $this->setFailureMessage($msg); default: $this->errorOccured($msg, $this->getMaxTries()); } } ------------------------------------------------------------------------ [2006-08-08 21:04:10] [EMAIL PROTECTED] Please try using this CVS snapshot: http://snaps.php.net/php5.2-latest.tar.gz For Windows: http://snaps.php.net/win32/php5.2-win32-latest.zip Can't reproduce. ------------------------------------------------------------------------ [2006-08-08 20:48:52] judas dot iscariote at gmail dot com what code your handleError method have ? works perfectly fine in current 5_2 CVS... provide complete code please ;-) ------------------------------------------------------------------------ [2006-08-08 20:37:03] trivoallan at clever-age dot com Description: ------------ Apache version : 2.0.55 Calling set_error_handler from a class constructor makes apache crash. Calling the function from other methods works without problems. I've run accross #24708, and the problem does not come from there. Reproduce code: --------------- class cbJob { public function __construct($id_ressource = null, $action_name = null) { set_error_handler(array($this, 'handleError')); } public function __destruct() { restore_error_handler(); } } Expected result: ---------------- Error handler is cbJob::handleError() Actual result: -------------- [Tue Aug 08 22:09:49 2006] [notice] child pid 6876 exit signal Segmentation fault (11) ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=38387&edit=1
