Sokomine / travelnet

network of teleporter-boxes that allow easy travelling to other boxes on the same network (Mod for Minetest)
GNU General Public License v3.0
30 stars 52 forks source link

MineClone2 servercrash by travelnet #40

Open RonnyBarthmann opened 5 years ago

RonnyBarthmann commented 5 years ago

2019-03-31 07:45:12: ERROR[Main]: ServerError: AsyncErr: ServerThread::run Lua: Runtime error from mod 'travelnet' in callback on_playerReceiveFields(): Invalid position (expected table got nil). 2019-03-31 07:45:12: ERROR[Main]: stack traceback: 2019-03-31 07:45:12: ERROR[Main]: [C]: in function 'get_meta' 2019-03-31 07:45:12: ERROR[Main]: .../sda3/Minetest/server1/.minetest/mods/travelnet/init.lua:197: in function <.../sda3/Minetest/server1/.minetest/mods/travelnet/init.lua:191> 2019-03-31 07:45:12: ERROR[Main]: ...minetest/bin/../share/minetest/builtin/game/register.lua:419: in function <...minetest/bin/../share/minetest/builtin/game/register.lua:399> 2019-03-31 07:45:12: ERROR[Main]: stack traceback: 2019-03-31 07:45:12: ERROR[Main]: [C]: in function 'get_meta' 2019-03-31 07:45:12: ERROR[Main]: .../sda3/Minetest/server1/.minetest/mods/travelnet/init.lua:197: in function <.../sda3/Minetest/server1/.minetest/mods/travelnet/init.lua:191> 2019-03-31 07:45:12: ERROR[Main]: ...minetest/bin/../share/minetest/builtin/game/register.lua:419: in function <...minetest/bin/../share/minetest/builtin/game/register.lua:399>

ghost commented 5 years ago

same: Invalid position (expected table got nil). may be at change row, listup or down ?

2019-04-19 14:14:13: ERROR[Main]: ServerError: AsyncErr: ServerThread::run Lua: Runtime error from mod 'travelnet' in callback on_playerReceiveFields(): Invalid position (expected table got nil). 2019-04-19 14:14:13: ERROR[Main]: stack traceback: 2019-04-19 14:14:13: ERROR[Main]: [C]: in function 'get_meta' 2019-04-19 14:14:13: ERROR[Main]: /home/thomas/.minetest/mods/travelnet/init.lua:214: in function 'func' 2019-04-19 14:14:13: ERROR[Main]: ...ocal/share/minetest/builtin/profiler/instrumentation.lua:106: in function <...ocal/share/minetest/builtin/profiler/instrumentation.lua:100> 2019-04-19 14:14:13: ERROR[Main]: /usr/local/share/minetest/builtin/game/register.lua:419: in function </usr/local/share/minetest/builtin/game/register.lua:399> 2019-04-19 14:14:13: ERROR[Main]: stack traceback: 2019-04-19 14:14:13: ERROR[Main]: [C]: in function 'get_meta' 2019-04-19 14:14:13: ERROR[Main]: /home/thomas/.minetest/mods/travelnet/init.lua:214: in function 'func' 2019-04-19 14:14:13: ERROR[Main]: ...ocal/share/minetest/builtin/profiler/instrumentation.lua:106: in function <...ocal/share/minetest/builtin/profiler/instrumentation.lua:100> 2019-04-19 14:14:13: ERROR[Main]: /usr/local/share/minetest/builtin/game/register.lua:419: in function </usr/local/share/minetest/builtin/game/register.lua:399>

VanessaE commented 4 years ago

This also affects Minetest 5.3.0-dev with minetest_game:

2020-05-08 05:45:35: ERROR[Main]: ServerError: AsyncErr: ServerThread::run Lua: Runtime error from mod 'travelnet' in callback on_playerReceiveFields(): Invalid position (expected table got nil).
2020-05-08 05:45:35: ERROR[Main]: stack traceback:
2020-05-08 05:45:35: ERROR[Main]:       [C]: in function 'get_meta'
2020-05-08 05:45:35: ERROR[Main]:       ..._World/worldmods/dreambuilder_modpack/travelnet/init.lua:214: in function <..._World/worldmods/dreambuilder_modpack/travelnet/init.lua:205>
2020-05-08 05:45:35: ERROR[Main]:       /usr/local/share/minetest/builtin/game/register.lua:429: in function </usr/local/share/minetest/builtin/game/register.lua:413>
eliam commented 4 years ago

Hey, I got something similar in realtest using 5.3.0-dev. Switching to 5 stable seems to have cleared it up so I guess a bug was added somewhere. Too lazy to look further than 'works for me in 5 stable' right now.

stormchaser3000 commented 4 years ago

any idea how to reproduce this? just wondering because I was thinking about trying to fix it

eliam commented 4 years ago

i think i just used a local build of 5.3.0-dev with https://content.minetest.net/packages/Wuzzy/realtest_mt5/ and it died with the error. not sure if there is a newer dev version but i can try again if there is. using 5 stable didnt die. given i was setting up a game for my kid to play, that was as much as i could be bothered to do!

WulftheNordicRanger commented 4 years ago

It seems to trigger randomly when hitting the back button when you try to add a station without naming it. I poked around at the change log and it seems that there was a change relating to the meta function and i wonder if that could be a possible cause

ymph commented 4 years ago

We had the same kind of errors on our server (5.3.0) :

2020-10-08 14:27:06: ERROR[Main]: ServerError: AsyncErr: ServerThread::run Lua: Runtime error from mod 'travelnet' in callback on_playerReceiveFields(): Invalid position (expected table got nil).
2020-10-08 14:27:06: ERROR[Main]: stack traceback:
2020-10-08 14:27:06: ERROR[Main]:   [C]: in function 'get_meta'
2020-10-08 14:27:06: ERROR[Main]:   .../local/share/minetest/games/unej/mods/travelnet/init.lua:214: in function <.../local/share/minetest/games/unej/mods/travelnet/init.lua:205>
2020-10-08 14:27:06: ERROR[Main]:   /usr/local/share/minetest/builtin/game/register.lua:429: in function </usr/local/share/minetest/builtin/game/register.lua:413>

Our players were on a unstable wifi connection.

The PandoraBox Project, found also the same problem in this very mod and another one:

In both cases, the root cause of the crashes were not fully explained (at least in the issues) and the implemented correction was to validate the inputs in the register_on_player_receive_fields handler of the mod.

For information, for the time being, we will use on our server the following fork of travelnet that integrate a correction for this problem (and other ones also) : mt-mods/travelnet.

See also the following discussion on a Merge Request on the magic-compass mod in where we encountered exactly the same kind of problem.

I have absolutely no concrete explanation and proof of this, but if I had the resources to track down the real root of the problem, I would start by looking into the handling of the network stack in minetest and the use of udp.

In any case, the recommendation found in the minetest modding book and in the following article, is that formspec submissions can not be trusted and must be validated.