mesecons icon indicating copy to clipboard operation
mesecons copied to clipboard

Moving luac from position results in server crash

Open Bastrabun opened this issue 3 years ago • 0 comments

Repro:

  1. Place a luacontroller
  2. Add this code:
interrupt(0.1,'')
  1. Use Worldedit to remove the luacontroller

Another Repro:

  1. Place luacontroller
  2. Place a digilines piston next to it
  3. Place a second luacontroller that would be moved by the extending piston
  4. 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

Bastrabun avatar Jun 02 '21 11:06 Bastrabun