webbukkit / dynmap

A set of Minecraft mods that provide a real time web-based map system for various Minecraft server implementations.
https://www.reddit.com/r/Dynmap/
Apache License 2.0
2.05k stars 418 forks source link

Memory leak with Dynmap 1.5 (Bukkit) when used with MCPC+ 1.4.7-R1.1 b245 and FTB/Ultimate 1.01 #1191

Closed WebMaka closed 11 years ago

WebMaka commented 11 years ago

Greetings Dynmap crew!

I'm running a test server to make sure all is well on Feed The Beast, Ultimate 1.01 running on MCPC+ 1.4.7-R1.1 build 245, and discovered a memory leak that ultimately crashes out the server with "out of heap space" errors. Removing only Dynmap (by adding ".disabled" to the filename so MCPC won't "see" it) resolved the issue, so it was pretty easy to narrow down.

Here's how MCPC reported its shutdown after its deadlock detector fired...

2013-03-13 18:26:59 [INFO] Stopping server 2013-03-13 18:26:12 [SEVERE] The server has stopped responding! 2013-03-13 18:29:02 [SEVERE] Please report this to http://www.mcportcentral.co.za/ 2013-03-13 18:28:43 [INFO] [EssentialsAntiBuild] Disabling EssentialsAntiBuild v2.10.1 2013-03-13 18:29:48 [SEVERE] Spigot version: 1.4.7-R1.1-SNAPSHOT 2013-03-13 18:29:48 [SEVERE] Begin Exception Trace For All Threads: 2013-03-13 18:29:41 [SEVERE] Exception in thread "Spigot Metrics Gatheri 2013-03-13 18:29:52 [SEVERE] ng Thread" Exception in thread "Listen thread" 2013-03-13 18:30:00 [SEVERE] Exception in thread "Immibis Core background task" 2013-03-13 18:30:00 [SEVERE] java.lang.OutOfMemoryError: Java heap space 2013-03-13 18:30:00 [SEVERE] java.lang.OutOfMemoryError: Java heap space 2013-03-13 18:30:03 [INFO] [EssentialsSpawn] Disabling EssentialsSpawn v2.10.1 2013-03-13 18:30:03 [INFO] [EssentialsChat] Disabling EssentialsChat v2.10.1 2013-03-13 18:30:24 [SEVERE] ------------------------------ 2013-03-13 18:30:41 [SEVERE] Current Thread: Server thread 2013-03-13 18:30:41 [SEVERE] PID: 18 | Alive: true | State: RUNNABLE 2013-03-13 18:30:45 [SEVERE] Stack: 2013-03-13 18:30:51 [INFO] [dynmap] Disabling dynmap v1.5-612 2013-03-13 18:31:09 [SEVERE] java.util.LinkedHashMap.createEntry(LinkedHashMap.java:421) 2013-03-13 18:31:12 [SEVERE] java.util.LinkedHashMap.addEntry(LinkedHashMap.java:403) 2013-03-13 18:31:12 [SEVERE] java.util.HashMap.put(HashMap.java:412) 2013-03-13 18:31:12 [SEVERE] org.anjocaido.groupmanager.permissions.BukkitPermissions.collectPermissions(Unknown Source) 2013-03-13 18:31:12 [SEVERE] org.anjocaido.groupmanager.permissions.BukkitPermissions$BukkitEvents.onPluginDisable(Unknown Source) 2013-03-13 18:31:12 [SEVERE] sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 2013-03-13 18:31:12 [SEVERE] sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 2013-03-13 18:31:12 [SEVERE] sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 2013-03-13 18:31:12 [SEVERE] java.lang.reflect.Method.invoke(Unknown Source) 2013-03-13 18:31:12 [SEVERE] org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:361) 2013-03-13 18:31:12 [SEVERE] org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) 2013-03-13 18:31:12 [SEVERE] org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477) 2013-03-13 18:31:12 [SEVERE] org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462) 2013-03-13 18:31:12 [SEVERE] org.bukkit.plugin.java.JavaPluginLoader.disablePlugin(JavaPluginLoader.java:416) 2013-03-13 18:31:12 [SEVERE] org.bukkit.plugin.SimplePluginManager.disablePlugin(SimplePluginManager.java:400) 2013-03-13 18:31:12 [SEVERE] org.bukkit.plugin.SimplePluginManager.disablePlugins(SimplePluginManager.java:393) 2013-03-13 18:31:12 [SEVERE] org.bukkit.craftbukkit.v1_4_R1.CraftServer.disablePlugins(CraftServer.java:286) 2013-03-13 18:31:12 [SEVERE] net.minecraft.server.MinecraftServer.k(MinecraftServer.java:641) 2013-03-13 18:31:12 [SEVERE] net.minecraft.server.MinecraftServer.run(MinecraftServer.java:799) 2013-03-13 18:31:12 [SEVERE] fy.run(ThreadMinecraftServer.java:16) 2013-03-13 18:31:12 [SEVERE] ------------------------------ 2013-03-13 18:31:12 [SEVERE] Current Thread: pool-4-thread-1 Selector0 2013-03-13 18:31:12 [SEVERE] PID: 53 | Alive: true | State: RUNNABLE 2013-03-13 18:31:12 [SEVERE] Stack: 2013-03-13 18:31:12 [SEVERE] sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) 2013-03-13 18:31:16 [SEVERE] sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source) 2013-03-13 18:31:20 [SEVERE] sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source) 2013-03-13 18:31:20 [SEVERE] sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source) 2013-03-13 18:31:20 [SEVERE] sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source) 2013-03-13 18:31:20 [SEVERE] sun.nio.ch.SelectorImpl.select(Unknown Source) 2013-03-13 18:31:20 [SEVERE] org.dynmap.jetty.io.nio.SelectorManager$SelectSet.doSelect(Unknown Source) 2013-03-13 18:31:20 [SEVERE] org.dynmap.jetty.io.nio.SelectorManager$1.run(Unknown Source) 2013-03-13 18:31:20 [SEVERE] java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 2013-03-13 18:31:20 [SEVERE] java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 2013-03-13 18:31:20 [SEVERE] java.lang.Thread.run(Unknown Source) 2013-03-13 18:31:20 [SEVERE] ------------------------------ 2013-03-13 18:31:20 [SEVERE] Current Thread: RMI TCP Accept-0 2013-03-13 18:31:20 [SEVERE] PID: 11 | Alive: true | State: RUNNABLE 2013-03-13 18:31:20 [SEVERE] Stack: 2013-03-13 18:31:20 [SEVERE] java.net.DualStackPlainSocketImpl.accept0(Native Method) 2013-03-13 18:31:20 [SEVERE] java.net.DualStackPlainSocketImpl.socketAccept(Unknown Source) 2013-03-13 18:31:20 [SEVERE] java.net.AbstractPlainSocketImpl.accept(Unknown Source) 2013-03-13 18:31:20 [SEVERE] java.net.PlainSocketImpl.accept(Unknown Source) 2013-03-13 18:31:20 [SEVERE] java.net.ServerSocket.implAccept(Unknown Source) 2013-03-13 18:31:37 [SEVERE] java.net.ServerSocket.accept(Unknown Source) 2013-03-13 18:31:37 [SEVERE] sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(Unknown Source) 2013-03-13 18:31:40 [SEVERE] sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(Unknown Source) 2013-03-13 18:32:03 [SEVERE] Error occurred while disabling dynmap v1.5-612 (Is it up to date?) java.lang.NoClassDefFoundError: org/dynmap/snakeyaml/serializer/Serializer at org.dynmap.snakeyaml.Yaml.dumpAll(Unknown Source) at org.dynmap.snakeyaml.Yaml.dumpAll(Unknown Source) at org.dynmap.snakeyaml.Yaml.dump(Unknown Source) at org.dynmap.ConfigurationNode.save(Unknown Source) at org.dynmap.DynmapCore.saveIDsByIP(Unknown Source) at org.dynmap.DynmapCore.disableCore(Unknown Source) at org.dynmap.bukkit.DynmapPlugin.onDisable(Unknown Source) at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:219) at org.bukkit.plugin.java.JavaPluginLoader.disablePlugin(JavaPluginLoader.java:422) at org.bukkit.plugin.SimplePluginManager.disablePlugin(SimplePluginManager.java:400) at org.bukkit.plugin.SimplePluginManager.disablePlugins(SimplePluginManager.java:393) at org.bukkit.craftbukkit.v1_4_R1.CraftServer.disablePlugins(CraftServer.java:286) at net.minecraft.server.MinecraftServer.k(MinecraftServer.java:641) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:799) at fy.run(ThreadMinecraftServer.java:16) Caused by: java.lang.ClassNotFoundException: Failed to remap class org.dynmap.snakeyaml.serializer.Serializer at org.bukkit.plugin.java.PluginClassLoader.remappedFindClass(PluginClassLoader.java:344) at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:265) at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:243) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 15 more Caused by: java.lang.OutOfMemoryError: Java heap space 2013-03-13 18:32:09 [SEVERE] java.lang.Thread.run(Unknown Source) 2013-03-13 18:32:59 [SEVERE] ------------------------------ 2013-03-13 18:32:59 [INFO] [Essentials] Disabling Essentials v2.10.1 2013-03-13 18:33:04 [SEVERE] Current Thread: RMI TCP Accept-12323 2013-03-13 18:33:21 [SEVERE] PID: 12 | Alive: true | State: RUNNABLE 2013-03-13 18:33:21 [SEVERE] Stack: 2013-03-13 18:33:21 [SEVERE] java.net.DualStackPlainSocketImpl.accept0(Native Method) 2013-03-13 18:33:21 [SEVERE] java.net.DualStackPlainSocketImpl.socketAccept(Unknown Source) 2013-03-13 18:33:21 [SEVERE] java.net.AbstractPlainSocketImpl.accept(Unknown Source) 2013-03-13 18:33:21 [SEVERE] java.net.PlainSocketImpl.accept(Unknown Source) 2013-03-13 18:33:21 [SEVERE] java.net.ServerSocket.implAccept(Unknown Source) 2013-03-13 18:33:21 [SEVERE] java.net.ServerSocket.accept(Unknown Source) 2013-03-13 18:33:21 [SEVERE] sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(Unknown Source) 2013-03-13 18:33:21 [SEVERE] sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(Unknown Source) 2013-03-13 18:33:21 [SEVERE] java.lang.Thread.run(Unknown Source) 2013-03-13 18:33:21 [SEVERE] ------------------------------ 2013-03-13 18:33:21 [SEVERE] Current Thread: Signal Dispatcher 2013-03-13 18:33:21 [SEVERE] PID: 5 | Alive: true | State: RUNNABLE 2013-03-13 18:33:21 [SEVERE] Stack: 2013-03-13 18:33:21 [SEVERE] ------------------------------ 2013-03-13 18:33:21 [SEVERE] Current Thread: DestroyJavaVM 2013-03-13 18:33:21 [SEVERE] PID: 20 | Alive: true | State: RUNNABLE 2013-03-13 18:33:21 [SEVERE] Stack: 2013-03-13 18:33:21 [SEVERE] ------------------------------ 2013-03-13 18:33:21 [SEVERE] Current Thread: Dynmap Render Thread 2013-03-13 18:33:21 [SEVERE] PID: 48 | Alive: true | State: RUNNABLE 2013-03-13 18:33:21 [SEVERE] Stack: 2013-03-13 18:33:21 [SEVERE] sun.misc.Unsafe.park(Native Method) 2013-03-13 18:33:25 [SEVERE] java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source) 2013-03-13 18:33:25 [SEVERE] java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(Unknown Source) 2013-03-13 18:33:25 [SEVERE] java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source) 2013-03-13 18:33:25 [SEVERE] java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source) 2013-03-13 18:33:30 [INFO] [Permissions] Disabling Permissions v3.1.6 2013-03-13 18:33:30 [SEVERE] java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source) 2013-03-13 18:33:33 [SEVERE] java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 2013-03-13 18:33:33 [SEVERE] java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 2013-03-13 18:33:33 [SEVERE] java.lang.Thread.run(Unknown Source) 2013-03-13 18:33:33 [SEVERE] ------------------------------ 2013-03-13 18:33:33 [INFO] WEPIF: GroupManager detected! Using GroupManager for permissions. 2013-03-13 18:33:33 [SEVERE] Current Thread: File IO Thread 2013-03-13 18:33:33 [INFO] Fake Permissions version 3.1.6 is disabled! 2013-03-13 18:33:33 [SEVERE] PID: 69 | Alive: true | State: RUNNABLE 2013-03-13 18:33:33 [SEVERE] Stack: 2013-03-13 18:33:33 [SEVERE] java.util.zip.DeflaterOutputStream.write(Unknown Source) 2013-03-13 18:33:33 [SEVERE] java.io.DataOutputStream.writeByte(Unknown Source) 2013-03-13 18:33:33 [SEVERE] cd.a(NBTBase.java:107) 2013-03-13 18:33:37 [INFO] [WorldEdit] Disabling WorldEdit v1372-48c3c3e 2013-03-13 18:33:38 [SEVERE] bq.a(NBTTagCompound.java:41) 2013-03-13 18:33:43 [SEVERE] by.a(NBTTagList.java:51) 2013-03-13 18:33:50 [SEVERE] cd.a(NBTBase.java:112) 2013-03-13 18:33:50 [SEVERE] bq.a(NBTTagCompound.java:41) 2013-03-13 18:33:50 [SEVERE] cd.a(NBTBase.java:112) 2013-03-13 18:33:50 [SEVERE] bq.a(NBTTagCompound.java:41) 2013-03-13 18:33:50 [SEVERE] cd.a(NBTBase.java:112) 2013-03-13 18:33:50 [SEVERE] ca.a(CompressedStreamTools.java:140) 2013-03-13 18:33:50 [SEVERE] aam.a(AnvilChunkLoader.java:274) 2013-03-13 18:33:50 [SEVERE] aam.c(AnvilChunkLoader.java:260) 2013-03-13 18:33:50 [SEVERE] aiw.b(ThreadedFileIOBase.java:39) 2013-03-13 18:33:50 [SEVERE] aiw.run(ThreadedFileIOBase.java:27) 2013-03-13 18:33:50 [SEVERE] java.lang.Thread.run(Unknown Source) 2013-03-13 18:33:50 [SEVERE] ------------------------------ 2013-03-13 18:33:50 [SEVERE] Current Thread: RMI TCP Accept-0 2013-03-13 18:33:50 [SEVERE] PID: 13 | Alive: true | State: RUNNABLE 2013-03-13 18:33:50 [SEVERE] Stack: 2013-03-13 18:33:50 [SEVERE] java.net.DualStackPlainSocketImpl.accept0(Native Method) 2013-03-13 18:33:50 [SEVERE] java.net.DualStackPlainSocketImpl.socketAccept(Unknown Source) 2013-03-13 18:33:50 [SEVERE] java.net.AbstractPlainSocketImpl.accept(Unknown Source) 2013-03-13 18:33:50 [SEVERE] java.net.PlainSocketImpl.accept(Unknown Source) 2013-03-13 18:33:50 [SEVERE] java.net.ServerSocket.implAccept(Unknown Source) 2013-03-13 18:33:50 [SEVERE] java.net.ServerSocket.accept(Unknown Source) 2013-03-13 18:33:50 [INFO] [GroupManager] Disabling GroupManager v2.0 (2.10.1) (Phoenix) 2013-03-13 18:33:50 [SEVERE] sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(Unknown Source) 2013-03-13 18:33:50 [SEVERE] sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(Unknown Source) 2013-03-13 18:33:50 [SEVERE] sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(Unknown Source) 2013-03-13 18:33:50 [SEVERE] java.lang.Thread.run(Unknown Source) 2013-03-13 18:33:50 [SEVERE] ------------------------------ 2013-03-13 18:33:50 [SEVERE] Current Thread: Attach Listener 2013-03-13 18:33:50 [SEVERE] PID: 6 | Alive: true | State: RUNNABLE 2013-03-13 18:33:50 [SEVERE] Stack: 2013-03-13 18:33:50 [SEVERE] ------------------------------ 2013-03-13 18:33:50 [SEVERE] Current Thread: pool-2-thread-1 2013-03-13 18:33:50 [SEVERE] PID: 44 | Alive: true | State: TIMED_WAITING 2013-03-13 18:33:50 [SEVERE] Stack: 2013-03-13 18:33:50 [SEVERE] sun.misc.Unsafe.park(Native Method) 2013-03-13 18:33:50 [SEVERE] java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source) 2013-03-13 18:33:50 [SEVERE] java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(Unknown Source) 2013-03-13 18:33:54 [SEVERE] java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source) 2013-03-13 18:33:54 [SEVERE] java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source) 2013-03-13 18:33:54 [INFO] GroupManager version 2.0 (2.10.1) (Phoenix) is disabled! 2013-03-13 18:33:54 [SEVERE] java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source) 2013-03-13 18:33:54 [SEVERE] java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 2013-03-13 18:33:54 [SEVERE] java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 2013-03-13 18:33:54 [SEVERE] java.lang.Thread.run(Unknown Source) 2013-03-13 18:33:54 [SEVERE] ------------------------------ 2013-03-13 18:33:54 [SEVERE] Current Thread: Snooper Timer 2013-03-13 18:33:54 [SEVERE] PID: 15 | Alive: true | State: TIMED_WAITING 2013-03-13 18:33:54 [SEVERE] Stack: 2013-03-13 18:33:54 [SEVERE] java.lang.Object.wait(Native Method) 2013-03-13 18:33:54 [SEVERE] java.util.TimerThread.mainLoop(Unknown Source) 2013-03-13 18:33:54 [SEVERE] java.util.TimerThread.run(Unknown Source) 2013-03-13 18:33:54 [SEVERE] ------------------------------ 2013-03-13 18:33:54 [INFO] [PerformanceMonitor] Disabling PerformanceMonitor v1.7.0 2013-03-13 18:33:54 [SEVERE] Current Thread: Thread-5 2013-03-13 18:33:54 [SEVERE] PID: 19 | Alive: true | State: TIMED_WAITING 2013-03-13 18:33:54 [INFO] [PerformanceMonitor 1.7.0] Plugin disabled! 2013-03-13 18:33:54 [SEVERE] Stack: 2013-03-13 18:33:54 [SEVERE] java.lang.Thread.sleep(Native Method) 2013-03-13 18:33:54 [SEVERE] hp.run(DedicatedServerSleepThread.java:23) 2013-03-13 18:33:54 [SEVERE] ------------------------------ 2013-03-13 18:33:54 [SEVERE] Current Thread: pool-4-thread-4 2013-03-13 18:33:54 [SEVERE] PID: 80 | Alive: true | State: TIMED_WAITING 2013-03-13 18:33:54 [SEVERE] Stack: 2013-03-13 18:33:54 [SEVERE] java.util.Arrays.copyOfRange(Unknown Source) 2013-03-13 18:33:54 [SEVERE] java.lang.String.(Unknown Source) 2013-03-13 18:33:54 [SEVERE] java.lang.String.substring(Unknown Source) 2013-03-13 18:33:54 [SEVERE] org.dynmap.web.HandlerRouter.handle(Unknown Source) 2013-03-13 18:33:54 [SEVERE] org.dynmap.web.FilterHandler$1.doFilter(Unknown Source) 2013-03-13 18:33:55 [SEVERE] org.dynmap.web.CustomHeaderFilter.doFilter(Unknown Source) 2013-03-13 18:33:55 [SEVERE] org.dynmap.web.FilterHandler$1.doFilter(Unknown Source) 2013-03-13 18:33:55 [INFO] Saving players 2013-03-13 18:33:59 [SEVERE] org.dynmap.web.BanIPFilter.doFilter(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.dynmap.web.FilterHandler$1.doFilter(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.dynmap.web.FilterHandler.handle(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.dynmap.jetty.server.handler.HandlerList.handle(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.dynmap.jetty.server.handler.HandlerWrapper.handle(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.dynmap.jetty.server.Server.handle(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.dynmap.jetty.server.AbstractHttpConnection.handleRequest(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.dynmap.jetty.server.AbstractHttpConnection.headerComplete(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.dynmap.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.dynmap.jetty.http.HttpParser.parseNext(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.dynmap.jetty.http.HttpParser.parseAvailable(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.dynmap.jetty.server.AsyncHttpConnection.handle(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.dynmap.jetty.io.nio.SelectChannelEndPoint.handle(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.dynmap.jetty.io.nio.SelectChannelEndPoint$1.run(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.lang.Thread.run(Unknown Source) 2013-03-13 18:33:59 [SEVERE] ------------------------------ 2013-03-13 18:33:59 [SEVERE] Current Thread: pool-4-thread-6 2013-03-13 18:33:59 [SEVERE] PID: 82 | Alive: true | State: RUNNABLE 2013-03-13 18:33:59 [SEVERE] Stack: 2013-03-13 18:33:59 [SEVERE] sun.misc.Unsafe.park(Native Method) 2013-03-13 18:33:59 [SEVERE] java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.util.concurrent.LinkedBlockingQueue.poll(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.lang.Thread.run(Unknown Source) 2013-03-13 18:33:59 [SEVERE] ------------------------------ 2013-03-13 18:33:59 [SEVERE] Current Thread: Immibis Core background task 2013-03-13 18:33:59 [SEVERE] PID: 22 | Alive: false | State: TERMINATED 2013-03-13 18:33:59 [SEVERE] Stack: 2013-03-13 18:33:59 [SEVERE] java.io.PrintStream.write(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.io.PrintStream.print(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.lang.ThreadGroup.uncaughtException(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.lang.ThreadGroup.uncaughtException(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.lang.Thread.dispatchUncaughtException(Unknown Source) 2013-03-13 18:33:59 [SEVERE] ------------------------------ 2013-03-13 18:33:59 [SEVERE] Current Thread: Thread-11 2013-03-13 18:33:59 [SEVERE] PID: 29 | Alive: true | State: TIMED_WAITING 2013-03-13 18:33:59 [SEVERE] Stack: 2013-03-13 18:33:59 [SEVERE] java.lang.Thread.sleep(Native Method) 2013-03-13 18:33:59 [SEVERE] appeng.common.VersionChecker.run(VersionChecker.java:37) 2013-03-13 18:33:59 [SEVERE] java.lang.Thread.run(Unknown Source) 2013-03-13 18:33:59 [SEVERE] ------------------------------ 2013-03-13 18:33:59 [SEVERE] Current Thread: Spigot Watchdog Thread 2013-03-13 18:33:59 [SEVERE] PID: 35 | Alive: true | State: RUNNABLE 2013-03-13 18:33:59 [SEVERE] Stack: 2013-03-13 18:33:59 [SEVERE] java.lang.Thread.dumpThreads(Native Method) 2013-03-13 18:33:59 [SEVERE] java.lang.Thread.getAllStackTraces(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.bukkit.craftbukkit.v1_4_R1.util.WatchdogThread.run(WatchdogThread.java:60) 2013-03-13 18:33:59 [SEVERE] ------------------------------ 2013-03-13 18:33:59 [SEVERE] Current Thread: pool-4-thread-2 Acceptor0 SelectChannelConnector@0.0.0.0:8125 2013-03-13 18:33:59 [SEVERE] PID: 54 | Alive: true | State: RUNNABLE 2013-03-13 18:33:59 [SEVERE] Stack: 2013-03-13 18:33:59 [SEVERE] sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method) 2013-03-13 18:33:59 [SEVERE] sun.nio.ch.ServerSocketChannelImpl.accept(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.dynmap.jetty.server.nio.SelectChannelConnector.accept(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.dynmap.jetty.server.AbstractConnector$Acceptor.run(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.lang.Thread.run(Unknown Source) 2013-03-13 18:33:59 [SEVERE] ------------------------------ 2013-03-13 18:33:59 [SEVERE] Current Thread: Thread-6 2013-03-13 18:33:59 [SEVERE] PID: 21 | Alive: true | State: RUNNABLE 2013-03-13 18:33:59 [SEVERE] Stack: 2013-03-13 18:33:59 [SEVERE] java.io.FileInputStream.readBytes(Native Method) 2013-03-13 18:33:59 [SEVERE] java.io.FileInputStream.read(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.io.BufferedInputStream.fill(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.io.BufferedInputStream.read(Unknown Source) 2013-03-13 18:34:03 [SEVERE] java.io.FilterInputStream.read(Unknown Source) 2013-03-13 18:34:03 [SEVERE] org.bukkit.craftbukkit.libs.jline.console.ConsoleReader$1.read(ConsoleReader.java:167) 2013-03-13 18:34:03 [SEVERE] org.bukkit.craftbukkit.libs.jline.internal.InputStreamReader.read(InputStreamReader.java:267) 2013-03-13 18:34:03 [SEVERE] org.bukkit.craftbukkit.libs.jline.internal.InputStreamReader.read(InputStreamReader.java:204) 2013-03-13 18:34:03 [INFO] Unloading Player: Xathras420 2013-03-13 18:34:03 [SEVERE] org.bukkit.craftbukkit.libs.jline.console.ConsoleReader.readCharacter(ConsoleReader.java:995) 2013-03-13 18:34:03 [SEVERE] org.bukkit.craftbukkit.libs.jline.console.ConsoleReader.readLineSimple(ConsoleReader.java:1506) 2013-03-13 18:34:03 [SEVERE] org.bukkit.craftbukkit.libs.jline.console.ConsoleReader.readLine(ConsoleReader.java:1153) 2013-03-13 18:34:03 [SEVERE] org.bukkit.craftbukkit.libs.jline.console.ConsoleReader.readLine(ConsoleReader.java:1117) 2013-03-13 18:34:03 [SEVERE] org.bukkit.craftbukkit.libs.jline.console.ConsoleReader.readLine(ConsoleReader.java:1105) 2013-03-13 18:34:03 [SEVERE] hq.run(DedicatedServerCommandThread.java:41) 2013-03-13 18:34:03 [SEVERE] ------------------------------ 2013-03-13 18:34:03 [SEVERE] Current Thread: pool-4-thread-3 2013-03-13 18:34:03 [SEVERE] PID: 79 | Alive: true | State: TIMED_WAITING 2013-03-13 18:34:03 [SEVERE] Stack: 2013-03-13 18:34:03 [SEVERE] sun.misc.Unsafe.park(Native Method) 2013-03-13 18:34:03 [SEVERE] java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source) 2013-03-13 18:34:03 [SEVERE] java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(Unknown Source) 2013-03-13 18:34:03 [SEVERE] java.util.concurrent.LinkedBlockingQueue.poll(Unknown Source) 2013-03-13 18:34:08 [INFO] Saving worlds 2013-03-13 18:34:08 [SEVERE] java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source) 2013-03-13 18:34:08 [INFO] Saving chunks for level 'world'/Overworld 2013-03-13 18:34:08 [SEVERE] java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 2013-03-13 18:34:08 [SEVERE] java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 2013-03-13 18:34:12 [SEVERE] java.lang.Thread.run(Unknown Source) 2013-03-13 18:34:12 [SEVERE] ------------------------------ 2013-03-13 18:34:12 [SEVERE] Current Thread: HashSessionScavenger-0 2013-03-13 18:34:12 [SEVERE] PID: 52 | Alive: true | State: TIMED_WAITING 2013-03-13 18:34:12 [SEVERE] Stack: 2013-03-13 18:34:12 [SEVERE] java.lang.Object.wait(Native Method) 2013-03-13 18:34:12 [SEVERE] java.util.TimerThread.mainLoop(Unknown Source) 2013-03-13 18:34:12 [SEVERE] java.util.TimerThread.run(Unknown Source) 2013-03-13 18:34:12 [SEVERE] ------------------------------ 2013-03-13 18:34:12 [SEVERE] Current Thread: Chunk I/O Executor Thread-1 2013-03-13 18:34:12 [SEVERE] PID: 78 | Alive: true | State: RUNNABLE 2013-03-13 18:34:12 [SEVERE] Stack: 2013-03-13 18:34:12 [SEVERE] cd.a(NBTBase.java:128) 2013-03-13 18:34:12 [SEVERE] cd.b(NBTBase.java:83) 2013-03-13 18:34:12 [SEVERE] bq.a(NBTTagCompound.java:55) 2013-03-13 18:34:12 [SEVERE] by.a(NBTTagList.java:67) 2013-03-13 18:34:12 [SEVERE] cd.b(NBTBase.java:87) 2013-03-13 18:34:12 [SEVERE] bq.a(NBTTagCompound.java:55) 2013-03-13 18:34:12 [SEVERE] cd.b(NBTBase.java:87) 2013-03-13 18:34:12 [SEVERE] bq.a(NBTTagCompound.java:55) 2013-03-13 18:34:12 [SEVERE] by.a(NBTTagList.java:67) 2013-03-13 18:34:12 [SEVERE] cd.b(NBTBase.java:87) 2013-03-13 18:34:12 [SEVERE] bq.a(NBTTagCompound.java:55) 2013-03-13 18:34:12 [SEVERE] by.a(NBTTagList.java:67) 2013-03-13 18:34:12 [SEVERE] cd.b(NBTBase.java:87) 2013-03-13 18:34:12 [SEVERE] bq.a(NBTTagCompound.java:55) 2013-03-13 18:34:12 [SEVERE] cd.b(NBTBase.java:87) 2013-03-13 18:34:12 [SEVERE] bq.a(NBTTagCompound.java:55) 2013-03-13 18:34:12 [SEVERE] cd.b(NBTBase.java:87) 2013-03-13 18:34:12 [SEVERE] ca.a(CompressedStreamTools.java:126) 2013-03-13 18:34:15 [SEVERE] aam.loadChunk__Async_CB(AnvilChunkLoader.java:124) 2013-03-13 18:34:15 [SEVERE] org.bukkit.craftbukkit.v1_4_R1.chunkio.ChunkIOProvider.callStage1(ChunkIOProvider.java:16) 2013-03-13 18:34:15 [SEVERE] org.bukkit.craftbukkit.v1_4_R1.chunkio.ChunkIOProvider.callStage1(ChunkIOProvider.java:10) 2013-03-13 18:34:18 [SEVERE] org.bukkit.craftbukkit.v1_4_R1.util.AsynchronousExecutor$Task.init(AsynchronousExecutor.java:150) 2013-03-13 18:35:04 [SEVERE] org.bukkit.craftbukkit.v1_4_R1.util.AsynchronousExecutor$Task.initAsync(AsynchronousExecutor.java:95) 2013-03-13 18:35:04 [SEVERE] org.bukkit.craftbukkit.v1_4_R1.util.AsynchronousExecutor$Task.run(AsynchronousExecutor.java:85) 2013-03-13 18:35:04 [SEVERE] java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 2013-03-13 18:35:00 [SEVERE] java.lang.OutOfMemoryError: Java heap space 2013-03-13 18:35:04 [SEVERE] java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 2013-03-13 18:35:12 [SEVERE] java.lang.Thread.run(Unknown Source) 2013-03-13 18:35:12 [SEVERE] ------------------------------ 2013-03-13 18:35:12 [SEVERE] Current Thread: Listen thread 2013-03-13 18:35:17 [SEVERE] PID: 34 | Alive: false | State: TERMINATED 2013-03-13 18:35:24 [SEVERE] Stack: 2013-03-13 18:35:24 [SEVERE] java.util.logging.StreamHandler.publish(Unknown Source) 2013-03-13 18:35:24 [SEVERE] java.util.logging.ConsoleHandler.publish(Unknown Source) 2013-03-13 18:35:24 [SEVERE] java.util.logging.Logger.log(Unknown Source) 2013-03-13 18:35:24 [SEVERE] java.util.logging.Logger.doLog(Unknown Source) 2013-03-13 18:35:24 [SEVERE] java.util.logging.Logger.logp(Unknown Source) 2013-03-13 18:35:24 [SEVERE] org.bukkit.craftbukkit.v1_4_R1.LoggerOutputStream.flush(LoggerOutputStream.java:27) 2013-03-13 18:35:24 [SEVERE] java.io.PrintStream.write(Unknown Source) 2013-03-13 18:35:24 [SEVERE] sun.nio.cs.StreamEncoder.writeBytes(Unknown Source) 2013-03-13 18:35:24 [SEVERE] sun.nio.cs.StreamEncoder.implWrite(Unknown Source) 2013-03-13 18:35:24 [SEVERE] sun.nio.cs.StreamEncoder.write(Unknown Source) 2013-03-13 18:35:24 [SEVERE] java.io.OutputStreamWriter.write(Unknown Source) 2013-03-13 18:35:24 [SEVERE] java.io.BufferedWriter.flushBuffer(Unknown Source) 2013-03-13 18:35:24 [SEVERE] java.io.PrintStream.write(Unknown Source) 2013-03-13 18:35:24 [SEVERE] java.io.PrintStream.print(Unknown Source) 2013-03-13 18:35:24 [SEVERE] java.lang.ThreadGroup.uncaughtException(Unknown Source) 2013-03-13 18:35:24 [SEVERE] java.lang.ThreadGroup.uncaughtException(Unknown Source) 2013-03-13 18:35:24 [SEVERE] java.lang.Thread.dispatchUncaughtException(Unknown Source) 2013-03-13 18:35:24 [SEVERE] ------------------------------ 2013-03-13 18:35:24 [SEVERE] Current Thread: Connection #14 read thread 2013-03-13 18:35:24 [SEVERE] PID: 307 | Alive: true | State: TIMED_WAITING 2013-03-13 18:35:24 [SEVERE] Stack: 2013-03-13 18:35:24 [SEVERE] java.lang.Thread.sleep(Native Method) 2013-03-13 18:35:24 [SEVERE] ch.run(TcpReaderThread.java:27) 2013-03-13 18:35:24 [SEVERE] ------------------------------ 2013-03-13 18:35:20 [INFO] Stopping server

