dennisjenkins75 / digiline_craftdb

Minetest mod for a digiline queryable database holding all regular and technic crafting recipes.
GNU General Public License v3.0
2 stars 2 forks source link

"table index is nil" error #16

Closed BuckarooBanzay closed 1 year ago

BuckarooBanzay commented 1 year ago

didn't investigate further but it looks like an edge case that isn't covered by checks:

2022-10-29 16:15:14: ERROR[Main]: ServerError: AsyncErr: Lua: Runtime error from mod '??' in callback environment_Step(): /data/world//worldmods/digiline_craftdb/craftdb.lua:113: table index is nil
2022-10-29 16:15:14: ERROR[Main]: stack traceback:
2022-10-29 16:15:14: ERROR[Main]:   /data/world//worldmods/digiline_craftdb/craftdb.lua:113: in function '_merge_craft_recipe_items'
2022-10-29 16:15:14: ERROR[Main]:   /data/world//worldmods/digiline_craftdb/craftdb.lua:190: in function 'canonicalize_regular_recipe'
2022-10-29 16:15:14: ERROR[Main]:   /data/world//worldmods/digiline_craftdb/craftdb.lua:227: in function 'get_recipes'
2022-10-29 16:15:14: ERROR[Main]:   /data/world//worldmods/digiline_craftdb/init.lua:45: in function '_on_digiline_get_recipes'
2022-10-29 16:15:14: ERROR[Main]:   /data/world//worldmods/digiline_craftdb/init.lua:113: in function 'action'
2022-10-29 16:15:14: ERROR[Main]:   /data/world//worldmods/digicontrol/override.lua:45: in function 'f'
2022-10-29 16:15:14: ERROR[Main]:   /data/world//worldmods/monitoring/metrictypes/counter.lua:43: in function 'transmit'
2022-10-29 16:15:14: ERROR[Main]:   /data/world//worldmods/digicontrol/override.lua:78: in function 'f'
2022-10-29 16:15:14: ERROR[Main]:   /data/world//worldmods/monitoring/metrictypes/counter.lua:43: in function 'receptor_send'
2022-10-29 16:15:14: ERROR[Main]:   /data/world//worldmods/pipeworks/lua_tube.lua:727: in function </data/world//worldmods/pipeworks/lua_tube.lua:721>
2022-10-29 16:15:14: ERROR[Main]:   /data/world//worldmods/mesecons/mesecons/actionqueue.lua:137: in function 'old_execute'
2022-10-29 16:15:14: ERROR[Main]:   ...d//worldmods/mesecons_debug/overrides/mesecons_queue.lua:20: in function 'f'
2022-10-29 16:15:14: ERROR[Main]:   /data/world//worldmods/monitoring/metrictypes/counter.lua:43: in function 'execute'
2022-10-29 16:15:14: ERROR[Main]:   /data/world//worldmods/mesecons/mesecons/actionqueue.lua:111: in function </data/world//worldmods/mesecons/mesecons/actionqueue.lua:73>
2022-10-29 16:15:14: ERROR[Main]:   /usr/local/share/minetest/builtin/game/register.lua:431: in function </usr/local/share/minetest/builtin/game/register.lua:417>

EDIT: repro from "Huhhila" (thanks:)

-- do return end
if event.type == "program" then
  digiline_send('t1', { command = "get_recipes", items = {} })         -- test1 = safe
  --digiline_send('t2', { command = "get_recipes", item = "" })          -- test2 = crash
  --digiline_send('t3', { command = "get_recipes", items = { false } })  -- test3 = crash
  --digiline_send('t4', { command = "get_recipes", items = { true } })   -- test4 = crash
else
  mem[event.channel] = event.msg
end
FeXoR-o-Illuria commented 1 year ago

Happened again: https://pandorabox.io/crashlogs/crash_2023-03-28_18-43.txt

dennisjenkins75 commented 1 year ago

I can reproduce the crash in-game, but have been unable to reproduce it in the unit tests. Weird.