WorldGuardExtraFlags icon indicating copy to clipboard operation
WorldGuardExtraFlags copied to clipboard

exception error on /stop on 1.21.8

Open mrfloris opened this issue 5 months ago • 5 comments

[07:46:53 INFO]: [WorldGuard] Disabling WorldGuard v7.0.14+2339-43997ec
[07:46:53 INFO]: [WorldGuard] Shutting down executor and cancelling any pending tasks...
[07:46:53 ERROR]: Error occurred while disabling WorldGuard v7.0.14+2339-43997ec
java.lang.IllegalStateException: The plugin classloader for WorldGuardExtraFlags has thrown a zip file error.
	at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:225) ~[paper-api-1.21.8-R0.1-SNAPSHOT.jar:?]
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:557) ~[?:?]
	at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:177) ~[paper-api-1.21.8-R0.1-SNAPSHOT.jar:?]
	at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:172) ~[paper-api-1.21.8-R0.1-SNAPSHOT.jar:?]
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490) ~[?:?]
	at WorldGuardExtraFlags.jar/net.goldtreeservers.worldguardextraflags.wg.handlers.GlideFlagHandler.onAbsentValue(GlideFlagHandler.java:57) ~[WorldGuardExtraFlags.jar:?]
	at WorldGuardExtraFlags.jar/net.goldtreeservers.worldguardextraflags.wg.handlers.GlideFlagHandler.onAbsentValue(GlideFlagHandler.java:18) ~[WorldGuardExtraFlags.jar:?]
	at worldguard-bukkit-7.0.14-dist.jar/com.sk89q.worldguard.session.handler.FlagValueChangeHandler.onClearValue(FlagValueChangeHandler.java:86) ~[worldguard-bukkit-7.0.14-dist.jar:?]
	at worldguard-bukkit-7.0.14-dist.jar/com.sk89q.worldguard.session.handler.FlagValueChangeHandler.uninitialize(FlagValueChangeHandler.java:50) ~[worldguard-bukkit-7.0.14-dist.jar:?]
	at worldguard-bukkit-7.0.14-dist.jar/com.sk89q.worldguard.session.Session.uninitialize(Session.java:144) ~[worldguard-bukkit-7.0.14-dist.jar:?]
	at worldguard-bukkit-7.0.14-dist.jar/com.sk89q.worldguard.bukkit.session.BukkitSessionManager.shutdown(BukkitSessionManager.java:92) ~[worldguard-bukkit-7.0.14-dist.jar:?]
	at worldguard-bukkit-7.0.14-dist.jar/com.sk89q.worldguard.bukkit.BukkitWorldGuardPlatform.unload(BukkitWorldGuardPlatform.java:149) ~[worldguard-bukkit-7.0.14-dist.jar:?]
	at worldguard-bukkit-7.0.14-dist.jar/com.sk89q.worldguard.WorldGuard.disable(WorldGuard.java:206) ~[worldguard-bukkit-7.0.14-dist.jar:?]
	at worldguard-bukkit-7.0.14-dist.jar/com.sk89q.worldguard.bukkit.WorldGuardPlugin.onDisable(WorldGuardPlugin.java:266) ~[worldguard-bukkit-7.0.14-dist.jar:?]
	at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:286) ~[paper-api-1.21.8-R0.1-SNAPSHOT.jar:?]
	at io.papermc.paper.plugin.manager.PaperPluginInstanceManager.disablePlugin(PaperPluginInstanceManager.java:237) ~[paper-1.21.8.jar:1.21.8-4-aa4ef06]
	at io.papermc.paper.plugin.manager.PaperPluginInstanceManager.disablePlugins(PaperPluginInstanceManager.java:161) ~[paper-1.21.8.jar:1.21.8-4-aa4ef06]
	at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.disablePlugins(PaperPluginManagerImpl.java:97) ~[paper-1.21.8.jar:1.21.8-4-aa4ef06]
	at org.bukkit.plugin.SimplePluginManager.disablePlugins(SimplePluginManager.java:541) ~[paper-api-1.21.8-R0.1-SNAPSHOT.jar:?]
	at org.bukkit.craftbukkit.CraftServer.disablePlugins(CraftServer.java:624) ~[paper-1.21.8.jar:1.21.8-4-aa4ef06]
	at net.minecraft.server.MinecraftServer.stopServer(MinecraftServer.java:1002) ~[paper-1.21.8.jar:1.21.8-4-aa4ef06]
	at net.minecraft.server.dedicated.DedicatedServer.stopServer(DedicatedServer.java:712) ~[paper-1.21.8.jar:1.21.8-4-aa4ef06]
	at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1295) ~[paper-1.21.8.jar:1.21.8-4-aa4ef06]
	at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:310) ~[paper-1.21.8.jar:1.21.8-4-aa4ef06]
	at java.base/java.lang.Thread.run(Thread.java:1447) ~[?:?]
