Page 1 of 1

[0.14.13] Crash related to trains and rails on MP

Posted: Fri Oct 07, 2016 4:35 pm
by danielgweb
The server just crashed. The log is attached.

Code: Select all

System info: [CPU: Intel(R) Xeon(R) CPU E5-1660 v3 @ 3.00GHz, 4 cores, RAM: 4096MB]

Code: Select all

15741.808 Info TransferSource.cpp:140: Block request by a peer we're not serving for (56)
15743.113 Info ServerMultiplayerManager.cpp:733: mapTick(8170933) received stateChanged peerID(57) oldState(ConnectedLoadingMap) newState(TryingToCatchUp)
15755.299 Info ServerMultiplayerManager.cpp:733: mapTick(8171665) received stateChanged peerID(57) oldState(TryingToCatchUp) newState(WaitingForCommandToStartSendingTickClosures)
15755.300 Info GameActionHandler.cpp:2547: MapTick(8171665) processed PlayerJoinGame peerID(57) playerIndex(186) mode(create)
15755.474 Info ServerMultiplayerManager.cpp:733: mapTick(8171675) received stateChanged peerID(57) oldState(WaitingForCommandToStartSendingTickClosures) newState(InGame)
15809.366 Error CrashHandler.cpp:230: Received SIGSEGV
Factorio crashed. Generating symbolized stacktrace, please wait ...
15810.347 Warning Logger.cpp:364: Symbols.size() == 19, usedSize == 13
#0  0x000000000080d98d in Logger::logStacktrace(StackTraceInfo*) at /tmp/factorio-Tzjt63/src/Util/Logger.cpp:386
#1  0x000000000096d75b in CrashHandler::writeStackTrace() at /tmp/factorio-Tzjt63/src/Util/CrashHandler.cpp:105
#2  0x000000000096d9d4 in CrashHandler::SignalHandler(int) at /tmp/factorio-Tzjt63/src/Util/CrashHandler.cpp:235
#3  0x00007fa275c9d2f0 in ?? at ??:0
#4  0x00000000007fd949 in Train::tryReserveSignalsUpTo(double) [clone .constprop.73671] at /tmp/factorio-Tzjt63/src/Entity/RailSignalBase.hpp:82
#5  0x0000000000c0e2ca in tryReserveSignalsUpTo at /tmp/factorio-Tzjt63/src/Rail/Train.cpp:1582
#6  0x0000000000c47582 in TrainManager::update(bool) at /tmp/factorio-Tzjt63/src/Rail/Train.cpp:1031
#7  0x0000000000c4b852 in update at /tmp/factorio-Tzjt63/src/Rail/TrainManager.cpp:172
#8  0x0000000000c5d3b2 in Map::update() at /tmp/factorio-Tzjt63/src/Map/Map.cpp:1121
#9  0x0000000000c5e121 in Scenario::update() at /tmp/factorio-Tzjt63/src/Game.cpp:144
#10 0x0000000000cef9ad in update at /tmp/factorio-Tzjt63/src/Scenario/Scenario.cpp:837
#11 0x00007fa275c88a40 in MainLoop::gameUpdateStep(MultiplayerManagerBase*, Scenario*, AppManager*, MainLoop::HeavyMode) [clone .constprop.71557] at /tmp/factorio-Tzjt63/src/MainLoop.cpp:739
#12 0x0000000000406c69 in MainLoop::gameUpdateLoop(MainLoop::HeavyMode) at /tmp/factorio-Tzjt63/src/GlobalContext.cpp:969
15811.218 Warning Logger.cpp:364: Symbols.size() == 18, usedSize == 12
15811.218 Error CrashHandler.cpp:106: Map tick at moment of crash: 8174908
15811.218 Error Util.cpp:77: Unexpected error occurred. If you're running the latest version of the game you can help us solve the problem by posting the contents of the log file on the Factorio forums.
Please also include the save file(s), any mods you may be using, and any steps you know of to reproduce the crash.
Also I just append the Undecorator mod script on control.lua

