Fixed crashdump generation when crashing before PluginManager was created

This commit is contained in:
Dylan K. Taylor 2021-10-20 23:35:04 +01:00
parent e2275cc8ec
commit 4f2bcb61d6
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D
2 changed files with 7 additions and 4 deletions

View File

@ -101,9 +101,12 @@ class CrashDump{
/** @var string */
private $path;
public function __construct(Server $server){
private ?PluginManager $pluginManager;
public function __construct(Server $server, ?PluginManager $pluginManager){
$this->time = microtime(true);
$this->server = $server;
$this->pluginManager = $pluginManager;
$crashPath = Path::join($this->server->getDataPath(), "crashdumps");
if(!is_dir($crashPath)){
@ -166,11 +169,11 @@ class CrashDump{
}
private function pluginsData() : void{
if($this->server->getPluginManager() instanceof PluginManager){
if($this->pluginManager !== null){
$plugins = $this->pluginManager->getPlugins();
$this->addLine();
$this->addLine("Loaded plugins:");
$this->data["plugins"] = [];
$plugins = $this->server->getPluginManager()->getPlugins();
ksort($plugins, SORT_STRING);
foreach($plugins as $p){
$d = $p->getDescription();

View File

@ -1476,7 +1476,7 @@ class Server{
ini_set("memory_limit", '-1'); //Fix error dump not dumped on memory problems
try{
$this->logger->emergency($this->getLanguage()->translate(KnownTranslationFactory::pocketmine_crash_create()));
$dump = new CrashDump($this);
$dump = new CrashDump($this, $this->pluginManager ?? null);
$this->logger->emergency($this->getLanguage()->translate(KnownTranslationFactory::pocketmine_crash_submit($dump->getPath())));