BlockHorizons / InvSee

A PocketMine-MP plugin that lets you view and modify offline and online players' inventories in real-time!
https://poggit.pmmp.io/p/InvSee
Apache License 2.0
30 stars 14 forks source link

crash server - Error: No free window IDs found #26

Closed teracube closed 2 years ago

teracube commented 4 years ago

Server crash

https://poggit.pmmp.io/r/63286/InvSee_dev-28.phar https://jenkins.pmmp.io/job/PocketMine-MP/1793/artifact/PocketMine-MP.phar

PocketMine-MP Crash Dump Wed Apr 29 19:40:38 UTC 2020

Error: No free window IDs found
File: src/pocketmine/Player
Line: 3866
Type: InvalidStateException

A PLUGIN WAS INVOLVED IN THIS CRASH
BAD PLUGIN: InvSee v1.0.0

Code:
[3857]      if(($id = $this->getWindowId($inventory)) !== ContainerIds::NONE){
[3858]          return $id;
[3859]      }
[3860] 
[3861]      if($forceId === null){
[3862]          $cnt = $this->windowCnt;
[3863]          do{
[3864]              $cnt = max(ContainerIds::FIRST, ($cnt + 1) % ContainerIds::LAST);
[3865]              if($cnt === $this->windowCnt){ //wraparound, no free slots
[3866]                  throw new \InvalidStateException("No free window IDs found");
[3867]              }
[3868]          }while(isset($this->windowIndex[$cnt]));
[3869]          $this->windowCnt = $cnt;
[3870]      }else{
[3871]          $cnt = $forceId;
[3872]          if(isset($this->windowIndex[$cnt])){
[3873]              throw new \InvalidArgumentException("Requested force ID $forceId already in use");
[3874]          }
[3875]      }
[3876] 

Backtrace:
#0 plugins/InvSee_dev-28.phar/src/BlockHorizons/InvSee/libs/muqsit/invmenu/inventories/BaseFakeInventory(129): pocketmine\Player->addWindow(object BlockHorizons\InvSee\inventories\InvSeePlayerInventory)
#1 plugins/InvSee_dev-28.phar/src/BlockHorizons/InvSee/libs/muqsit/invmenu/tasks/DelayedFakeBlockDataNotifyTask(42): BlockHorizons\InvSee\libs\muqsit\invmenu\inventories\BaseFakeInventory->onFakeBlockDataSendSuccess(object pocketmine\Player)
#2 src/pocketmine/scheduler/TaskHandler(134): BlockHorizons\InvSee\libs\muqsit\invmenu\tasks\DelayedFakeBlockDataNotifyTask->onRun(integer 440942)
#3 src/pocketmine/scheduler/TaskScheduler(176): pocketmine\scheduler\TaskHandler->run(integer 440942)
#4 src/pocketmine/plugin/PluginManager(643): pocketmine\scheduler\TaskScheduler->mainThreadHeartbeat(integer 440942)
#5 src/pocketmine/Server(2380): pocketmine\plugin\PluginManager->tickSchedulers(integer 440942)
#6 src/pocketmine/Server(2143): pocketmine\Server->tick()
#7 src/pocketmine/Server(1990): pocketmine\Server->tickProcessor()
#8 src/pocketmine/Server(1584): pocketmine\Server->start()
#9 src/pocketmine/PocketMine(273): pocketmine\Server->__construct(object BaseClassLoader, object pocketmine\utils\MainLogger, string[16] /home/container/, string[24] /home/container/plugins/)
#10 src/pocketmine/PocketMine(296): pocketmine\server()
#11 (11): require(string[71] phar:///home/container/PocketMine-MP.phar/src/pocketmine/PocketMine.php)