snake2332 commented 11 years ago

Oh also I was wondering if anyone has removed Xycraft and tested a fullrender to see if it works without Xycraft because I will have no problem removing Xycraft (although I see there are blocks that work as light sources now that might be useful. Most people on my server just complain about the abundance of xychorium and don't know what to do with it, haha).

Haruchai commented 11 years ago

@mikeprimm

Using MCPC+ build 248 (for MC 1.4.7) and Dynmap for Forge (v1.6-185) gets the job done. (FTB/Ultimate).

The server I admin will not be switching to MC 1.5 any time soon as there are simply too many issues being reported. However, if you need test drives on developer builds performed, let me know the combinations of mods/servers/plugins you want to try and I'll send you the logs and heapdumps.

mikeprimm commented 11 years ago

Cool - thanks! RL was pretty busy for me this weekend, so didn't make much progress on things. I'm hoping to push 1.6-alpha-2 tonight, along with the first alpha of the DynmapCBBridge mod (the one I mentioned for providing Bukkit Dynmap API support for Dynmap-* mods on MCPC+ or BukkitForge). MC 1.5 support is in, in principal, but fully transitioning to support MC 1.5 texture packs (especially for mods migrated to MC 1.5) is going to be a gradual process.

snake2332 commented 11 years ago

I wanted to test the XyCraft theory using the existing versions of stuff that I have, which is MCPC build 245 and DynMap 1.5-612. I copied my server, removed XyCraft, deleted my world, set DynMap back to hires (rest of DynMap settings at default), then fired up the server and let it build a new world. Tried a radiusrender, discovered that it doesn't render much until you explore the world. Hopped onto server, set flyspeed to 2 and flew around for 5 or 10 minutes, then fired up a radiusrender with range 2000.

7 minutes into the render and all is well. Memory usage on java.exe was sitting right around 2gb, now it's down to 1.6gb used and it's done 3500 'surface' tiles so far, going about 90 msec/tile. FYI, I am using 1gb min, 8gb max for my memory settings.

This definitely seems promising. When I would do this before, the memory usage never went down while the render took place. It would just climb and climb and hit my 8gb limit after 13 minutes, then crash (as most of us know).

Now it's 12 minutes in, 6000 surface tiles rendered, mem usage went down even more to 1.1gb, probably because I'm not flying around or anything so all the server is really doing is the dynmap render.

Time for me to say bye-bye to XyCraft I'm afraid. As I mentioned before, we don't use it anyway. The only thing I thought we might eventually use it for is for a good double-thick shield wall around a nuclear power plant. When I was using Mo' Creatures, I was going to use the shield blocks to protect from Ogres until I found the "range" setting for Ogre (set it to zero) that makes it so they don't "hulk smash" the hell out of your fancy blocks.

7400 tiles rendered and counting.....

BBBRV commented 11 years ago

@snake2332 thanks for testing that! nice (not really) to know that we at least know what is causing the problem. Hopefully Soaryn is on top of it.

snake2332 commented 11 years ago

@Absolutist You're very welcome.

I'm now testing the latest alpha DynMap plugin with my existing world. I think the changes made to DynMap have fixed it for me. I see memory usage hang out around 3GB mostly, though it was sitting at 2.3GB for awhile. I don't think it will cause any more memory problems, so I guess I will leave XyCraft in place after all. I will come back here and update this if I discover otherwise.

Now I wonder if I should try the Forge version. Do you lose the server-side commands if you use the Forge version?

BBBRV commented 11 years ago

@snake2332 you shouldn't lose the server-side commands, but you will lose things such as markers (only ops can place them) and plugin extensions (world border showing on dynmap, towny regions showing on dynmap etc) won't work with the forge version.

Let me know if you get a xycraft related crash when rendering with it still installed. This happened to me a few times last week while I was testing.

ThatDorkyGuy commented 11 years ago

I use FTB/Mindcrack 8.2 and this was happening to us as well. I've been following this thread religiously and am very grateful to Mike Primm and all the people helping. As you know TONS will lurk this thread, but never post. I just wanted to post to say thank you, because myself and my players on my server have been missing Dynmap since we updated to 8.2. For the: Dynmap for Forge (v1.6-185) - Do we install that in the plugins folder or does it go somewhere else?

Thanks again guys! -ThatDorkyGuy

BBBRV commented 11 years ago

@ThatDorkyGuy Dynmap for Forge goes in the mods folder. And yeah, 8.2 has updated xycraft too right? xycraft is definitely looking to be the culprit.

edit: i should add that you just extract the .zip to your minecraft directory (so put it in your Mindcrack folder, and extract it into the folder - it should add a dynmap folder and also put the dynmap.jar in the mods folder)

ThatDorkyGuy commented 11 years ago

Yep we have updated xycraft, which I have since disabled all the machines from it because it was causing severe problems for us. A lot of players are upset, but...I'd rather the server be up. And thank you for telling me where to install it. Again, thank you Absolutist and Haruchai for all of your testing!

snake2332 commented 11 years ago

@Absolutist Thanks for that info. I will keep an eye on things and will let you know if I see any XyCraft-related errors or problems. I am SO close to removing XyCraft and starting a new world without it.

For what it's worth, I went to join my server that had been rendering for 40 minutes and the server totally froze when I joined it. Wouldn't respond to commands, no errors, no memory leak, just plain stuck and unresponsive. Ended task, started it back up, joined server fine. Tempted to try a fullrender while I'm already logged in. Hopefully this was just an anomaly.

ThatDorkyGuy commented 11 years ago

@Absolutist So the dynmap 1.6 goes in the mods folder, but what about the regular dynmap folder? Where does that go? Sorry for noob questions lol, just don't want to mess anything up. Thanks!

BBBRV commented 11 years ago

Goes straight into your mindcrack folder along with the mods, config, coremods etc


From: ThatDorkyGuy Sent: 3/25/2013 6:09 PM To: webbukkit/dynmap Cc: Absolutist Subject: Re: [dynmap] Memory leak with Dynmap 1.5 (Bukkit) when used with MCPC+ 1.4.7-R1.1 b245 and FTB/Ultimate 1.01 (#1191)

@Absolutist So the dynmap 1.6 goes in the mods folder, but what about the regular dynmap folder? Where does that go? Sorry for noob questions lol, just don't want to mess anything up. Thanks!


Reply to this email directly or view it on GitHub: https://github.com/webbukkit/dynmap/issues/1191#issuecomment-15428916

ThatDorkyGuy commented 11 years ago

@Absolutist Thanks bud!

snake2332 commented 11 years ago

I got a NullPointerException error when trying to join my server when a fullrender is happening. It references codechicken.xycraftcopy.core......sorry XyCraft, your days are numbered on my server.

Haruchai commented 11 years ago

I don't know about everyone else, but I don't run fullrenders on a live server with players logged in. The fullrender "surface" tests I ran for MP were on a pristine test server. Plus, I never really had any problems running a "flat" fullrender. Although it's nice to get the fullrender out of the way, if possible, it's not a requirement. And the Xycraft errors I got would rarely bring down the entire server. I keep an eye on the server with McMyAdmin and if I see no one online I'll start the fullrender, but as soon as someone comes on I stop the process. There's just too much room for error generation, lag and worst of all complaining from the players if too many things are going on at once.

So, be patient with your fullrenders. (Also keep in mind that any advice I give may be completely worthless and could result in an IRS tax audit.)

snake2332 commented 11 years ago

@Haruchai Haha, yeah I don't ever do renders while players are online. I don't want the server to crash, though, if someone logs in during the render. I didn't really like xychorium all over the place anyway, so I removed xycraft.

kencinder commented 11 years ago

I give up, no matter Forge or Bukkit versions, and even if I allocate 8GB of RAM it chews right through it during a render and crashes my server. No Xycraft here...and the most recent dev builds are actually the worst offender. I'm going back to the 1.5 release on Bukkit Dev, while it ate up memory I could actually finish a fullrender... Renders are also brutally slow right from the start, taking something like 700ms+ per tile...

ThatDorkyGuy commented 11 years ago

Yea unfortunately for me as well. We still have oom crashes and something about GC. That's with MCPC build 248 and the latest dynmap dev forge build.

Happens pretty quick once it starts to render. We only have 3GB currently.

:(

On Mar 26, 2013, at 11:06 AM, kencinder notifications@github.com wrote:

I give up, no matter Forge or Bukkit versions, and even if I allocate 8GB of RAM it chews right through it during a render and crashes my server. No Xycraft here...and the most recent dev builds are actually the worst offender.

— Reply to this email directly or view it on GitHub.

snake2332 commented 11 years ago

I wonder if you guys might have another mod or plugin that is hooking the chunks like XyCraft does. Maybe list your mods & plugins.

Using MCPC+ build 248 as well. I have 110+ mods & maybe 15 bukkit plugins. My server hovers around 1.25GB of memory used when no one is logged in and I do a full render (when looking at java.exe in running processes). For memory settings, I use: -XX:MaxPermSize=128m -Xms1G -Xmx8G.

BBBRV commented 11 years ago

Plugin-wise i have the following:

Essentials EssentialsXMPP Essentials GeoIP GroupManager WorldEdit WorldGuard WorldBorder RestartEvolution (basic automatic restart plugin) AutoSaveWorld (does exactly what it says) Vote

mod-wise the only additional ones are damageindicators and MCherds.

ThatDorkyGuy commented 11 years ago

My server is vanilla Mindcrack 8.2 using MCPC+ Build 248

I only have a few plugins, they are:

ChestShop Essentials Essentials GroupManager WorldGuard WorldEdit Iconomy Logblock WorldBorder (although never used or config'd) GriefPrevention

kencinder commented 11 years ago

Server: MCPC+ Build 248

Mods: Buildcraft v3.4.3 ComputerCraft v1.5 CustomMobSpawner v1.11 Mo Creatures v4.5.1 Forestry v2.0.0.11 ForgeMobSpawnControls v1.4.6.2 Industrialcraft 2 v1.115.761 Railcraft v6.17.0.0 Recipear v1.3 Redpower 2.0pr6

Plugins: (I'd have to check my logs for versions thanks to most plugins not being given versioned names on BukkitDev downloads) Bookshelf Commandbook Dynmap(Duh!) w/Dynmap Towny Lockette Multiverse Core + Inventories OnTime PermissionsEx SimpleAutoAnnouncer StarGate Towny Advanced Variable Triggers WorldBorder WorldEdit

Looks like the only plugins we 3 have in common is WorldBorder and WorldEdit, any chance you are NOT using one of them snake2332? I can't say for mods, as I don't use FTB...I roll my own setup.

snake2332 commented 11 years ago

I don't use WorldBorder yet. I was going to try it out so maybe I will tonight and see what happens. I do have WorldEdit and WorldGuard.

kencinder commented 11 years ago

So that makes the ONLY plugin we all have in common, WorldEdit...out it comes and I'll see what happens. I do recall having some serious issues with a previous build of WorldEdit, where I had to pick up one of the dev builds in order to even get a number of commands working...hmmm

ThatDorkyGuy commented 11 years ago

I just double checked and I had WorldBorder (just the folder which is created from dropping the .jar in the plugins), but had deleted the .jar file long ago, so I don't think it's WorldBorder as the common link. I've removed the folder now though.

kencinder commented 11 years ago

Sunuva...I think we may have a winner here. I removed WorldEdit and I've been running a HIRES surface render for 15 minutes now, and memory usage has been at a constant ~3100MB +/- 150MB for around 10 minutes.

Oh and in doing this, I'm back with running 1.5 straight off BukkitDev...oO

Edit: 20 minutes, still no change. What the hell could WorldEdit be doing, sitting unused, that would ONLY cause this to happen when rendering with Dynmap?

ThatDorkyGuy commented 11 years ago

Well don't jinx it until you do a FULL render, all the way through lol, then we may know. Weird how we could do full renders before, with no issues, and now we can't.

kencinder commented 11 years ago

I couldn't get 20 minutes into a NORMAL surface render without munching up 6GB of memory....I set my server to restart when memory usage hit 5500MB, so it would continue to render, otherwise it would crash and I'd have to start all over and babysit it.

I'm running WorldEdit v5.5.1(According to server log, but I KNOW I am using a dev build from sk89q's Jenkins, as the 5.5.1 on BukkitDev doesn't work 100% for me, pretty sure it's build 1337) btw, check your server logs and post what version you guys are running? Hopefully snake2332 is running a version of WorldEdit I CAN use alongside dynmap, as I make plenty of use of it and it would suck to lose it.

30 mins in and only picked up a couple hundred MB in memory usage...

Edit: Closer look on WorldEdit BukkitDev shows that 5.5.2+ is supposed to work on 1.4.7 too...didn't realize that. Still want to know what everyone, especially snake2332 is running.

ThatDorkyGuy commented 11 years ago

I'm running WorldEdit v5.5.1 from the dev bukkit.org website.

kencinder commented 11 years ago

Yeah pretty sure I had issues with dynmap with it as well, but I had switched quickly to a dev build because a few commands weren't working correctly. Still going strong and steady here without it in place, I would have had to restart/or crashed at least twice by now.

Could very well have had mikeprimm chasing a problem he can't fix, hopefully that wasn't the case with others issues early on in this issue.

ThatDorkyGuy commented 11 years ago

Well keep going man, I'm cheering for you! I hope it completes for ya!

kencinder commented 11 years ago

Gonna be quite awhile...3000 diameter circle loaded with WorldBorder, 63100 tiles rendered so far in HiRes and that's only 1 of 3 worlds (Main world is for new untrusted users, 2nd world is for trusted users and 1 Creative world). Still going though, but is has creeped up to just over 4000MB now, I'll check my server log in the morning and see what went on while I was sleeping.

snake2332 commented 11 years ago

I am using WorldEdit 5.5.1 also.

On Tue, Mar 26, 2013 at 10:36 PM, kencinder notifications@github.comwrote:

Gonna be quite awhile...3000 diameter circle loaded with WorldBorder, 63100 tiles rendered so far in HiRes and that's only 1 of 3 worlds (Main world is for new untrusted users, 2nd world is for trusted users and 1 Creative world). Still going though, but is has creeped up to just over 4000MB now, I'll check my server log in the morning and see what went on while I was sleeping.

— Reply to this email directly or view it on GitHubhttps://github.com/webbukkit/dynmap/issues/1191#issuecomment-15503990 .

ThatDorkyGuy commented 11 years ago

Jeeze man, that's insane. I mean not all of us host servers on 32GB computers or whatever...I have a 3GB server...hosted...so there HAS to be a way to fix all this. I mean it used to run great...just a few weeks ago. Crazy =(

kencinder commented 11 years ago

Hell I might have 32GB...but there's no way I'm allocating that much to a Minecraft server, that's just nuts.

I can't go to sleep, I can't pry myself away from watching this. It's now over 4800MB though, but it's obviously taken A LOT longer to get there without WorldEdit present. Something is still leaking, albeit considerably slower, and WorldEdit must be exacerbating it.. I'll probably try going back to the latest dev build of Dynmap tomorrow, still without WorldEdit, and rendering another world. If that doesn't do it, I'm going to drop Dynmap into a bare MCPC+ and add my plugins back one by one until it leaks again.

Edit: Yep over 5000MB now

Curious, do you guys know what your servers are running on? If you're hosted ThatDorkyGuy, chances are it's on a nix server, I run Debian on mine. snake2332 appears to be on Windows? I know plugin/mod load order isn't the same between the two, and has caused minor issues for me...not sure if it could in any way be related to this but who knows? Could be a JRE(OpenJDK on nix unless you've explicitly installed Oracle's, Oracle only on Windows) thing?

ThatDorkyGuy commented 11 years ago

@kencinder well hopefully you made it through a full render. I'm still waiting for a fix that will allow us (who host servers with lower GBs of ram) to be able to have this awesome mod/plugin apart of our community resources. It worked fine before our upgrade to Mindcrack 8.2 ....so sad that it doesn't work now. We love it a lot on ThatDorkyGuy Mindcrack Server!

mikeprimm commented 11 years ago

Running all my test on -Xmx1024M (I actually never test with anything higher) - do remember that the memory 'use' goes with the memory granted: give more, and it'll use more (and waste less time garbage collecting). I recall some mods that allowed you to trigger a manual GC run, which lets you get a more accurate idea of the actual memory being used (versus just the junk failing to be collected): IIRC, Essentials had a /gc command that used to do this.

kencinder commented 11 years ago

I just switched back to the latest dev build, and I'm running a fullrender on my 2nd world...currently on the flat render I will keep you posted. Remember though ThatDorkyGuy, I'm running a HiRes render, LowRes is considerably less resource intensive to begin with, and like mikeprimm said, if you give it more it will use more, but the problem is/was it was using it ALL and crashing(and still was for me last night with 1.5, just took a long time)

ThatDorkyGuy commented 11 years ago

Is there a way, with a hosted server, to allow dynmap to only use a gig Mike, like you're doing? by changing somethin in the settings, or via console? And I only want HiRes as well, like we had before =D

mikeprimm commented 11 years ago

Right - crashing/OOMing implies that its really "keeping" the memory, versus shedding off a lot of trash to be collected when the VM needs memory. Garbage isn't leaking, per se, but you cannot tell that the used memory is garbage until you try to collect it and find out that someone is still referencing it.

mikeprimm commented 11 years ago

Only one heap in a JVM, so no way to give some to Dynmap and the rest to the other code. I run my test servers with 1GB heap as a matter of routine - even with bloated monsters like FTB Ultimate (since I don't run test servers with lots of users, and since my memory load isn't a function of the number of users, this is still workable, even though most folks don't consider FTB Ultimate usable with 1GB)

mikeprimm commented 11 years ago

Fact is, unless something is leaking, we don't actually commit that much memory at a time: it can be more if you crank up the parallel rendering count, but otherwise we're working one tile at a time, which involves typically less than 100 chunks being loaded (its actually lower for hires renders, but its bigger for 'surface' maps - the diagonal view 'slices across' more chunks than the top-down view does, at a given resolution). The act of loading and unload chunks makes lots of garbage, but we do try to do everything to avoid having too high a 'high water mark' on the memory actually loaded at a given point in time.

kencinder commented 11 years ago

Ok then I'm certainly still experiencing a leak, as I'm up over 4GB now on FLAT during a render. It's most certainly an issue that is made WAY more apparent with WorldEdit present.

I'm going to let the FLAT render finish, and yank all my plugins except for Dynmap and see where that goes, putting plugins back 1 at a time if it's not leaking on it's own. If it leaks on it's own, it's safe to say there is a leak with MCPC+ itself that Dynmap rendering brings about. I don't think removing JUST Dynmap as referenced in the OP, proves much of anything...there is a leak in either MCPC+ or a plugin, or a mod that Dynmap is simply exposing. Removing WorldEdit sort of proved this. If it's another plugin, I think the only ones I have that do anything with regards to chunk loads would be Towny or Worldborder, and Worldborder runs some update check even if you don't have a border set...

mikeprimm commented 11 years ago

Unless it crashed, once again, the number is meaningless - give it more, it'll use more. A fullrender (specifically, loading and unloading lots and lots of chunks) makes lots of garbage, even if it doesn't use that much memory at a given moment in time - JVM memory management is intentionally lazy. If you want to drive the closest equivalent without us, log in an operator and just fly all over the map: lots of places where you cause chunks to need to be loaded, and then cause them to need to be unloaded, and observe the memory behavior. Trick is, you cannot do it quite as fast as we can (certainly not with one player), but it will drive a comparable behavior. Key is that it needs to be actually driving chunk loading/unloading, so don't do it close to spawn or anything.

kencinder commented 11 years ago

Makes sense, but yeah it wound up crashing even on the FLAT render. Time to yank plugins.

mikeprimm commented 11 years ago

If you can, grab a heapdump when you have it being bad - with the new code, I'd like to give it a look to see who/what is driving the issue.

ThatDorkyGuy commented 11 years ago

@kencinder yeah thats when mine crashed too, on a full hires render of the flat view. It never made it to surface/cave or the other worlds. Just of our main world. Thanks for helping test.

kencinder commented 11 years ago

I cloned my setup, dropped memory allocated to 1GB and pulled every plugin but Dynmap. Starting a fullrender, if it tanks again I'll get you that heapdump mikeprimm, if not I'll start adding plugins until I hit the culprit, at which point I'll yank everything else and get you a heapdump with only dynmap and the offender.

kencinder commented 11 years ago

Well I can confirm it's NOT MCPC+, and not any of the mods I'm running either. Completed a full FLAT render with only 1GB of memory allocated. Time to start putting plugins back, and the first to go back in will be WorldBorder, as I know it's running some "BorderCheck" thing, even when you have no borders set.