mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-05-29 00:26:56 +00:00
CommonThreadPartsTrait: fixed thread crashes sometimes missing cause info
closes #6669 this happens because isTerminated returns true before the thread's shutdown handler runs, so we join with the thread to make sure that shutdown handlers are done before returning. ... hopefully we don't get servers randomly deadlocking in shutdown handlers ???
This commit is contained in:
parent
b5f236c019
commit
94fb5d95b9
@ -94,7 +94,17 @@ trait CommonThreadPartsTrait{
|
||||
}
|
||||
}
|
||||
|
||||
public function getCrashInfo() : ?ThreadCrashInfo{ return $this->crashInfo; }
|
||||
public function getCrashInfo() : ?ThreadCrashInfo{
|
||||
//TODO: Joining a crashed worker might be a bit sus, but we need to make sure the thread's shutdown
|
||||
//handler has run before we try to collect the crash info. As of 6.1.1, pmmpthread sets isTerminated=true
|
||||
//*before* the shutdown handler is invoked, so we might land here before the crash info has been set.
|
||||
//In the future this should probably be fixed by running the shutdown handlers before setting isTerminated,
|
||||
//but this workaround should be good enough for now.
|
||||
if($this->isTerminated() && !$this->isJoined()){
|
||||
$this->join();
|
||||
}
|
||||
return $this->crashInfo;
|
||||
}
|
||||
|
||||
public function start(int $options = NativeThread::INHERIT_NONE) : bool{
|
||||
ThreadManager::getInstance()->add($this);
|
||||
|
Loading…
x
Reference in New Issue
Block a user