PocketMine-MP version: 3.12.0 [Protocol 390]
Git commit: 77d45bf11674a1360f58e32a14a3b09f423d860c
uname -a: Linux 643340b8-28d5-4090-bb05-7e3ac9a12b14 4.5.0-0.bpo.2-amd64 #1 SMP Debian 4.5.4-1~bpo8+1 (2016-05-13) x86_64
PHP Version: 7.3.16
Zend version: 3.3.16
OS : Linux, linux
2020-04-29 [19:40:19] [Server thread/CRITICAL]: BadMethodCallException: "Can't override an already existing event processor (BlockHorizons\InvSee\inventories\InvSeeEnderInventoryProcessor)" (EXCEPTION) in "plugins/InvSee_dev-28.phar/src/BlockHorizons/InvSee/inventories/InvSeeEnderInventory" at line 30
2020-04-29 [19:40:19] [Server thread/DEBUG]: #0 plugins/InvSee_dev-28.phar/src/BlockHorizons/InvSee/inventories/InvSeeEnderInventory(59): BlockHorizons\InvSee\inventories\InvSeeEnderInventory->installInventoryProcessor(object pocketmine\Player)
2020-04-29 [19:40:19] [Server thread/DEBUG]: #1 plugins/InvSee_dev-28.phar/src/BlockHorizons/InvSee/utils/SpyingPlayerData(69): BlockHorizons\InvSee\inventories\InvSeeEnderInventory->syncOnline(object pocketmine\Player)
2020-04-29 [19:40:19] [Server thread/DEBUG]: #2 plugins/InvSee_dev-28.phar/src/BlockHorizons/InvSee/InventoryHandler(36): BlockHorizons\InvSee\utils\SpyingPlayerData->onJoin(object pocketmine\Player)
2020-04-29 [19:40:19] [Server thread/DEBUG]: #3 plugins/InvSee_dev-28.phar/src/BlockHorizons/InvSee/EventListener(29): BlockHorizons\InvSee\InventoryHandler->handleJoin(object pocketmine\Player)
2020-04-29 [19:40:19] [Server thread/DEBUG]: #4 src/pocketmine/plugin/MethodEventExecutor(42): BlockHorizons\InvSee\EventListener->onPlayerJoin(object pocketmine\event\player\PlayerJoinEvent)
2020-04-29 [19:40:19] [Server thread/DEBUG]: #5 src/pocketmine/plugin/RegisteredListener(80): pocketmine\plugin\MethodEventExecutor->execute(object BlockHorizons\InvSee\EventListener, object pocketmine\event\player\PlayerJoinEvent)
2020-04-29 [19:40:19] [Server thread/DEBUG]: #6 src/pocketmine/event/Event(88): pocketmine\plugin\RegisteredListener->callEvent(object pocketmine\event\player\PlayerJoinEvent)
2020-04-29 [19:40:19] [Server thread/DEBUG]: #7 src/pocketmine/Player(1047): pocketmine\event\Event->call()
2020-04-29 [19:40:19] [Server thread/DEBUG]: #8 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(315): pocketmine\Player->doFirstSpawn()
2020-04-29 [19:40:19] [Server thread/DEBUG]: #9 src/pocketmine/network/mcpe/protocol/SetLocalPlayerAsInitializedPacket(45): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleSetLocalPlayerAsInitialized(object pocketmine\network\mcpe\protocol\SetLocalPlayerAsInitializedPacket)
2020-04-29 [19:40:19] [Server thread/DEBUG]: #10 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(110): pocketmine\network\mcpe\protocol\SetLocalPlayerAsInitializedPacket->handle(object pocketmine\network\mcpe\PlayerNetworkSessionAdapter)
2020-04-29 [19:40:19] [Server thread/DEBUG]: #11 src/pocketmine/network/mcpe/protocol/BatchPacket(126): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleDataPacket(object pocketmine\network\mcpe\protocol\SetLocalPlayerAsInitializedPacket)
2020-04-29 [19:40:19] [Server thread/DEBUG]: #12 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(110): pocketmine\network\mcpe\protocol\BatchPacket->handle(object pocketmine\network\mcpe\PlayerNetworkSessionAdapter)
2020-04-29 [19:40:19] [Server thread/DEBUG]: #13 src/pocketmine/Player(3118): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleDataPacket(object pocketmine\network\mcpe\protocol\BatchPacket)
2020-04-29 [19:40:19] [Server thread/DEBUG]: #14 src/pocketmine/network/mcpe/RakLibInterface(169): pocketmine\Player->handleDataPacket(object pocketmine\network\mcpe\protocol\BatchPacket)
2020-04-29 [19:40:19] [Server thread/DEBUG]: #15 vendor/pocketmine/raklib/src/server/ServerHandler(99): pocketmine\network\mcpe\RakLibInterface->handleEncapsulated(string[21] 2XX.XX.1XX.244 58398, object raklib\protocol\EncapsulatedPacket, integer 0)
2020-04-29 [19:40:19] [Server thread/DEBUG]: #16 src/pocketmine/network/mcpe/RakLibInterface(109): raklib\server\ServerHandler->handlePacket()
2020-04-29 [19:40:19] [Server thread/DEBUG]: #17 src/pocketmine/network/mcpe/RakLibInterface(99): pocketmine\network\mcpe\RakLibInterface->process()
2020-04-29 [19:40:19] [Server thread/DEBUG]: #18 vendor/pocketmine/snooze/src/SleeperHandler(123): pocketmine\network\mcpe\RakLibInterface->pocketmine\network\mcpe\{closure}()
2020-04-29 [19:40:19] [Server thread/DEBUG]: #19 vendor/pocketmine/snooze/src/SleeperHandler(85): pocketmine\snooze\SleeperHandler->processNotifications()
2020-04-29 [19:40:19] [Server thread/DEBUG]: #20 src/pocketmine/Server(2146): pocketmine\snooze\SleeperHandler->sleepUntil(double 1588189219.2075)
2020-04-29 [19:40:19] [Server thread/DEBUG]: #21 src/pocketmine/Server(1990): pocketmine\Server->tickProcessor()
2020-04-29 [19:40:19] [Server thread/DEBUG]: #22 src/pocketmine/Server(1584): pocketmine\Server->start()
2020-04-29 [19:40:19] [Server thread/DEBUG]: #23 src/pocketmine/PocketMine(273): pocketmine\Server->__construct(object BaseClassLoader, object pocketmine\utils\MainLogger, string[16] /home/container/, string[24] /home/container/plugins/)
2020-04-29 [19:40:19] [Server thread/DEBUG]: #24 src/pocketmine/PocketMine(296): pocketmine\server()
2020-04-29 [19:40:19] [Server thread/DEBUG]: #25 (11): require(string[71] phar:///home/container/PocketMine-MP.phar/src/pocketmine/PocketMine.php)
2020-04-29 [19:40:19] [Server thread/INFO]: eEsdiZ [-]
2020-04-29 [19:40:19] [Server thread/INFO]: eEsdiZ[/2XX.XX.1XX.244:58398] logged out due to Internal server error
2020-04-29 [19:40:19] [RakLibServer thread/NOTICE]: Blocked 2XX.XX.1XX.244 for 5 seconds
...
...

