public function crashDump() { if ($this->isRunning === false) { return; } if ($this->sendUsageTicker > 0) { $this->sendUsage(SendUsageTask::TYPE_CLOSE); } $this->hasStopped = false; ini_set("error_reporting", 0); ini_set("memory_limit", -1); //Fix error dump not dumped on memory problems $this->logger->emergency($this->getLanguage()->translateString("pocketmine.crash.create")); try { $dump = new CrashDump($this); } catch (\Exception $e) { $this->logger->critical($this->getLanguage()->translateString("pocketmine.crash.error", $e->getMessage())); return; } $this->logger->emergency($this->getLanguage()->translateString("pocketmine.crash.submit", [$dump->getPath()])); if ($this->getProperty("auto-report.enabled", true) !== false) { $report = true; $plugin = $dump->getData()["plugin"]; if (is_string($plugin)) { $p = $this->pluginManager->getPlugin($plugin); if ($p instanceof Plugin and !$p->getPluginLoader() instanceof PharPluginLoader) { $report = false; } } elseif (\Phar::running(true) == "") { $report = false; } if ($dump->getData()["error"]["type"] === "E_PARSE" or $dump->getData()["error"]["type"] === "E_COMPILE_ERROR") { $report = false; } if ($report) { $reply = Utils::postURL("http://" . $this->getProperty("auto-report.host", "crash.pocketmine.net") . "/submit/api", ["report" => "yes", "name" => $this->getName() . " " . $this->getPocketMineVersion(), "email" => "*****@*****.**", "reportPaste" => base64_encode($dump->getEncodedData())]); if (($data = json_decode($reply)) !== false and isset($data->crashId)) { $reportId = $data->crashId; $reportUrl = $data->crashUrl; $this->logger->emergency($this->getLanguage()->translateString("pocketmine.crash.archive", [$reportUrl, $reportId])); } } } //$this->checkMemory(); //$dump .= "Memory Usage Tracking: \r\n" . chunk_split(base64_encode(gzdeflate(implode(";", $this->memoryStats), 9))) . "\r\n"; $this->forceShutdown(); $this->isRunning = false; @kill(getmypid()); exit(1); }
public function crashDump() { if ($this->isRunning === false) { return; } $this->isRunning = false; $this->hasStopped = false; 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"); try { $dump = new CrashDump($this); } catch (\Exception $e) { $this->logger->critical("Could not 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."); if ($this->getProperty("auto-report.enabled", true) !== false) { $report = true; $plugin = $dump->getData()["plugin"]; if (is_string($plugin)) { $p = $this->pluginManager->getPlugin($plugin); if ($p instanceof Plugin and !$p->getPluginLoader() instanceof PharPluginLoader) { $report = false; } } elseif (\Phar::running(true) == "") { $report = false; } if ($dump->getData()["error"]["type"] === "E_PARSE" or $dump->getData()["error"]["type"] === "E_COMPILE_ERROR") { $report = false; } if ($report) { $reply = Utils::postURL("http://" . $this->getProperty("auto-report.host", "crash.pocketmine.net") . "/submit/api", ["report" => "yes", "name" => $this->getName() . " " . $this->getPocketMineVersion(), "email" => "*****@*****.**", "reportPaste" => base64_encode($dump->getEncodedData())]); if (($data = json_decode($reply)) !== false and isset($data->crashId)) { $reportId = $data->crashId; $reportUrl = $data->crashUrl; $this->logger->emergency("The crash dump has been automatically submitted to the Crash Archive. You can view it on {$reportUrl} or use the ID #{$reportId}."); } } } //$this->checkMemory(); //$dump .= "Memory Usage Tracking: \r\n" . chunk_split(base64_encode(gzdeflate(implode(";", $this->memoryStats), 9))) . "\r\n"; $this->forceShutdown(); @kill(getmypid()); exit(1); }