Server crash - unknown cause

User avatar
Krock
Member
 
Posts: 3598
Joined: Thu Oct 03, 2013 07:48
GitHub: SmallJoker

Server crash - unknown cause

by Krock » Sun Jan 26, 2014 20:02

Hello,

Today (4 hours ago) I started a small server.
About 8 crashes and alot joins later I still couldn't find the source of these crashes.

What console/debug.txt sais:
Your phone or window isn't wide enough to display the code box. If it's a phone, try rotating it to landscape mode.
Code: Select all
...
20:54:57: ACTION[ServerThread]: lanlok right-clicks object 21: player DernicoLP
20:54:57: ACTION[ServerThread]: lanlok right-clicks object 21: player DernicoLP
20:54:57: ACTION[ServerThread]: lanlok right-clicks object 21: player DernicoLP
20:54:57: ACTION[ServerThread]: lanlok right-clicks object 21: player DernicoLP
20:54:57: ACTION[ServerThread]: lanlok right-clicks object 21: player DernicoLP
20:54:57: ACTION[ServerThread]: lanlok punches object 21: player DernicoLP
20:54:57: ACTION[ServerThread]: Player DernicoLP punched by player lanlok, damag
e 2 HP
[Plantlife Library] Loaded
[moreblocks] loaded.
[Moretrees] Loaded (2013-02-11)
[OK] Mesecons
Pipeworks loaded!
[BitChange] Loaded.
20:54:58: ACTION[main]: Loading Land Rush Land Claim
20:54:58: ACTION[ServerThread]: announcing to servers.minetest.net
...


How do I debug those things?

EDIT: all recent crashes seem to cras because someone takes damage
Last edited by Krock on Sun Jan 26, 2014 20:39, edited 1 time in total.
Newest Win32 builds - Find a mod - All my mods
ALL YOUR DONATION ARE BELONG TO PARAMAT (Please support him and Minetest)
New DuckDuckGo !bang: !mtmod <keyword here>
 

User avatar
Krock
Member
 
Posts: 3598
Joined: Thu Oct 03, 2013 07:48
GitHub: SmallJoker

by Krock » Mon Jan 27, 2014 08:27

Okay, the crash was caused by the bones mod, where I added this:

minetest.chat_send_player(player_name..", You died at...")
Newest Win32 builds - Find a mod - All my mods
ALL YOUR DONATION ARE BELONG TO PARAMAT (Please support him and Minetest)
New DuckDuckGo !bang: !mtmod <keyword here>
 

User avatar
pandaro
Member
 
Posts: 266
Joined: Sun Jan 08, 2012 21:34
GitHub: pandaro

by pandaro » Mon Jan 27, 2014 17:34

Krock wrote:Okay, the crash was caused by the bones mod, where I added this:

minetest.chat_send_player(player_name..", You died at...")


can you post the code?
sorry for bad english
Linux debian 7 wheezy 64
kde
 

User avatar
Krock
Member
 
Posts: 3598
Joined: Thu Oct 03, 2013 07:48
GitHub: SmallJoker

by Krock » Mon Jan 27, 2014 18:21

There.
[spoiler=But you know, I found the fail?]
Your phone or window isn't wide enough to display the code box. If it's a phone, try rotating it to landscape mode.
Code: Select all
-- Minetest 0.4 mod: bones
-- See README.txt for licensing and other information.

local function is_owner(pos, name)
    local owner = minetest.get_meta(pos):get_string("owner")
    if owner == "" or owner == name or minetest.get_player_privs(name).server then
        return true
    end
    return false
end

