Cuberite Forum
Server Crash loading nether - Printable Version

+- Cuberite Forum (https://forum.cuberite.org)
+-- Forum: Cuberite (https://forum.cuberite.org/forum-4.html)
+--- Forum: Discussion (https://forum.cuberite.org/forum-5.html)
+--- Thread: Server Crash loading nether (/thread-2257.html)



Server Crash loading nether - Rekuen - 12-18-2015

Hi, before I take this to github i would like to present it here, so I know if it is a general issue, or just has to be with my configuration.

The problem is that once I've created a nether portal, and the player jumps in , the server starts to load the chunks to prepare the spawn in the nether and before it ends loading the server crash.


[14:36:27] --- Started Log ---
[14:36:27] Cuberite Jenkins gcc armhf Release (master) build id: #298
[14:36:27] from commit id: 1395ff3ca4baf554f8b47a73ebd7bbf7635f59cb built at: Thu 17 Dec 11:37:13 CET 2015
[14:36:27] Creating new server instance...
[14:36:27] Reading server config...
[14:36:27] Starting server...
Info [14:36:27] Compatible clients: 1.7.x, 1.8.x
Info [14:36:27] Compatible protocol versions 4, 5, 47
Warn [14:36:28] WebServer: The server is running in unsecured HTTP mode.
Info [14:36:28] Put a valid HTTPS certificate in file 'webadmin/httpscert.crt' and its corresponding private key to 'webadmin/httpskey.pem' (without any password) to enable HTTPS support
[14:36:28] Loaded 448 crafting recipes
[14:36:28] Loaded 20 furnace recipes and 56 fuels
[14:36:28] Loaded 88 brewing recipes
[14:36:28] -- Loading Plugins --
[14:36:28] Initialized ChatLog v.3
[14:36:29] Initialised Core v.15
[14:36:29] Initialised Essentials v.0
[14:36:29] [EssentialsSpawn] Plugin v1 Enabled!
[14:36:29] Login is initialized
[14:36:29] Initialized TransAPI v.1
[14:36:29] Initialised Permissions v.5
[14:36:29] -- Loaded 7 Plugins --
[14:36:31] Preparing spawn (survival): 15.52% (97/625; 96.42 chunks / sec)
[14:36:32] Preparing spawn (survival): 40.16% (251/625; 151.43 chunks / sec)
[14:36:33] Preparing spawn (survival): 64.48% (403/625; 151.24 chunks / sec)
[14:36:34] Preparing spawn (survival): 89.76% (561/625; 156.75 chunks / sec)
[14:36:34] Startup complete, took 6884ms!
Info [14:38:31] Player RekuenLX has joined the game
Info [14:43:20] Player RekuenLX has left the game
Info [14:45:48] Player RekuenLX has joined the game
Warn [14:46:46] Unknown Finisher in the [Generator] section: "PieceStructures". Ignoring.
[14:46:47] Preparing spawn (survival_nether): 3.00% (12/400; 11.57 chunks / sec)
[14:46:48] Preparing spawn (survival_nether): 6.25% (25/400; 12.62 chunks / sec)
[14:46:49] Preparing spawn (survival_nether): 9.75% (39/400; 13.59 chunks / sec)
[14:46:50] Preparing spawn (survival_nether): 13.75% (55/400; 15.66 chunks / sec)
[14:46:51] Preparing spawn (survival_nether): 17.75% (71/400; 15.40 chunks / sec)
[14:46:52] Preparing spawn (survival_nether): 21.75% (87/400; 15.79 chunks / sec)
[14:46:53] Preparing spawn (survival_nether): 25.50% (102/400; 14.51 chunks / sec)
[14:46:54] Preparing spawn (survival_nether): 29.25% (117/400; 14.82 chunks / sec)
[14:46:55] Preparing spawn (survival_nether): 32.75% (131/400; 13.99 chunks / sec)
[14:46:56] Preparing spawn (survival_nether): 37.25% (149/400; 17.11 chunks / sec)
[14:46:57] Preparing spawn (survival_nether): 40.75% (163/400; 13.92 chunks / sec)
[14:46:58] Preparing spawn (survival_nether): 45.25% (181/400; 17.49 chunks / sec)
[14:46:59] Preparing spawn (survival_nether): 50.00% (200/400; 17.89 chunks / sec)
[14:47:00] Preparing spawn (survival_nether): 54.75% (219/400; 18.65 chunks / sec)
[14:47:01] Preparing spawn (survival_nether): 59.75% (239/400; 19.14 chunks / sec)
[14:47:02] Preparing spawn (survival_nether): 64.50% (258/400; 18.30 chunks / sec)
[14:47:03] Preparing spawn (survival_nether): 69.25% (277/400; 18.43 chunks / sec)
[14:47:04] Preparing spawn (survival_nether): 73.75% (295/400; 17.70 chunks / sec)
[14:47:05] Preparing spawn (survival_nether): 78.00% (312/400; 16.72 chunks / sec)
Err [14:47:06] Deadlock detected, aborting the server
Err [14:47:06] D: | Cuberite has encountered an error and needs to close
Err [14:47:06] Details | SIGABRT: Server self-terminated due to an internal fault
Err [14:47:06] Cuberite Jenkins gcc armhf Release (master) build id: #298
Err [14:47:06] from commit id: 1395ff3ca4baf554f8b47a73ebd7bbf7635f59cb built at: Thu 17 Dec 11:37:13 CET 2015


That's the log, I'm running the server on a Raspberry Pi 2, minimal raspbian netinstall image, and just the Cuberite Server, latest build from today.

Hope you can help me, I'm going to debug more in depth to get more info.

Thanks.


RE: Server Crash loading nether - Seadragon91 - 12-18-2015

The problem is, the deadlock detector aborts the server if a tick takes about 20 seconds. I would suggest changing the value of IntervalSec in settings.ini to 120 seconds.


RE: Server Crash loading nether - Rekuen - 12-18-2015

(12-18-2015, 02:14 AM)Seadragon91 Wrote: The problem is, the deadlock detector aborts the server if a tick takes about 20 seconds. I would suggest changing the value of IntervalSec in settings.ini to 120 seconds.

Thanks , that solves the problem, now i have another one, is not a big one as it not crash the server , has something to do with the EssetialsSpawn plugin, so I will open a bug in the plugin github repo.

[16:25:11] Error in plugin EssentialsSpawn calling function <callback>()
[16:25:11] LUA: Plugins/EssentialsSpawn/main.lua:60: attempt to compare number with nil
[16:25:11] Stack trace:
[16:25:11] Plugins/EssentialsSpawn/main.lua(60): IsInSpawn
[16:25:11] Plugins/EssentialsSpawn/hooks.lua(55): (no name)
[16:25:11] Stack trace end
[16:25:11] Error in plugin EssentialsSpawn calling function <callback>()
[16:25:11] LUA: Plugins/EssentialsSpawn/main.lua:60: attempt to compare number with nil
[16:25:11] Stack trace:
[16:25:11] Plugins/EssentialsSpawn/main.lua(60): IsInSpawn
[16:25:11] Plugins/EssentialsSpawn/hooks.lua(55): (no name)
[16:25:11] Stack trace end
[16:25:11] Error in plugin EssentialsSpawn calling function <callback>()
[16:25:11] Lua engine: attempting to push a plain pointer, pushing nil instead.
[16:25:11] This indicates an unimplemented part of MCS bindings
[16:25:11] Stack trace:
[16:25:11] Stack trace end
[16:25:11] LUA: Plugins/EssentialsSpawn/main.lua:60: attempt to compare number with nil
[16:25:11] Stack trace:
[16:25:11] Plugins/EssentialsSpawn/main.lua(60): IsInSpawn
[16:25:11] Plugins/EssentialsSpawn/hooks.lua(45): (no name)
[16:25:11] Stack trace end
[16:25:11] Error in plugin EssentialsSpawn calling function <callback>()
[16:25:11] LUA: Plugins/EssentialsSpawn/main.lua:60: attempt to compare number with nil
[16:25:11] Stack trace:
[16:25:11] Plugins/EssentialsSpawn/main.lua(60): IsInSpawn
[16:25:11] Plugins/EssentialsSpawn/hooks.lua(79): (no name)
[16:25:11] Stack trace end
[16:25:11] Error in plugin EssentialsSpawn calling function <callback>()
[16:25:11] LUA: Plugins/EssentialsSpawn/main.lua:60: attempt to compare number with nil
[16:25:11] Stack trace:
[16:25:11] Plugins/EssentialsSpawn/main.lua(60): IsInSpawn
[16:25:11] Plugins/EssentialsSpawn/hooks.lua(95): (no name)
[16:25:11] Stack trace end
[16:25:11] Error in plugin EssentialsSpawn calling function <callback>()
[16:25:12] LUA: Plugins/EssentialsSpawn/main.lua:60: attempt to compare number with nil
[16:25:12] Stack trace:
[16:25:12] Plugins/EssentialsSpawn/main.lua(60): IsInSpawn
[16:25:12] Plugins/EssentialsSpawn/hooks.lua(79): (no name)
[16:25:12] Stack trace end
[16:25:12] Error in plugin EssentialsSpawn calling function <callback>()
[16:25:13] LUA: Plugins/EssentialsSpawn/main.lua:60: attempt to compare number with nil
[16:25:13] Stack trace:
[16:25:13] Plugins/EssentialsSpawn/main.lua(60): IsInSpawn
[16:25:13] Plugins/EssentialsSpawn/hooks.lua(79): (no name)
[16:25:13] Stack trace end
[16:25:13] Error in plugin EssentialsSpawn calling function <callback>()
[16:25:14] Lua engine: attempting to push a plain pointer, pushing nil instead.
[16:25:14] This indicates an unimplemented part of MCS bindings
[16:25:14] Stack trace:
[16:25:14] Stack trace end
[16:25:14] LUA: Plugins/EssentialsSpawn/main.lua:60: attempt to compare number with nil
[16:25:14] Stack trace:
[16:25:14] Plugins/EssentialsSpawn/main.lua(60): IsInSpawn
[16:25:14] Plugins/EssentialsSpawn/hooks.lua(45): (no name)
[16:25:14] Stack trace end
[16:25:14] Error in plugin EssentialsSpawn calling function <callback>()
[16:25:14] LUA: Plugins/EssentialsSpawn/main.lua:60: attempt to compare number with nil
[16:25:14] Stack trace:
[16:25:14] Plugins/EssentialsSpawn/main.lua(60): IsInSpawn
[16:25:14] Plugins/EssentialsSpawn/hooks.lua(79): (no name)
[16:25:14] Stack trace end
[16:25:14] Error in plugin EssentialsSpawn calling function <callback>()
[16:25:15] LUA: Plugins/EssentialsSpawn/main.lua:60: attempt to compare number with nil


RE: Server Crash loading nether - Seadragon91 - 12-18-2015

Created a pull request, that changes the interval of the deadlock detector to 120 seconds. This should be enough time for the world to be generated.

https://github.com/cuberite/cuberite/pull/2765


RE: Server Crash loading nether - xoft - 12-18-2015

I still think this is a bug in the server, the Nether world shouldn't suddenly start being accessible in the middle of the game. Either declare all the worlds, or suffer their nonexistence.


RE: Server Crash loading nether - Rekuen - 12-18-2015

(12-18-2015, 02:41 AM)xoft Wrote: I still think this is a bug in the server, the Nether world shouldn't suddenly start being accessible in the middle of the game. Either declare all the worlds, or suffer their nonexistence.

Why don't precharge the world as the others? it would take a little longer to start the server, better that than waiting in the portal like 20 secs or more depending on the hardware, the first time you enter.


RE: Server Crash loading nether - xoft - 12-18-2015

Exactly! But for that the world needs to be initialized at startup (by adding it to settings.ini), and not at portal activation. Which has the unfortunate side-effect that if you don't specify all the worlds properly in settings.ini, portals would appear as not-working. And many people would report that as a bug.


RE: Server Crash loading nether - tigerw - 12-18-2015

I was thinking of redesigning the world creation to generate an overworld/end/nether on startup, and put them into folders, like Vanilla does.

If plugins want to create new worlds, well... Windows has restarted for tens of years to install updates, why can't our humble server do the same to generate a world?


RE: Server Crash loading nether - worktycho - 12-18-2015

One thing I've never understood is why the spawn initialization happens on the creating thread, and not the first act of the tick thread.

I suggest we get rid of CreateAndInitalizeWorld, and replace it with a method that inits the spawn asynchronously. We'll have to deal with interactions with uninitialized worlds, but thats probably the best way to fix this.


RE: Server Crash loading nether - Zee1234 - 12-18-2015

Ok so, I think plugins SHOULD be allowed to create new worlds, BUT, it would likely have the same problem as spigot plugins that do it: they can time out the server. Yes, the plugins generate outside of the world tick thread, but if the generation takes up too much processing power or memory, the server can crash (I'm speaking from experience here, it's not hard to crash a server with world gen. Try loading a Citiworld world on a server with <2 gigs ram using Multiverse. It either takes 1-4 minutes or takes everything down with it).

So long as a plugin can load an exact copy of the overworld by using the same speed without crashing the server, it should be fine. Doesn't matter if a custom gen crashes it, that's the server owner's problem.