mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-05-22 05:24:39 +00:00
Catch and log all crashes occurring while creating crashdumps
This commit is contained in:
parent
846be84324
commit
e0f8a02bb8
@ -2131,46 +2131,45 @@ class Server{
|
|||||||
$this->logger->emergency($this->getLanguage()->translateString("pocketmine.crash.create"));
|
$this->logger->emergency($this->getLanguage()->translateString("pocketmine.crash.create"));
|
||||||
try{
|
try{
|
||||||
$dump = new CrashDump($this);
|
$dump = new CrashDump($this);
|
||||||
|
|
||||||
|
$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" => "crash@pocketmine.net",
|
||||||
|
"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]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}catch(\Throwable $e){
|
}catch(\Throwable $e){
|
||||||
$this->logger->logException($e);
|
$this->logger->logException($e);
|
||||||
$this->logger->critical($this->getLanguage()->translateString("pocketmine.crash.error", [$e->getMessage()]));
|
$this->logger->critical($this->getLanguage()->translateString("pocketmine.crash.error", [$e->getMessage()]));
|
||||||
return;
|
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" => "crash@pocketmine.net",
|
|
||||||
"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();
|
//$this->checkMemory();
|
||||||
//$dump .= "Memory Usage Tracking: \r\n" . chunk_split(base64_encode(gzdeflate(implode(";", $this->memoryStats), 9))) . "\r\n";
|
//$dump .= "Memory Usage Tracking: \r\n" . chunk_split(base64_encode(gzdeflate(implode(";", $this->memoryStats), 9))) . "\r\n";
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user