Hello, I looked into this crash but the attached log doesn't help me pinpoint why it crashes. It happens when killing yourself (and possibly other death) by digging in a protected area with latest git version of Minetest server (and windows git build). It seems to be infinite recursion (same function called over and over, lua memory usage approaching 1GB).
NOTE: I made one change to your code to prevent a different crash. Please consider making this change permanent:
return protector.can_dig(1, pos, player:get_player_name(), true, 1)
to
return player and protector.can_dig(1, pos, player:get_player_name(), true, 1) or false
The change above fixes a nil player crash, but I'm not sure if it has other consequences or is related to the problem below.
I was not able to fix the crash below nor understand the cause using the debug output:
The debug output below is from a sitation in multiplayer that I couldn't replicate exactly (player names hidden for privacy):
(parts in between . . . lines were repeated many times)
2017-02-22 16:49:45: ACTION[Server]: Player j********** punched by player l**********, damage 8 HP
2017-02-22 16:49:45: ACTION[Server]: l********** punches object 70: player j**********
2017-02-22 16:49:45: ACTION[Server]: Player j********** punched by player l**********, damage 0 HP
2017-02-22 16:49:45: ACTION[Server]: l********** punches object 70: player j**********
2017-02-22 16:49:45: ACTION[Server]: Player j********** punched by player l**********, damage 0 HP
2017-02-22 16:49:45: ACTION[Server]: 1********** digs default:cobble at (141,-312,221)
2017-02-22 16:49:45: ACTION[Server]: l********** punches object 148: player b**********
2017-02-22 16:49:45: ACTION[Server]: Player b********** punched by player l**********, damage 0 HP
2017-02-22 16:49:45: ACTION[Server]: l********** punches object 148: player b**********
2017-02-22 16:49:45: ACTION[Server]: Player b********** punched by player l**********, damage 0 HP
2017-02-22 16:49:45: ACTION[Server]: l********** punches object 148: player b**********
2017-02-22 16:49:45: ACTION[Server]: Player b********** punched by player l**********, damage 3 HP
2017-02-22 16:49:45: ACTION[Server]: l********** punches object 148: player b**********
2017-02-22 16:49:45: ACTION[Server]: Player b********** punched by player l**********, damage 0 HP
2017-02-22 16:49:46: ACTION[Server]: l********** punches object 148: player b**********
2017-02-22 16:49:46: ACTION[Server]: Player b********** punched by player l**********, damage 8 HP
2017-02-22 16:49:46: ACTION[Server]: l********** punches object 148: player b**********
2017-02-22 16:49:46: ACTION[Server]: Player b********** punched by player l**********, damage 0 HP
2017-02-22 16:49:46: ACTION[Server]: l********** punches object 148: player b**********
2017-02-22 16:49:46: ACTION[Server]: Player b********** punched by player l**********, damage 0 HP
2017-02-22 16:49:46: ACTION[Server]: Player l********** tried to access [object 70] from too far: d=73.1352, max_d=40. ignoring.
2017-02-22 16:49:46: ACTION[Server]: Player l********** tried to access [object 70] from too far: d=72.2024, max_d=40. ignoring.
2017-02-22 16:49:48: ACTION[Server]: l********** punches object 148: player b**********
2017-02-22 16:49:48: ACTION[Server]: Player b********** punched by player l**********, damage 8 HP
. . .
2017-02-22 16:50:00: WARNING[Server]: Failed to add armor to bones node.
. . .
2017-02-22 16:50:06: ACTION[Main]: [fishing] Server shuts down. saving trophies table
. . .
2017-02-22 16:50:07: ERROR[Main]: ServerError: Lua: Runtime error from mod '' in callback on_dieplayer(): Runtime error from mod '' in callback on_dieplayer(): Runtime error from mod '' in callback on_dieplayer(): Runtime error from mod '' in callback on_dieplayer(): Runtime error from mo
. . .
2017-02-22 16:50:07: ERROR[Main]: k on_dieplayer(): Runtime error from mod '' in callback on_dieplayer(): Runtime error from mod '' in callback on_dieplayer(): Runtime error from mod '' in callback on_dieplayer(): OOM error from mod '' in callback on_dieplayer(): not enough memory
2017-02-22 16:50:07: ERROR[Main]: Current Lua memory usage: 964 MB
. . .
2017-02-22 16:50:07: ERROR[Main]: stack traceback:
2017-02-22 16:50:07: ERROR[Main]: [C]: in function 'set_hp'
2017-02-22 16:50:07: ERROR[Main]: ...cal/share/minetest/games/ENLIVEN/mods/protector/init.lua:279: in function 'is_protected'
2017-02-22 16:50:07: ERROR[Main]: /usr/local/share/minetest/games/ENLIVEN/mods/bones/init.lua:191: in function </usr/local/share/minetest/games/ENLIVEN/mods/bones/init.lua:162>
2017-02-22 16:50:07: ERROR[Main]: /usr/local/share/minetest/builtin/game/register.lua:412: in function </usr/local/share/minetest/builtin/game/register.lua:392>
2017-02-22 16:50:07: ERROR[Main]: [C]: in function 'set_hp'
2017-02-22 16:50:07: ERROR[Main]: ...cal/share/minetest/games/ENLIVEN/mods/protector/init.lua:279: in function 'is_protected'
2017-02-22 16:50:07: ERROR[Main]: /usr/local/share/minetest/games/ENLIVEN/mods/bones/init.lua:191: in function </usr/local/share/minetest/games/ENLIVEN/mods/bones/init.lua:162>
2017-02-22 16:50:07: ERROR[Main]: /usr/local/share/minetest/builtin/game/register.lua:412: in function </usr/local/share/minetest/builtin/game/register.lua:392>
2017-02-22 16:50:07: ERROR[Main]: [C]: in function 'set_hp'
2017-02-22 16:50:07: ERROR[Main]: ...cal/share/minetest/games/ENLIVEN/mods/protector/init.lua:279: in function 'is_protected'
2017-02-22 16:50:07: ERROR[Main]: ...
2017-02-22 16:50:07: ERROR[Main]: /usr/local/share/minetest/games/ENLIVEN/mods/bones/init.lua:191: in function </usr/local/share/minetest/games/ENLIVEN/mods/bones/init.lua:162>
2017-02-22 16:50:07: ERROR[Main]: /usr/local/share/minetest/builtin/game/register.lua:412: in function </usr/local/share/minetest/builtin/game/register.lua:392>
2017-02-22 16:50:07: ERROR[Main]: [C]: in function 'set_hp'
2017-02-22 16:50:07: ERROR[Main]: ...cal/share/minetest/games/ENLIVEN/mods/protector/init.lua:279: in function 'is_protected'
2017-02-22 16:50:07: ERROR[Main]: /usr/local/share/minetest/games/ENLIVEN/mods/bones/init.lua:191: in function </usr/local/share/minetest/games/ENLIVEN/mods/bones/init.lua:162>
2017-02-22 16:50:07: ERROR[Main]: /usr/local/share/minetest/builtin/game/register.lua:412: in function </usr/local/share/minetest/builtin/game/register.lua:392>
2017-02-22 16:50:07: ERROR[Main]: [C]: in function 'set_hp'
2017-02-22 16:50:07: ERROR[Main]: ...cal/share/minetest/games/ENLIVEN/mods/protector/init.lua:279: in function 'is_protected'
2017-02-22 16:50:07: ERROR[Main]: /usr/local/share/minetest/games/ENLIVEN/mods/bones/init.lua:191: in function </usr/local/share/minetest/games/ENLIVEN/mods/bones/init.lua:162>
2017-02-22 16:50:07: ERROR[Main]: /usr/local/share/minetest/builtin/game/register.lua:412: in function </usr/local/share/minetest/builtin/game/register.lua:392>
. . .
I generated the debug output below by killing myself by punching a protected dirt block over and over until I died (similar to above, but [only sometimes] involves may_replace])
(parts in between . . . lines were repeated many times--stack trace with set_hp error had may set_hp errors per stack trace, until the last stack trace had 1)
2017-02-22 17:19:14: ACTION[Server]: mrg2 tried to dig flowers:geranium at protected position (26,2,15)
2017-02-22 17:19:15: ACTION[Server]: mrg2 tried to dig flowers:geranium at protected position (26,2,15)
2017-02-22 17:19:15: ACTION[Server]: mrg2 tried to dig flowers:geranium at protected position (26,2,15)
2017-02-22 17:19:16: ACTION[Server]: mrg2 tried to dig flowers:geranium at protected position (26,2,15)
. . .
2017-02-22 17:19:27: WARNING[Server]: Failed to add armor to bones node.
. . .
2017-02-22 17:19:27: ACTION[Main]: [fishing] Server shuts down. saving trophies table
. . .
2017-02-22 17:19:28: ERROR[Main]: ServerError: Lua: Runtime error from mod '3d_armor' in callback node_on_dig(): Runtime error from mod '3d_armor' in callback on_dieplayer(): Runtime error from mod '3d_armor' in callback on_dieplayer(): Runtime error from mod '3d_armor' in callback on_die
. . .
2017-02-22 17:19:28: ERROR[Main]: llback on_dieplayer(): Runtime error from mod '3d_armor' in callback on_dieplayer(): OOM error from mod '3d_armor' in callback on_dieplayer(): not enough memory
2017-02-22 17:19:28: ERROR[Main]: Current Lua memory usage: 968 MB
. . .
2017-02-22 17:19:49: ERROR[Main]: stack traceback:
2017-02-22 17:19:49: ERROR[Main]: [C]: in function 'set_hp'
2017-02-22 17:19:49: ERROR[Main]: ...cal/share/minetest/games/ENLIVEN/mods/protector/init.lua:279: in function 'is_protected'
2017-02-22 17:19:49: ERROR[Main]: /usr/local/share/minetest/games/ENLIVEN/mods/bones/init.lua:148: in function 'may_replace'
2017-02-22 17:19:49: ERROR[Main]: /usr/local/share/minetest/games/ENLIVEN/mods/bones/init.lua:189: in function </usr/local/share/minetest/games/ENLIVEN/mods/bones/init.lua:162>
2017-02-22 17:19:49: ERROR[Main]: /usr/local/share/minetest/builtin/game/register.lua:412: in function </usr/local/share/minetest/builtin/game/register.lua:392>
2017-02-22 17:19:49: ERROR[Main]: [C]: in function 'set_hp'
2017-02-22 17:19:49: ERROR[Main]: ...cal/share/minetest/games/ENLIVEN/mods/protector/init.lua:279: in function 'is_protected'
2017-02-22 17:19:49: ERROR[Main]: /usr/local/share/minetest/builtin/game/item.lua:452: in function </usr/local/share/minetest/builtin/game/item.lua:443>
. . .