Map file: control.lua

Code: Select all

script.on_event(defines.events.on_player_created, function(event)
  local player = game.players[event.player_index]
  player.insert{name="iron-plate", count=8}
  player.insert{name="pistol", count=1}
  player.insert{name="firearm-magazine", count=10}
  player.insert{name="burner-mining-drill", count = 1}
  player.insert{name="stone-furnace", count = 1}
  player.force.chart(player.surface, {{player.position.x - 200, player.position.y - 200}, {player.position.x + 200, player.position.y + 200}})
  if (#game.players <= 1) then
    game.show_message_dialog{text = {"msg-intro"}}
  else
    player.print({"msg-intro"})
  end
end)

script.on_event(defines.events.on_player_respawned, function(event)
  local player = game.players[event.player_index]
  player.insert{name="pistol", count=1}
  player.insert{name="firearm-magazine", count=10}
end)

script.on_event(defines.events.on_rocket_launched, function(event)
  local force = event.rocket.force
  if event.rocket.get_item_count("satellite") == 0 then
    if (#game.players <= 1) then
      game.show_message_dialog{text = {"gui-rocket-silo.rocket-launched-without-satellite"}}
    else
      for index, player in pairs(force.players) do
        player.print({"gui-rocket-silo.rocket-launched-without-satellite"})
      end
    end
    return
  end
  if not global.satellite_sent then
    global.satellite_sent = {}
  end
  if global.satellite_sent[force.name] then
    global.satellite_sent[force.name] = global.satellite_sent[force.name] + 1   
  else
    game.set_game_state{game_finished=true, player_won=true, can_continue=true}
    global.satellite_sent[force.name] = 1
  end
  for index, player in pairs(force.players) do
    if player.gui.left.rocket_score then
      player.gui.left.rocket_score.rocket_count.caption = tostring(global.satellite_sent[force.name])
    else
      local frame = player.gui.left.add{name = "rocket_score", type = "frame", direction = "horizontal", caption={"score"}}
      frame.add{name="rocket_count_label", type = "label", caption={"", {"rockets-sent"}, ":"}}
      frame.add{name="rocket_count", type = "label", caption=tostring(global.satellite_sent[force.name])}
    end
  end
end)

local CHUNK_SIZE = 32

local function removeDecorationsArea(surface, area )
	for _, entity in pairs(surface.find_entities_filtered{area = area, type="decorative"}) do
		entity.destroy()
	end
end

local function removeDecorations(surface, x, y, width, height )
	removeDecorationsArea(surface, {{x, y}, {x + width, y + height}})
end

local function clearDecorations()
	local surface = game.surfaces["nauvis"]
	for chunk in surface.get_chunks() do
		removeDecorations(surface, chunk.x * CHUNK_SIZE, chunk.y * CHUNK_SIZE, CHUNK_SIZE - 1, CHUNK_SIZE - 1)
	end
	
	for _, player in pairs(game.players) do
		player.print("Decorations removed")
	end
end

script.on_event(defines.events.on_chunk_generated, function(event)
	removeDecorationsArea( event.surface, event.area )
end)

script.on_event(defines.events.on_tick, function(event)

	if not global.fullClear then
		clearDecorations()
		global.fullClear = true
	end
	
	script.on_event(defines.events.on_tick, nil)
end)

Re: [0.14.13] Crash related to trains and rails on MP

Posted: Mon Oct 10, 2016 7:43 am
by HanziQ
I couldn't reproduce the problem with the attached save file, do you have a way to reproduce it?

Re: [0.14.13] Crash related to trains and rails on MP

Posted: Mon Oct 10, 2016 10:23 am
by danielgweb
Sorry. I got no way to reproduce it.

I wasn't playing when it occurred. People just told me the server had crashed, so I collected the logs and posted it here.

It's interesting no more crashes happened so far. I think this is a rare crash.