minetest.register_node("bones:bones", {
    description = "Bones",
    tiles = {
        "bones_top.png",
        "bones_bottom.png",
        "bones_side.png",
        "bones_side.png",
        "bones_rear.png",
        "bones_front.png"
    },
    groups = {dig_immediate=2},
    sounds = default.node_sound_dirt_defaults({
        footstep = {name="default_gravel_footstep", gain=0.5},
        dug = {name="default_gravel_footstep", gain=1.0},
    }),
   
    can_dig = function(pos, player)
        local inv = minetest.get_meta(pos):get_inventory()
        return is_owner(pos, player:get_player_name()) and inv:is_empty("main")
    end,
   
    allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
        if is_owner(pos, player:get_player_name()) then
            return count
        end
        return 0
    end,
   
    allow_metadata_inventory_put = function(pos, listname, index, stack, player)
        return 0
    end,
   
    allow_metadata_inventory_take = function(pos, listname, index, stack, player)
        if is_owner(pos, player:get_player_name()) then
            return stack:get_count()
        end
        return 0
    end,
   
    on_metadata_inventory_take = function(pos, listname, index, stack, player)
        local meta = minetest.get_meta(pos)
        if meta:get_inventory():is_empty("main") then
            minetest.dig_node(pos)
        end
    end,
   
    on_punch = function (pos, node, player)
        if(is_owner(pos, player:get_player_name())) then
            local inv = minetest.get_meta(pos):get_inventory()
            local player_inv = player:get_inventory()
            for i=1,inv:get_size("main") do
                local stk = inv:get_stack("main", i)
                if player_inv:room_for_item("main", stk) then
                    player_inv:add_item("main", stk)
                else
                    minetest.add_item(pos, stk)
                end
            end
            minetest.remove_node(pos)
        end
    end,
   
    on_timer = function(pos, elapsed)
        local meta = minetest.get_meta(pos)
        local dtime = meta:get_int("time")+elapsed
       
        if dtime >= 180 then
            meta:set_string("infotext", meta:get_string("owner").."'s old bones")
            meta:set_string("owner", "")
            return false
        end
        meta:set_int("time", dtime)
        return true
    end,
})

minetest.register_on_dieplayer(function(player)
    if minetest.setting_getbool("creative_mode") then
        return
    end
   
    local pos = player:getpos()
    pos.x = math.floor(pos.x+0.5)
    pos.y = math.floor(pos.y+0.5)
    pos.z = math.floor(pos.z+0.5)
   
    local nn = minetest.get_node(pos).name
    if minetest.registered_nodes[nn].can_dig
        and not minetest.registered_nodes[nn].can_dig(pos, player)
        and    nn ~= "air"
        and    nn ~= "default:water_flowing"
        and    nn ~= "default:lava_flowing" then
       
        for i=1,player_inv:get_size("main") do
            minetest.add_item(pos, player_inv:get_stack("main", i))
            player_inv:set_stack("main", i, nil)
        end
       
        for i=1,player_inv:get_size("craft") do
            minetest.add_item(pos, player_inv:get_stack("craft", i))
            player_inv:set_stack("craft", i, nil)
        end
       
        minetest.chat_send_player(player:get_player_name(), "You died at ("..(pos.x)..","..(pos.y)..","..(pos.z).."). There was no place for your bones.")
        return
    end
   
    minetest.set_node(pos, {name="bones:bones"})
   
    local meta = minetest.get_meta(pos)
    local inv = meta:get_inventory()
    local player_inv = player:get_inventory()
    inv:set_size("main", 8*4)
   
    local empty_list = inv:get_list("main")
    inv:set_list("main", player_inv:get_list("main"))
    player_inv:set_list("main", empty_list)
       
    meta:set_string("formspec", "size[8,9;]"..
            "list[current_name;main;0,0;8,4;]"..
            "list[current_player;main;0,5;8,4;]")
    meta:set_string("infotext", player:get_player_name().."'s fresh bones")
    meta:set_string("owner", player:get_player_name())
    meta:set_int("time", 0)
    minetest.chat_send_player(player:get_player_name(), "You died at ("..(pos.x)..","..(pos.y)..","..(pos.z).."). Your bones stay fresh for 3 minutes.")
   
    local timer = minetest.get_node_timer(pos)
    timer:start(10)
end)

minetest.register_craft({
    output = 'default:stick 2',
    recipe = {
        {'bones:bones'}
    }
})
[/spoiler]
Newest Win32 builds - Find a mod - All my mods
ALL YOUR DONATION ARE BELONG TO PARAMAT (Please support him and Minetest)
New DuckDuckGo !bang: !mtmod <keyword here>
 


Return to Minetest Servers

Who is online

Users browsing this forum: No registered users and 9 guests

cron