SPIGOT-8051: Disabling AsyncCatcher causes exceptions to be thrown

This commit is contained in:
md_5 2025-05-29 20:33:51 +10:00
parent 3dafb730f3
commit 270012a314
No known key found for this signature in database
GPG key ID: E8E901AC7C617C11
5 changed files with 25 additions and 17 deletions

View file

@ -1,4 +1,4 @@
From 7debde8cd014665aded14729352101e62fcf5fc9 Mon Sep 17 00:00:00 2001
From b40454506420a23e97012e635f81a4aa981bb1f1 Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Tue, 25 Mar 2014 16:10:01 +1100
Subject: [PATCH] Async Operation Catching
@ -62,7 +62,7 @@ index d4bf5c5d8..7eea04eb5 100644
Vec3D vec3d = entityplayer.position().subtract(this.entity.position());
int i = PlayerChunkMap.this.getPlayerViewDistance(entityplayer);
diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java
index bafca6b82..f39ee0546 100644
index 6c58226ae..6b0055956 100644
--- a/src/main/java/net/minecraft/server/level/WorldServer.java
+++ b/src/main/java/net/minecraft/server/level/WorldServer.java
@@ -1070,6 +1070,7 @@ public class WorldServer extends World implements ServerEntityGetter, GeneratorA
@ -89,7 +89,7 @@ index bafca6b82..f39ee0546 100644
WorldServer.this.getChunkSource().addEntity(entity);
if (entity instanceof EntityPlayer entityplayer) {
WorldServer.this.players.add(entityplayer);
@@ -1983,6 +1986,7 @@ public class WorldServer extends World implements ServerEntityGetter, GeneratorA
@@ -1982,6 +1985,7 @@ public class WorldServer extends World implements ServerEntityGetter, GeneratorA
}
public void onTrackingEnd(Entity entity) {

View file

@ -1,4 +1,4 @@
From 16cbf094cdfb0bf33b6fcf958ede648f79af797b Mon Sep 17 00:00:00 2001
From 2b17bcf1c7a3cf5d099746e801f855f0376fa8b6 Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Thu, 27 Jun 2013 17:26:09 +1000
Subject: [PATCH] Properly Close Inventories
@ -6,7 +6,7 @@ Subject: [PATCH] Properly Close Inventories
Properly close inventories when unloading and switching worlds.
diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java
index 3ee75d6ce..330d8f816 100644
index 76f6a40ae..be7db0785 100644
--- a/src/main/java/net/minecraft/server/level/WorldServer.java
+++ b/src/main/java/net/minecraft/server/level/WorldServer.java
@@ -1124,6 +1124,15 @@ public class WorldServer extends World implements ServerEntityGetter, GeneratorA
@ -25,7 +25,7 @@ index 3ee75d6ce..330d8f816 100644
chunk.clearAllBlockEntities();
chunk.unregisterTickContainerFromLevel(this);
}
@@ -2006,6 +2015,13 @@ public class WorldServer extends World implements ServerEntityGetter, GeneratorA
@@ -2005,6 +2014,13 @@ public class WorldServer extends World implements ServerEntityGetter, GeneratorA
public void onTrackingEnd(Entity entity) {
org.spigotmc.AsyncCatcher.catchOp("entity unregister"); // Spigot

View file

@ -1,4 +1,4 @@
From 8fc3a5b63893237d3957aef42f8856efb7773a6d Mon Sep 17 00:00:00 2001
From 8e7fc140575773a86e106b069393de9e15100376 Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Tue, 5 Aug 2014 17:20:19 +0100
Subject: [PATCH] Watchdog Thread.
@ -38,7 +38,7 @@ index 6e2684753..3cc568cdb 100644
thread1.setUncaughtExceptionHandler(new ThreadNamedUncaughtExceptionHandler(DedicatedServer.LOGGER));
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 87fdccfad..5e4167660 100644
index 87fdccfad..4bcb46d87 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -2145,7 +2145,7 @@ public final class CraftServer implements Server {
@ -46,7 +46,7 @@ index 87fdccfad..5e4167660 100644
@Override
public boolean isPrimaryThread() {
- return Thread.currentThread().equals(console.serverThread) || console.hasStopped(); // All bets are off if we have shut down (e.g. due to watchdog)
+ return Thread.currentThread().equals(console.serverThread) || console.hasStopped() || !org.spigotmc.AsyncCatcher.enabled; // All bets are off if we have shut down (e.g. due to watchdog)
+ return Thread.currentThread().equals(console.serverThread) || console.hasStopped() || org.spigotmc.RestartCommand.restarting; // All bets are off if we have shut down (e.g. due to watchdog)
}
@Override
@ -64,10 +64,10 @@ index 87fdccfad..5e4167660 100644
public org.bukkit.Server.Spigot spigot()
diff --git a/src/main/java/org/spigotmc/RestartCommand.java b/src/main/java/org/spigotmc/RestartCommand.java
new file mode 100644
index 000000000..f78961aa1
index 000000000..b53beb6b4
--- /dev/null
+++ b/src/main/java/org/spigotmc/RestartCommand.java
@@ -0,0 +1,131 @@
@@ -0,0 +1,139 @@
+package org.spigotmc;
+
+import java.io.File;
@ -81,6 +81,8 @@ index 000000000..f78961aa1
+public class RestartCommand extends Command
+{
+
+ public static boolean restarting;
+
+ public RestartCommand(String name)
+ {
+ super( name );
@ -113,6 +115,12 @@ index 000000000..f78961aa1
+
+ private static void restart(final String restartScript)
+ {
+ if (restarting)
+ {
+ return;
+ }
+
+ RestartCommand.restarting = true;
+ AsyncCatcher.enabled = false; // Disable async catcher incase it interferes with us
+ try
+ {

View file

@ -1,14 +1,14 @@
From 275775d22fbf40d25f75b380fdc3c72f968c1ae0 Mon Sep 17 00:00:00 2001
From 84f2724e9561d7f213e32b85a491acb9d712b866 Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Fri, 8 Aug 2014 19:57:03 +1000
Subject: [PATCH] Plug WorldMap Memory Leak
diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java
index 330d8f816..c357de8d9 100644
index be7db0785..cc9505e53 100644
--- a/src/main/java/net/minecraft/server/level/WorldServer.java
+++ b/src/main/java/net/minecraft/server/level/WorldServer.java
@@ -2015,6 +2015,29 @@ public class WorldServer extends World implements ServerEntityGetter, GeneratorA
@@ -2014,6 +2014,29 @@ public class WorldServer extends World implements ServerEntityGetter, GeneratorA
public void onTrackingEnd(Entity entity) {
org.spigotmc.AsyncCatcher.catchOp("entity unregister"); // Spigot

View file

@ -1,14 +1,14 @@
From a51ec56ed0277c7d4af74fa7a27571f98b9fcf0b Mon Sep 17 00:00:00 2001
From df7d0439a2abded5285e0a583dce14d7b88ac880 Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Mon, 25 Feb 2019 19:26:56 +1100
Subject: [PATCH] Add creative mode NBT permissions
diff --git a/src/main/java/net/minecraft/server/level/PlayerInteractManager.java b/src/main/java/net/minecraft/server/level/PlayerInteractManager.java
index 2efee4088..352c3c657 100644
index 56650b6b2..5f92ace58 100644
--- a/src/main/java/net/minecraft/server/level/PlayerInteractManager.java
+++ b/src/main/java/net/minecraft/server/level/PlayerInteractManager.java
@@ -204,6 +204,14 @@ public class PlayerInteractManager {
@@ -209,6 +209,14 @@ public class PlayerInteractManager {
return;
}