spigot/CraftBukkit-Patches/0099-Prevent-NoClassDefError-crash-and-notify-on-crash.patch

51 lines
2.8 KiB
Diff
Raw Normal View History

2016-09-05 17:35:26 +10:00
From 00dc6ceb0c07463a2ec1081d86217127a99e4442 Mon Sep 17 00:00:00 2001
From: David <dmck2b@gmail.com>
Date: Mon, 21 Apr 2014 12:43:08 +0100
Subject: [PATCH] Prevent NoClassDefError crash and notify on crash
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
2016-09-05 17:35:26 +10:00
index bba856d..d6a2186 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
2016-09-05 17:35:26 +10:00
@@ -114,6 +114,8 @@ public abstract class World implements IBlockAccess {
2016-03-01 08:33:06 +11:00
public final SpigotTimings.WorldTimingsHandler timings; // Spigot
private boolean guardEntityList; // Spigot
+ public static boolean haveWeSilencedAPhysicsCrash;
+ public static String blockLocation;
2016-03-01 08:33:06 +11:00
public CraftWorld getWorld() {
return this.world;
2016-09-05 17:35:26 +10:00
@@ -528,6 +530,9 @@ public abstract class World implements IBlockAccess {
}
// CraftBukkit end
2016-05-10 21:48:25 +10:00
iblockdata.doPhysics(this, blockposition, block);
+ } catch (StackOverflowError stackoverflowerror) { // Spigot Start
+ haveWeSilencedAPhysicsCrash = true;
+ blockLocation = blockposition.getX() + ", " + blockposition.getY() + ", " + blockposition.getZ(); // Spigot End
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.a(throwable, "Exception while updating neighbours");
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Block being updated");
diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java
index de08ad6..94a3d42 100644
--- a/src/main/java/org/spigotmc/WatchdogThread.java
+++ b/src/main/java/org/spigotmc/WatchdogThread.java
@@ -60,6 +60,13 @@ public class WatchdogThread extends Thread
log.log( Level.SEVERE, "Be sure to include ALL relevant console errors and Minecraft crash reports" );
log.log( Level.SEVERE, "Spigot version: " + Bukkit.getServer().getVersion() );
//
+ if(net.minecraft.server.World.haveWeSilencedAPhysicsCrash)
+ {
+ log.log( Level.SEVERE, "------------------------------" );
+ log.log( Level.SEVERE, "During the run of the server, a physics stackoverflow was supressed" );
+ log.log( Level.SEVERE, "near " + net.minecraft.server.World.blockLocation);
+ }
+ //
log.log( Level.SEVERE, "------------------------------" );
log.log( Level.SEVERE, "Server thread dump (Look for plugins here before reporting to Spigot!):" );
dumpThread( ManagementFactory.getThreadMXBean().getThreadInfo( MinecraftServer.getServer().primaryThread.getId(), Integer.MAX_VALUE ), log );
--
2016-05-10 21:48:25 +10:00
2.7.4