geforkt von Mirrors/Paper
45e19ffb00
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 CraftBukkit Changes: cc21bae97 SPIGOT-5569: Call WorldInitEvent before any chunks are getting generated
88 Zeilen
4.2 KiB
Diff
88 Zeilen
4.2 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 d043b758a68a6afcc36880f255723413fab57c2a..c9a8b7bfc9cd33185d5abedb50ea1bef0bbde8f9 100644
|
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
@@ -14,6 +14,7 @@ import io.netty.buffer.ByteBufOutputStream;
|
|
import io.netty.buffer.Unpooled;
|
|
import io.papermc.paper.adventure.PaperAdventure; // Paper
|
|
import io.papermc.paper.event.entity.EntityMoveEvent;
|
|
+import io.papermc.paper.util.TraceUtil;
|
|
import it.unimi.dsi.fastutil.longs.LongIterator;
|
|
import java.awt.image.BufferedImage;
|
|
import java.io.BufferedWriter;
|
|
@@ -856,6 +857,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
|
|
// 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 (stopLock) {
|
|
@@ -870,6 +872,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
|
|
if (hasStopped) return;
|
|
hasStopped = true;
|
|
}
|
|
+ if (!hasLoggedStop && isDebugging()) TraceUtil.dumpTraceForThread("Server stopped"); // Paper
|
|
// Paper start - kill main thread, and kill it hard
|
|
shutdownThread = Thread.currentThread();
|
|
org.spigotmc.WatchdogThread.doStop(); // Paper
|
|
@@ -986,6 +989,8 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
|
|
public void safeShutdown(boolean flag, boolean isRestarting) {
|
|
this.isRunning = false;
|
|
this.isRestarting = isRestarting;
|
|
+ this.hasLoggedStop = true; // Paper
|
|
+ if (isDebugging()) TraceUtil.dumpTraceForThread("Server stopped"); // Paper
|
|
if (flag) {
|
|
try {
|
|
this.serverThread.join();
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
index 75b3698e27327f0c03bbe3e0a9629239ff92e02e..15398675035d2955f84fb22b41d4db9e52fb0d4d 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
@@ -18,6 +18,7 @@ import com.mojang.serialization.Lifecycle;
|
|
import io.netty.buffer.ByteBuf;
|
|
import io.netty.buffer.ByteBufOutputStream;
|
|
import io.netty.buffer.Unpooled;
|
|
+import io.papermc.paper.util.TraceUtil;
|
|
import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap;
|
|
import java.awt.image.BufferedImage;
|
|
import java.io.File;
|
|
@@ -940,6 +941,7 @@ public final class CraftServer implements Server {
|
|
plugin.getDescription().getName(),
|
|
"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()) TraceUtil.dumpTraceForThread(worker.getThread(), "still running"); // Paper
|
|
}
|
|
loadPlugins();
|
|
enablePlugins(PluginLoadOrder.STARTUP);
|