2020-04-29 [19:40:38] [Server thread/CRITICAL]: InvalidStateException: "No free window IDs found" (EXCEPTION) in "src/pocketmine/Player" at line 3866
2020-04-29 [19:40:38] [Server thread/DEBUG]: #0 plugins/InvSee_dev-28.phar/src/BlockHorizons/InvSee/libs/muqsit/invmenu/inventories/BaseFakeInventory(129): pocketmine\Player->addWindow(object BlockHorizons\InvSee\inventories\InvSeePlayerInventory)
2020-04-29 [19:40:38] [Server thread/DEBUG]: #1 plugins/InvSee_dev-28.phar/src/BlockHorizons/InvSee/libs/muqsit/invmenu/tasks/DelayedFakeBlockDataNotifyTask(42): BlockHorizons\InvSee\libs\muqsit\invmenu\inventories\BaseFakeInventory->onFakeBlockDataSendSuccess(object pocketmine\Player)
2020-04-29 [19:40:38] [Server thread/DEBUG]: #2 src/pocketmine/scheduler/TaskHandler(134): BlockHorizons\InvSee\libs\muqsit\invmenu\tasks\DelayedFakeBlockDataNotifyTask->onRun(integer 440942)
2020-04-29 [19:40:38] [Server thread/DEBUG]: #3 src/pocketmine/scheduler/TaskScheduler(176): pocketmine\scheduler\TaskHandler->run(integer 440942)
2020-04-29 [19:40:38] [Server thread/DEBUG]: #4 src/pocketmine/plugin/PluginManager(643): pocketmine\scheduler\TaskScheduler->mainThreadHeartbeat(integer 440942)
2020-04-29 [19:40:38] [Server thread/DEBUG]: #5 src/pocketmine/Server(2380): pocketmine\plugin\PluginManager->tickSchedulers(integer 440942)
2020-04-29 [19:40:38] [Server thread/DEBUG]: #6 src/pocketmine/Server(2143): pocketmine\Server->tick()
2020-04-29 [19:40:38] [Server thread/DEBUG]: #7 src/pocketmine/Server(1990): pocketmine\Server->tickProcessor()
2020-04-29 [19:40:38] [Server thread/DEBUG]: #8 src/pocketmine/Server(1584): pocketmine\Server->start()
2020-04-29 [19:40:38] [Server thread/DEBUG]: #9 src/pocketmine/PocketMine(273): pocketmine\Server->__construct(object BaseClassLoader, object pocketmine\utils\MainLogger, string[16] /home/container/, string[24] /home/container/plugins/)
2020-04-29 [19:40:38] [Server thread/DEBUG]: #10 src/pocketmine/PocketMine(296): pocketmine\server()
2020-04-29 [19:40:38] [Server thread/DEBUG]: #11 (11): require(string[71] phar:///home/container/PocketMine-MP.phar/src/pocketmine/PocketMine.php)
2020-04-29 [19:40:38] [Server thread/EMERGENCY]: An unrecoverable error has occurred and the server has crashed. Creating a crash dump
2020-04-29 [19:40:38] [Server thread/EMERGENCY]: Please upload the "/home/container/crashdumps/Wed_Apr_29-19.40.38-UTC_2020.log" file to the Crash Archive and submit the link to the Bug Reporting page. Give as much info as you can.
Muqsit commented 2 years ago

Addressed in PM4-supported version (v2.0.1, https://github.com/BlockHorizons/InvSee/commit/8b46af9bd4cfabe5973fa151de3b0ba12cf1bf4c)