mesecons
mesecons copied to clipboard
Moving luac from position results in server crash
Repro:
- Place a luacontroller
- Add this code:
interrupt(0.1,'')
- Use Worldedit to remove the luacontroller
Another Repro:
- Place luacontroller
- Place a digilines piston next to it
- Place a second luacontroller that would be moved by the extending piston
- Add this code to the first luacontroller
digiline_send('',"extend")
interrupt(0.1,'')
This is what happens:
2021-06-02 07:39:09: ERROR[Main]: ServerError: AsyncErr: environment_Step: Runtime error from mod 'mesecons_luacontroller' in callback environment_Step(): .../.minetest/mods/mesecons/mesecons_luacontroller/init.lua:472: bad argument #1 to 'pairs' (table expected, got nil)
2021-06-02 07:39:09: ERROR[Main]: stack traceback:
2021-06-02 07:39:09: ERROR[Main]: [C]: in function 'pairs'
2021-06-02 07:39:09: ERROR[Main]: .../.minetest/mods/mesecons/mesecons_luacontroller/init.lua:472: in function 'create_environment'
2021-06-02 07:39:09: ERROR[Main]: .../.minetest/mods/mesecons/mesecons_luacontroller/init.lua:627: in function 'run_inner'
2021-06-02 07:39:09: ERROR[Main]: .../.minetest/mods/mesecons/mesecons_luacontroller/init.lua:686: in function 'run'
2021-06-02 07:39:09: ERROR[Main]: .../.minetest/mods/mesecons/mesecons_luacontroller/init.lua:753: in function 'action'
2021-06-02 07:39:09: ERROR[Main]: /home/mtlive1/.minetest/mods/digilines/internal.lua:106: in function 'transmit'
2021-06-02 07:39:09: ERROR[Main]: /home/mtlive1/.minetest/mods/digilines/init.lua:53: in function 'receptor_send'
2021-06-02 07:39:09: ERROR[Main]: .../.minetest/mods/mesecons/mesecons_luacontroller/init.lua:724: in function <.../.minetest/mods/mesecons/mesecons_luacontroller/init.lua:718>
2021-06-02 07:39:09: ERROR[Main]: ...mtlive1/.minetest/mods/mesecons/mesecons/actionqueue.lua:137: in function 'old_execute'
2021-06-02 07:39:09: ERROR[Main]: /home/mtlive1/.minetest/mods/mesecons_debug/overrides.lua:7: in function 'execute'
2021-06-02 07:39:09: ERROR[Main]: ...mtlive1/.minetest/mods/mesecons/mesecons/actionqueue.lua:111: in function <...mtlive1/.minetest/mods/mesecons/mesecons/actionqueue.lua:73>
2021-06-02 07:39:09: ERROR[Main]: ...ve1/5.4.1/Minetest_live/bin/../builtin/game/register.lua:422: in function <...ve1/5.4.1/Minetest_live/bin/../builtin/game/register.lua:406>
2021-06-02 07:39:09: ERROR[Main]: stack traceback:
This is how it can be fixed:
local function run(pos, event)
+ if string.sub(core.get_node(pos).name,0,36) ~= "mesecons_luacontroller:luacontroller" then
+ return false, "Luac does not exist anymore"
+ end
local meta = minetest.get_meta(pos)
local code = meta:get_string("code")
local ok, errmsg = run_inner(pos, code, event)
Thanks to Test_User who discovered it and whosit who debugged it and found a solution.
For my reference: #610