mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-27 04:55:47 +01:00
385f313a8b
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: d41796de SPIGOT-7071: Add Player#stopSound(SoundCategory category) 61dae5b2 SPIGOT-7011, SPIGOT-7065: Overhaul of structures CraftBukkit Changes: 991aeda12 SPIGOT-1729, SPIGOT-7090: Keep precision in teleportation between worlds 5c9a5f628 SPIGOT-7071: Add Player#stopSound(SoundCategory category) 68f888ded SPIGOT-7011, SPIGOT-7065: Overhaul of structures 0231a3746 Remove outdated build delay. Spigot Changes: 475f6008 Rebuild patches 8ce1761f Rebuild patches
88 lines
4.7 KiB
Diff
88 lines
4.7 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Shane Freeder <theboyetronic@gmail.com>
|
|
Date: Thu, 18 Feb 2021 20:23:28 +0000
|
|
Subject: [PATCH] misc debugging dumps
|
|
|
|
|
|
diff --git a/src/main/java/io/papermc/paper/util/TraceUtil.java b/src/main/java/io/papermc/paper/util/TraceUtil.java
|
|
new file mode 100644
|
|
index 0000000000000000000000000000000000000000..2d5494d2813b773e60ddba6790b750a9a08f21f8
|
|
--- /dev/null
|
|
+++ b/src/main/java/io/papermc/paper/util/TraceUtil.java
|
|
@@ -0,0 +1,18 @@
|
|
+package io.papermc.paper.util;
|
|
+
|
|
+import org.bukkit.Bukkit;
|
|
+
|
|
+public final class TraceUtil {
|
|
+
|
|
+ public static void dumpTraceForThread(Thread thread, String reason) {
|
|
+ Bukkit.getLogger().warning(thread.getName() + ": " + reason);
|
|
+ StackTraceElement[] trace = thread.getStackTrace();
|
|
+ for (StackTraceElement traceElement : trace) {
|
|
+ Bukkit.getLogger().warning("\tat " + traceElement);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ public static void dumpTraceForThread(String reason) {
|
|
+ new Throwable(reason).printStackTrace();
|
|
+ }
|
|
+}
|
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
index 53320d5d9cadb8702f82d94bada32db4c1b32f26..407cfb88d3a6c9c699ca42df2642d9f6fad87cbd 100644
|
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
@@ -868,6 +868,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
|
// CraftBukkit start
|
|
private boolean hasStopped = false;
|
|
public volatile boolean hasFullyShutdown = false; // Paper
|
|
+ private boolean hasLoggedStop = false; // Paper
|
|
private final Object stopLock = new Object();
|
|
public final boolean hasStopped() {
|
|
synchronized (this.stopLock) {
|
|
@@ -882,6 +883,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
|
if (this.hasStopped) return;
|
|
this.hasStopped = true;
|
|
}
|
|
+ if (!hasLoggedStop && isDebugging()) io.papermc.paper.util.TraceUtil.dumpTraceForThread("Server stopped"); // Paper
|
|
// Paper start - kill main thread, and kill it hard
|
|
shutdownThread = Thread.currentThread();
|
|
org.spigotmc.WatchdogThread.doStop(); // Paper
|
|
@@ -1011,6 +1013,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
|
}
|
|
public void safeShutdown(boolean flag, boolean isRestarting) {
|
|
this.isRestarting = isRestarting;
|
|
+ this.hasLoggedStop = true; // Paper
|
|
+ if (isDebugging()) io.papermc.paper.util.TraceUtil.dumpTraceForThread("Server stopped"); // Paper
|
|
// Paper end
|
|
this.running = false;
|
|
if (flag) {
|
|
diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
|
|
index ec2825b6d276b6200c4bec5580d012f1eaed722e..e51c03e05c4407ad3a51e573a5e79b003f86d9f1 100644
|
|
--- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
|
|
+++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
|
|
@@ -206,6 +206,11 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener
|
|
} catch (Exception exception) {
|
|
ServerLoginPacketListenerImpl.LOGGER.error("Couldn't place player in world", exception);
|
|
MutableComponent ichatmutablecomponent = Component.translatable("multiplayer.disconnect.invalid_player_data");
|
|
+ // Paper start
|
|
+ if (MinecraftServer.getServer().isDebugging()) {
|
|
+ exception.printStackTrace();
|
|
+ }
|
|
+ // Paper end
|
|
|
|
this.connection.send(new ClientboundDisconnectPacket(ichatmutablecomponent));
|
|
this.connection.disconnect(ichatmutablecomponent);
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
index fd9f329c4e32027cec28eb9e66ec5c39997916e9..4568e9641490addccd530cfc962758c82cd29a34 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
@@ -1000,6 +1000,7 @@ public final class CraftServer implements Server {
|
|
plugin.getDescription().getFullName(),
|
|
"This plugin is not properly shutting down its async tasks when it is being reloaded. This may cause conflicts with the newly loaded version of the plugin"
|
|
));
|
|
+ if (console.isDebugging()) io.papermc.paper.util.TraceUtil.dumpTraceForThread(worker.getThread(), "still running"); // Paper
|
|
}
|
|
this.loadPlugins();
|
|
this.enablePlugins(PluginLoadOrder.STARTUP);
|