From 0da628decaa6d55fb65a1cb3a60bd076e4cd9e44 Mon Sep 17 00:00:00 2001 From: Shoghi Cervantes Date: Fri, 2 Jan 2015 19:19:34 +0100 Subject: [PATCH] Fixed some crashes related to crashing --- src/pocketmine/CrashDump.php | 5 ++++- src/pocketmine/PocketMine.php | 2 +- src/pocketmine/Server.php | 7 ++++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/pocketmine/CrashDump.php b/src/pocketmine/CrashDump.php index 39a8b4c61..eb58e777b 100644 --- a/src/pocketmine/CrashDump.php +++ b/src/pocketmine/CrashDump.php @@ -42,7 +42,10 @@ class CrashDump{ $this->time = time(); $this->server = $server; $this->path = $this->server->getDataPath() . "CrashDump_" . date("D_M_j-H.i.s-T_Y", $this->time) . ".log"; - $this->fp = fopen($this->path, "wb"); + $this->fp = @fopen($this->path, "wb"); + if(!is_resource($this->fp)){ + throw new \RuntimeException("Could not create Crash Dump"); + } $this->data["time"] = $this->time; $this->addLine($this->server->getName() . " Crash Dump " . date("D M j H:i:s T Y", $this->time)); $this->addLine(); diff --git a/src/pocketmine/PocketMine.php b/src/pocketmine/PocketMine.php index 39b9369b3..9a5188ef8 100644 --- a/src/pocketmine/PocketMine.php +++ b/src/pocketmine/PocketMine.php @@ -333,7 +333,7 @@ namespace pocketmine { $args = $trace[$i]["params"]; } foreach($args as $name => $value){ - $params .= (is_object($value) ? get_class($value) . " " . (method_exists($value, "__toString") ? $value->__toString() : "object") : gettype($value) . " " . @strval($value)) . ", "; + $params .= (is_object($value) ? get_class($value) . " " . (method_exists($value, "__toString") ? $value->__toString() : "object") : gettype($value) . " " . (is_array($value) ? "Array()" : @strval($value))) . ", "; } } $messages[] = "#$j " . (isset($trace[$i]["file"]) ? cleanPath($trace[$i]["file"]) : "") . "(" . (isset($trace[$i]["line"]) ? $trace[$i]["line"] : "") . "): " . (isset($trace[$i]["class"]) ? $trace[$i]["class"] . (($trace[$i]["type"] === "dynamic" or $trace[$i]["type"] === "->") ? "->" : "::") : "") . $trace[$i]["function"] . "(" . substr($params, 0, -2) . ")"; diff --git a/src/pocketmine/Server.php b/src/pocketmine/Server.php index 17bdefdc0..9658c4901 100644 --- a/src/pocketmine/Server.php +++ b/src/pocketmine/Server.php @@ -2050,7 +2050,12 @@ class Server{ ini_set("error_reporting", 0); ini_set("memory_limit", -1); //Fix error dump not dumped on memory problems $this->logger->emergency("An unrecoverable error has occurred and the server has crashed. Creating a crash dump"); - $dump = new CrashDump($this); + try{ + $dump = new CrashDump($this); + }catch(\Exception $e){ + $this->logger->critical("Could create Crash Dump: " . $e->getMessage()); + return; + } $this->logger->emergency("Please submit the \"" . $dump->getPath() . "\" file to the Bug Reporting page. Give as much info as you can.");