From 4c61ad9f2dd38baaaebbbd4b511ecd918af2857f Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 19 Mar 2017 10:24:33 +0000 Subject: [PATCH] Stop skipping stack frames (#425) --- src/pocketmine/CrashDump.php | 2 +- src/pocketmine/PocketMine.php | 2 +- src/pocketmine/Server.php | 7 +++---- src/pocketmine/utils/MainLogger.php | 6 ++---- 4 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/pocketmine/CrashDump.php b/src/pocketmine/CrashDump.php index abf7db96b..38188dc38 100644 --- a/src/pocketmine/CrashDump.php +++ b/src/pocketmine/CrashDump.php @@ -143,7 +143,7 @@ class CrashDump{ $error = $lastExceptionError; }else{ $error = (array) error_get_last(); - $error["trace"] = @getTrace(3); + $error["trace"] = getTrace(4); //Skipping CrashDump->baseCrash, CrashDump->construct, Server->crashDump $errorConversion = [ E_ERROR => "E_ERROR", E_WARNING => "E_WARNING", diff --git a/src/pocketmine/PocketMine.php b/src/pocketmine/PocketMine.php index 12aa25c3a..f51f1cca6 100644 --- a/src/pocketmine/PocketMine.php +++ b/src/pocketmine/PocketMine.php @@ -357,7 +357,7 @@ namespace pocketmine { return -1; } - function getTrace($start = 1, $trace = null){ + function getTrace($start = 0, $trace = null){ if($trace === null){ if(function_exists("xdebug_get_function_stack")){ $trace = array_reverse(xdebug_get_function_stack()); diff --git a/src/pocketmine/Server.php b/src/pocketmine/Server.php index 8702cb7c2..ac6076821 100644 --- a/src/pocketmine/Server.php +++ b/src/pocketmine/Server.php @@ -2027,9 +2027,8 @@ class Server{ $errline = $e->getLine(); $type = ($errno === E_ERROR or $errno === E_USER_ERROR) ? \LogLevel::ERROR : (($errno === E_USER_WARNING or $errno === E_WARNING) ? \LogLevel::WARNING : \LogLevel::NOTICE); - if(($pos = strpos($errstr, "\n")) !== false){ - $errstr = substr($errstr, 0, $pos); - } + + $errstr = preg_replace('/\s+/', ' ', trim($errstr)); $errfile = cleanPath($errfile); @@ -2041,7 +2040,7 @@ class Server{ "fullFile" => $e->getFile(), "file" => $errfile, "line" => $errline, - "trace" => @getTrace(1, $trace) + "trace" => getTrace(0, $trace) ]; global $lastExceptionError, $lastError; diff --git a/src/pocketmine/utils/MainLogger.php b/src/pocketmine/utils/MainLogger.php index 7afe1d627..ba69c40d5 100644 --- a/src/pocketmine/utils/MainLogger.php +++ b/src/pocketmine/utils/MainLogger.php @@ -134,12 +134,10 @@ class MainLogger extends \AttachableThreadedLogger{ $type = ($errno === E_ERROR or $errno === E_USER_ERROR) ? LogLevel::ERROR : (($errno === E_USER_WARNING or $errno === E_WARNING) ? LogLevel::WARNING : LogLevel::NOTICE); } $errno = $errorConversion[$errno] ?? $errno; - if(($pos = strpos($errstr, "\n")) !== false){ - $errstr = substr($errstr, 0, $pos); - } + $errstr = preg_replace('/\s+/', ' ', trim($errstr)); $errfile = \pocketmine\cleanPath($errfile); $this->log($type, get_class($e) . ": \"$errstr\" ($errno) in \"$errfile\" at line $errline"); - foreach(@\pocketmine\getTrace(1, $trace) as $i => $line){ + foreach(\pocketmine\getTrace(0, $trace) as $i => $line){ $this->debug($line); } }