Caused by: java.lang.IllegalStateException: zip file closed
	at java.base/java.util.zip.ZipFile.ensureOpen(ZipFile.java:793) ~[?:?]
	at java.base/java.util.zip.ZipFile.getEntry(ZipFile.java:287) ~[?:?]
	at java.base/java.util.jar.JarFile.getEntry(JarFile.java:505) ~[?:?]
	at java.base/java.util.jar.JarFile.getJarEntry(JarFile.java:460) ~[?:?]
	at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:220) ~[paper-api-1.21.8-R0.1-SNAPSHOT.jar:?]
	... 24 more
> ver WorldGuard
[07:49:26 INFO]: WorldGuard version 7.0.14+2339-43997ec

> ver WorldEdit
[07:49:36 INFO]: WorldEdit version 7.3.16-SNAPSHOT+7191-9164c46
Website: https://enginehub.org/worldedit
Author: EngineHub

> ver WorldGuardExtraFlags
[07:49:41 INFO]: WorldGuardExtraFlags version 4.2.4-SNAPSHOT
Adds more flags to WorldGuard to help manage your server easily!
Website: https://joniaromaa.fi
Author: isokissa3

> ver
[07:49:42 INFO]: Checking version, please wait...
[07:49:42 INFO]: [DiscordSRV] [ALERTS DEBUG] Condition "#command.toLowerCase().startsWith("cmi staffmsg ")" -> false
[07:49:42 INFO]: This server is running Paper version 1.21.8-4-main@aa4ef06 (2025-07-17T23:33:28Z) (Implementing API version 1.21.8-R0.1-SNAPSHOT)
You are running the latest version
Previous version: 1.21.8-1-d8cb3f5 (MC: 1.21.8)
>

using wg 7.0.14 from here: https://dev.bukkit.org/projects/worldguard/files and paper 1.21.8 from papermc website.

mrfloris avatar Jul 18 '25 05:07 mrfloris

This is not actionable without latest.log

aromaa avatar Jul 18 '25 08:07 aromaa

This is not actionable without latest.log

https://mclo.gs/WAvnb1V

mrfloris avatar Jul 18 '25 10:07 mrfloris

This looks like a Paper bug. It is aggressively closing the ClassLoader here which prevents the plugin loading any more classes during the shutdown. This will get masked if anyone disconnect at least once before shutdown, as it will cause relevant classes to be loaded. There is nothing for me to do, as WG manages the handlers.

The order of events are:

  • Server starts.
  • Player joins, WG attaches 3th party handlers to the session.
  • Server shutdowns.
  • Paper disables WGEF, disabling its ClassLoader.
  • Next is WG, closing the session and notifying handlers.
  • WGEF handler is notified, prompting class loading, which is prohibited now.

aromaa avatar Jul 18 '25 12:07 aromaa

The latest paper build for 1.21.8 doesn't seem to give me this issue anymore. So either it was a one-off, or something got fixed that made this issue magically go away.

Feel free to close this if you're happy with that outcome.

mrfloris avatar Jul 24 '25 12:07 mrfloris

ClassLoader related bugs are quite subtle and exhibit indeterministic behaviors based on multiple factors like order of operations, race conditions and other hard to debug scenarios so this is nothing unexpected.

The bug is most likely easy to reproduce with two specially crafted plugins to demonstrate the problem in the plugin unloading, I just haven't had the time to report it to Paper.

aromaa avatar Jul 24 '25 12:07 aromaa