I have just been looking into this. This is a very bizarre problem: it appears to occur as a result of memory corruption of a sort that I find entirely inexplicable. The crash occurs in line 2597 of simworld.h, which is the getter method for sync_steps. This is a read access violation, the problem being that the memory address of "this" (i.e. the karte_t object) is invalid
This is called by line 639 of network_cmd_ingame, which is passed a pointer to "welt" (the karte_t object representing the world) by its caller, network_broadcast_world_command_t::execute, which is in turn passed the pointer to the world by line 10418 of karte_t::process_network_commands(), which simply passes the "this" pointer. For reasons that I do not understand, nothing is available of the call stack above this, so I cannot see the memory address of anything further up in the call stack.
The "this" pointer that is passed is the invalid memory location. However, karte_t::world is a different memory address, which is valid and is the correct memory address for the world.
This suggests some fundamental memory corruption of the sort that cannot be traced by a debugger alone. Unfortunately, the tool that I would normally use in such situations, Dr. Memory, currently itself has a bug that stops it from working at all. I am thus mystified as to how even to begin trying to fix this.