News:

Simutrans Wiki Manual
The official on-line manual for Simutrans. Read and contribute.

Server crash

Started by Vladki, August 12, 2019, 08:40:57 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Vladki

Hello,

was there any update in the pak128.Britain-Ex this weekend? The server crashes with the following debug output:


Reading electricity consumption configuration ...
Reading menu configuration ...
ERROR: create_general_tool():   cannot satisfy request for general_tool[40]!
For help with this error or to file a bug report please see the Simutrans forum:
http://forum.simutrans.com
Warning: create_simple_tool():  deprecated tool [27] requested
Reading object data from Pak128.Britain-Ex/...
Message: ground_desc_t::register_desc():        setting raster width to 1
Message: ground_desc_t::register_desc():        setting raster width to 1
Message: register_desc():       Notice: obj Outside already defined
Message: skinverwaltung_t::register_desc():     Extra object WindowSkin added.
Warning: obj_reader_t::resolve_xrefs(): cannot resolve 'GOOD-bulk'
Warning: obj_reader_t::resolve_xrefs(): cannot resolve 'VHCL-LNWR-8wheel-radial-brake-lav'
Warning: obj_reader_t::resolve_xrefs(): cannot resolve 'VHCL-BR-1665Rear'
Message: warn_missing_objects:  Object MonorailGround not found, feature disabled
Reading menu configuration ...
Warning: tool_t::read_menu():   toolbar[11][5]: replaced way-builder(id=14) with default param=cityroad by cityroad builder(id=36)
Reading private car ownership configuration ...
Midi disabled ...
Message: karte_t::load():       Prepare for loading
Message: karte_t::load():       Time is now: 933
Calculating textures ...done
World destroyed.
Warning: karte_t::load: Fileversion: 120004
Message: nwc_auth_player_t::init_player_lock_server:    new = 32767
Message: nwc_auth_player_t::init_player_lock_server:    new = 32767
Warning: karte_t::load():       loaded savegame from 6/1943, next month=1925185536, ticks=1924626376 (per month=1<<22)
Message: nwc_auth_player_t::init_player_lock_server:    new = 28356
Running world, pause=0, fast forward=0 ...


I think it is related only to pak.britain, becaus server with pak.sweden is running

freddyhayward

bridgewater-brunel has also been not responding since that update. and on my linux machine the client would crash until I deleted the settings xml file.

jamespetts

The Bridgewater-Brunel server appears to be online, but I am not able to attempt to connect to it until I upgrade my computer.

Can anyone upload the saved game from the Stephenson-Seimens server for me to test? I should be most grateful.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

freddyhayward

Quote from: jamespetts on August 13, 2019, 10:01:16 AM
The Bridgewater-Brunel server appears to be online, but I am not able to attempt to connect to it until I upgrade my computer.

Can anyone upload the saved game from the Stephenson-Seimens server for me to test? I should be most grateful.
bridgewater-brunel does appear online, but for at least the past 48 hours it has been not responding on the server menu. Though unlikely, it could be an issue on my end.

Vladki

The last save from stephenson-siemens game is here:
http://list.extended.simutrans.org/debug-saves/autosave-Pak128.Britain-Ex.sve

And although the bridgewater-brunel appears in the list, it is not possible to connect. It does not respond to the query from network dialog - does not send info like map size, number of players, etc.

jamespetts

Thank you for your report.

I have tested with the saved game, but I am afraid that I cannot reproduce the crash. I should be grateful if you could re-test with to-morrow's nightly build, as I have fixed a crash reported in another thread that it is possible is the cause of this issue.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Vladki

I won't be able to test myself, but the server should be updated and started automatically. So if it is online tomorrow, you can consider it fixed.

freddyhayward

Since stephenson-siemens is working again but bridgewater-brunel is not, it's unlikely that the problem can be isolated to pak128.britain-ex. The "last announce" tracker on the server listing seems to indicate it crashing and restarting every two minutes.

freddyhayward

James, I understand you are still waiting on the computer upgrade, but in the meantime are you at least able to view the logs/output for the bridgewater-brunel server?

jamespetts

What I am seeing when I view the logs is a segfault: this suggests an error with the executable. To fix the error, I would need to load the saved game on my computer and find where the segfault occurs. Unfortunately, I am not able to do this until I upgrade my computer.

Would it be of assistance to anyone else trying to fix this if I were to upload the saved game from the server for someone else to debug before I obtain my upgraded computer?
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

freddyhayward

I'd be willing to try, so long as it's not too much trouble to upload the save.

jamespetts

The saved game is here - thank you for the offer of looking into this: that is helpful.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

freddyhayward

I haven't found anything, though I'm sure someone else could by running gdb or valgrind with debug flags (which are beyond my capability). This thread should move to the extended development board as it isn't related to the pakset.

jamespetts

Thank you for working on this: that is helpful. I have moved the topic as suggested.

I will have to look into this in detail when I have upgraded my computer to something that can actually run the server game.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

freddyhayward

Could you or anyone else compile and upload a linux binary with debugging symbols enabled? I could then test the save with gdb.

Mariculous

There it is!
http://dome.xileks.de/simutrans/simutrans-extended-debug

Compiled with current head and the follwing config:

BACKEND = sdl
COLOUR_DEPTH = 16
OSTYPE = linux
DEBUG = 3    # Level 1-3, higher number means more debug-friendly but slower, see Makefile
MSG_LEVEL = 4 # Level 1-4, more runtime debug messages (without only warnings and errors)
OPTIMISE = 1 # Add umpteen optimisation flags
WITH_REVISION = 1 # adds the commit number (truncated) from Github; important for network games
MULTI_THREAD = 1 # Enable multithreading
VERBOSE = 1

FLAGS = -DUSE_C -fno-delete-null-pointer-checks -fno-strict-aliasing -std=c++11


freddyhayward

Well here's the backtrace for all interested.

(gdb) bt full
#0  0x000000000040e0aa in grund_t::ist_bruecke (this=0x0) at bauer/../boden/grund.h:322
No locals.
#1  0x00000000006eec89 in convoi_t::get_route_infos (this=0xc2ffdfc0) at simconvoi.cc:1200
        tile = {x = 6437, y = 1474, z = 7 '\a', static invalid = {x = -1, y = -1, z = -1 '\377', static invalid = <same as static member of an already seen type>}}
        gr = 0x0
        j = 2284
        current_info = @0x1908e0188: {speed_limit = 12160, steps_from_start = 435467, direction = 9 '\t'}
        this_info = @0x1908e0194: {speed_limit = 12160, steps_from_start = 435648, direction = 9 '\t'}
        this_tile = {x = 6437, y = 1475, z = 7 '\a', static invalid = {x = -1, y = -1, z = -1 '\377', static invalid = <same as static member of an already seen type>}}
        this_weg = 0x0
        next_tile = {x = 6437, y = 1474, z = 7 '\a', static invalid = {x = -1, y = -1, z = -1 '\377', static invalid = <same as static member of an already seen type>}}
        this_gr = 0x5a6afd40
        bridge_tiles_ahead = 0
        route_count = 2777
        current_tile = {x = 6438, y = 1475, z = 8 '\b', static invalid = {x = -1, y = -1, z = -1 '\377', static invalid = <same as static member of an already seen type>}}
        current_weg = 0x0
        touchdown_index = 2704
        bridge_tiles = 1
        front = @0xc3004c50: {<vehicle_base_t> = {<obj_t> = {_vptr.obj_t = 0x898b08 <vtable for air_vehicle_t+16>, static show_owner = false, pos = {x = 7676, y = 2470, z = 3 '\003', static invalid = {x = -1,
                  y = -1, z = -1 '\377', static invalid = <same as static member of an already seen type>}}, xoff = -16 '\360', yoff = 8 '\b', owner_n = 7 '\a', flags = 5 '\005',
              static welt = {<No data fields>}, type = obj_t::air_vehicle}, gr = 0x0, weg = 0x0, static dxdy = "\376\001\376\377\374\000\000\002\002\377\002\001\004\000\000\376",
            static diagonal_vehicle_steps_per_tile = 181 '\265', static old_diagonal_vehicle_steps_per_tile = 181 '\265', static diagonal_multiplier = 724, static overtaking_base_offsets = {
              "\364", <incomplete sequence \372>, <incomplete sequence \372>, <incomplete sequence \372>, <incomplete sequence \364>, "\f\006", "\364\006", "\000\006", "\022"}, direction = 1 '\001',
            use_calc_height = 0 '\000', drives_on_left = 0 '\000', disp_lane = 2 '\002', dx = 2 '\002', dy = -1 '\377', steps = 5 '\005', steps_next = 255 '\377', pos_next = {x = 7676, y = 2469, z = 3 '\003',
              static invalid = {x = -1, y = -1, z = -1 '\377', static invalid = <same as static member of an already seen type>}}, zoff_start = 0 '\000', zoff_end = 0 '\000', image = 8948, current_livery = {
              static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xc3004c98 "default"},
              _M_string_length = 7, {_M_local_buf = "default\000\000\000\000\000\000\000\000", _M_allocated_capacity = 32770348699510116}}, next_lane = 0 '\000',
            class_reassignments = 0xc2ffdf20 ""}, <test_driver_t> = {_vptr.test_driver_t = 0x898c70 <vtable for air_vehicle_t+376>}, purchase_time = 23618, sum_weight = 27750, pre_corner_direction = {data = {
              360, 45, 90, 45, 360, 0 <repeats 187 times>}, size = 5 '\005', head = 0 '\000', tail = 4 '\004'}, direction_steps = -23134, hill_up = 0 '\000', hill_down = 0 '\000', is_overweight = false,
          reversed = false, diagonal_costs = 0, base_costs = 0, static sound_ticks = 0, speed_limit = 768, previous_direction = 1 '\001', target_halt = {static data = 0xb9a12020, static next = 8193,
            static size = 16384, entry = 0}, current_friction = 4, route_index = 6, total_freight = 5, fracht = 0xc3004ec8, desc = 0xb1916e0, cnv = 0xc2ffdfc0, pos_prev = {x = 0, y = 0, z = 0 '\000',
            static invalid = {x = -1, y = -1, z = -1 '\377', static invalid = <same as static member of an already seen type>}}, number_of_classes = 5 '\005', leading = true, last = true, smoke = true,
          check_for_finish = false, has_driven = true, hop_count = 0 '\000', last_stop_pos = {x = 7674, y = 2473, z = 3 '\003', static invalid = {x = -1, y = -1, z = -1 '\377',
              static invalid = <same as static member of an already seen type>}}}
        current_route_index = 6
        corner_data = {data = {360, 45, 90, 45, 360, 360, 360, 360, 360, 315, 22640, -7901, 20, 90, 0, 0, 0, 90, -7423, -21192, 11, 90, 0, -8916, 15, 90, 0, 0, 0, 90 <repeats 14 times>, 180, 270, 270, 23592,
            -29361, 8, 270, -7866, -7558, 5, 180, -26624, -6518, 21, 224, 8192, -6518, 21, 270, -14567, -2959, 3, 270, 270, 225, 16, 135, 3459, -10305, 9, 134, 0, -21376, 16, 181, 0, -21376, 16, 134, 0, -30036,
            18, 134, 135, 90 <repeats 15 times>, 13875, 0, -6096, 2660, 32764, 0, -5816, 2660, 32764, 0, -6064, 2660, 32764, 0, 13695, 129, 0, 0, -6096, 2660, 32764, 0, -5904, 2660, 32764, 0, -6008, 2660, 32764,
            0, -5816, 2660, 32764, 0, -16136, -6226, 3, 0, 0, 5420, 24700, 29655, -6000, 2660, 13875, 0, -8116, -15617, 0, 0, -6000, 2660, 32764, 0, 508, 70, 0, 0, -5928, 2660, 32764, 0, -5904, 2660, 32764, 0,
            -4983, -30519, 13875, 0, -5816, 2660, 32764, 0, -5952, 2660, 32764, 0, -5800, 2660, 32764, 0, -5920, 2660, 32764, 0, 13695, 129, 0, 0}, size = 10 '\n', head = 0 '\000', tail = 9 '\t'}
        waytype = air_wt
        takeoff_index = 10
        i = 2283
        start_info = @0x1908d9690: {speed_limit = 320, steps_from_start = 0, direction = 1 '\001'}
#2  0x00000000006ee276 in convoi_t::calc_acceleration (this=0xc2ffdfc0, delta_t=39) at simconvoi.cc:1044
        front = @0xc3004c50: {<vehicle_base_t> = {<obj_t> = {_vptr.obj_t = 0x898b08 <vtable for air_vehicle_t+16>, static show_owner = false, pos = {x = 7676, y = 2470, z = 3 '\003', static invalid = {x = -1,
                  y = -1, z = -1 '\377', static invalid = <same as static member of an already seen type>}}, xoff = -16 '\360', yoff = 8 '\b', owner_n = 7 '\a', flags = 5 '\005',
              static welt = {<No data fields>}, type = obj_t::air_vehicle}, gr = 0x0, weg = 0x0, static dxdy = "\376\001\376\377\374\000\000\002\002\377\002\001\004\000\000\376",
            static diagonal_vehicle_steps_per_tile = 181 '\265', static old_diagonal_vehicle_steps_per_tile = 181 '\265', static diagonal_multiplier = 724, static overtaking_base_offsets = {
              "\364", <incomplete sequence \372>, <incomplete sequence \372>, <incomplete sequence \372>, <incomplete sequence \364>, "\f\006", "\364\006", "\000\006", "\022"}, direction = 1 '\001',
            use_calc_height = 0 '\000', drives_on_left = 0 '\000', disp_lane = 2 '\002', dx = 2 '\002', dy = -1 '\377', steps = 5 '\005', steps_next = 255 '\377', pos_next = {x = 7676, y = 2469, z = 3 '\003',
              static invalid = {x = -1, y = -1, z = -1 '\377', static invalid = <same as static member of an already seen type>}}, zoff_start = 0 '\000', zoff_end = 0 '\000', image = 8948, current_livery = {
              static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xc3004c98 "default"},
              _M_string_length = 7, {_M_local_buf = "default\000\000\000\000\000\000\000\000", _M_allocated_capacity = 32770348699510116}}, next_lane = 0 '\000',
--Type <RET> for more, q to quit, c to continue without paging--
            class_reassignments = 0xc2ffdf20 ""}, <test_driver_t> = {_vptr.test_driver_t = 0x898c70 <vtable for air_vehicle_t+376>}, purchase_time = 23618, sum_weight = 27750, pre_corner_direction = {data = {
              360, 45, 90, 45, 360, 0 <repeats 187 times>}, size = 5 '\005', head = 0 '\000', tail = 4 '\004'}, direction_steps = -23134, hill_up = 0 '\000', hill_down = 0 '\000', is_overweight = false,
          reversed = false, diagonal_costs = 0, base_costs = 0, static sound_ticks = 0, speed_limit = 768, previous_direction = 1 '\001', target_halt = {static data = 0xb9a12020, static next = 8193,
            static size = 16384, entry = 0}, current_friction = 4, route_index = 6, total_freight = 5, fracht = 0xc3004ec8, desc = 0xb1916e0, cnv = 0xc2ffdfc0, pos_prev = {x = 0, y = 0, z = 0 '\000',
            static invalid = {x = -1, y = -1, z = -1 '\377', static invalid = <same as static member of an already seen type>}}, number_of_classes = 5 '\005', leading = true, last = true, smoke = true,
          check_for_finish = false, has_driven = true, hop_count = 0 '\000', last_stop_pos = {x = 7674, y = 2473, z = 3 '\003', static invalid = {x = -1, y = -1, z = -1 '\377',
              static invalid = <same as static member of an already seen type>}}}
        route_count = 2777
        current_route_index = 6
        next_speed_limit = 0
        next_stop_index = 2777
        steps_til_limit = 1888595
        steps_til_brake = 1888580
        brake_steps = 16
        route_infos_count = 8282252
        steps_left_on_current_tile = 174385568
#3  0x00000000006ef153 in convoi_t::sync_step (this=0xc2ffdfc0, delta_t=39) at simconvoi.cc:1333
        sp_hat = 12288
#4  0x00000000007b0512 in karte_t::sync_list_t::sync_step (this=0x254eab0, delta_t=39) at simworld.cc:4660
        ss = 0xc2ffdfc0
        i = 249537
#5  0x00000000007b0765 in karte_t::sync_step (this=0x2549c20, delta_t=39, do_sync_step=true, display=true) at simworld.cc:4731
No locals.
#6  0x000000000075111a in interrupt_check (caller_info=0x894b95 <error: Cannot access memory at address 0x894b95>) at simintr.cc:111
        now = 100893
        diff = 39
        last_ms = 2005936956
#7  0x00000000007c607e in karte_t::interactive (this=0x2549c20, quit_month=2147483647) at simworld.cc:10441
        wait_time = 171
        time = 100883
        hashes_ok = {data = 0x0, size = 0, count = 0}
        ms_difference = 0
#8  0x000000000075c62f in simu_main (argc=1, argv=0x7ffc0a651418) at simmain.cc:1382
        pause_after_load = false
        welt = 0x2549c20
        view = 0x2554a70
        eventmanager = 0x2554980
        resolutions = <error reading variable resolutions (Cannot access memory at address 0x8849d0)>
        disp_width = 704
        disp_height = 560
        fullscreen = 0
        quit_month = 2147483647
        path_sep = 0x88533e <error: Cannot access memory at address 0x88533e>
        pak_diagonal_multiplier = 724
        pak_tile_height = 8 '\b'
        pak_height_conversion_factor = 2 '\002'
        found_settings = false
        found_simuconf = true
        multiuser = true
        simuconf = {file = 0x0}
        path_to_simuconf = "config/simuconf.tab\000\374\177\000"
        version = 0x885410 <error: Cannot access memory at address 0x885410>
        cli_syslog_enabled = false
        cli_syslog_tag = 0x0
--Type <RET> for more, q to quit, c to continue without paging--
        file = {mode = 4, saving = false, buffered = false, curr_buff = 4209674, buf_pos = {0, 462472320}, buf_len = {32653, 174390848}, ls_buf = {0x7ffc0a64fe50 "\210\274\f\033\215\177",
            0x7f8d1b8eb7fb <error: Cannot access memory at address 0x7f8d1b8eb7fb>}, version = 0, extended_version = 0, extended_revision = 0, ident = 32653,
          pak_extension = "\001", '\000' <repeats 15 times>, "\001\000\000\000\000\000\000\000 \301\220\033\215\177\000\000\350\376d\n\374\177\000\000\240\262)\033\215\177\000\000 \301\220\033\215\177\000\000\260\002e\n\001\000\000\000\200Đ\033\215\177\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\340\376d\n\374\177\000\000\377\377\377\377\000\000\000\000b\200\216\033\215\177\000\000\210\274\f\033\215\177\000\000\360\244)\033\215\177\000\000\060J\002\000\000\000\000\000\060J\002", '\000' <repeats 13 times>, "\001\000\000\000\000\000\000\000\000P\002\000\000\000\000\000\000\360\026\000\000\000\000\000\375\346\026\000\000\000\000\000\320S\266\000\000\000\000\000\020\023e\n\374\177\000\000p"..., filename = {static npos = 18446744073709551615,
            _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7ffc0a64fef0 ""}, _M_string_length = 0, {
              _M_local_buf = "\000\002e\n\374\177\000\000ni\217\033\215\177\000", _M_allocated_capacity = 140720482877952}}, fd = 0x1df4b10, static save_mode = loadsave_t::zipped,
          static autosave_mode = loadsave_t::zipped}
        xml_filename = "settings-extended-debug.xml\000\000\000\000"
        xml_settings_found = false
        obj_conf = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
            _M_p = 0x1ea5e70 "/home/freddy/simutrans/simuconf.tab"}, _M_string_length = 35, {_M_local_buf = ".\000\000\000\000\000\000\000\v\000\000\000\000\000\000", _M_allocated_capacity = 46}}
        themes_ok = true
        parameter = {0, 0}
        new_world = false
        loadgame = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7ffc0a64fd40 ""},
          _M_string_length = 0, {_M_local_buf = "\000emp-load.sve\000\000", _M_allocated_capacity = 7020949286509438208}}
#9  0x000000000076f6f0 in sysmain (argc=1, argv=0x7ffc0a651418) at simsys.cc:825
        buffer2 = 0x0
        buffer = "/home/freddy/Downloads/Simutrans-Extended-Complete/simutrans/simutrans-extended-debug\000\000\000\035ʎ\033\215\177\000\000\340\r\031\000\000\000\000\000`\252)\033\215\177\000\000/\256)\033\215\177\000\000\024\000\000\000\000\000\000\000\364\334\\\033\215\177\000\000\004\000\000\000\000\000\000\000Q\345td\006", '\000' <repeats 11 times>, " \005e\n\374\177\000\000\023ǎ\033\215\177\000\000\377\375\377o\000\000\000\000 \005e\n\374\177\000\000\200\252)\033\215\177\000\000)}"...
        length = 85
#10 0x000000000083abb3 in main (argc=1, argv=0x7ffc0a651418) at simsys_s.cc:729
No locals.

freddyhayward

I've managed to identify two places mentioned in the backtrace using an older save:
First is Halford airport ~(7670,2470). Here, Ves Transportation's planes were unable to land for quite some time due to a short runway. I remember that not long before the crash, I extended the runway using another player and planes were beginning to land.
Second is Trowerpool ~(6440,1470), served by Great Highland Railway. I could be mistaken, but I think I remember an airport being built here later.

Mariculous

#18
This morning I have committed a debug build, this evening I can commit my own stack trace from my servers savegame.
However, the stack trace seems to be quite different from what freddyhayward had posted this morning.

savegame can be found here: https://dome.xileks.de/simutrans/save/network-debug.sve
Also, stdout and stderr can be found there:
https://dome.xileks.de/simutrans/log/network-debug.log
https://dome.xileks.de/simutrans/log/network-debug.err

Be careful about the stderr, as it contains the content of running in -debug 5 for 8 minutes, which in this case is more than 300k lines of log...

(gdb) bt
#0  0x0000000000722d89 in fabrik_t::smoke (this=0x37ef4260) at simfab.cc:1706
#1  0x00000000007249fd in fabrik_t::step (this=0x37ef4260, delta_t=2925) at simfab.cc:2244
#2  0x00000000007b421d in karte_t::step (this=0x23e65e30) at simworld.cc:5648
#3  0x00000000007c67c1 in karte_t::interactive (this=0x23e65e30, quit_month=2147483647) at simworld.cc:10531
#4  0x000000000075c62f in simu_main (argc=8, argv=0x7fffffffdb48) at simmain.cc:1382
#5  0x000000000076f6f0 in sysmain (argc=8, argv=0x7fffffffdb48) at simsys.cc:825
#6  0x000000000083abb3 in main (argc=8, argv=0x7fffffffdb48) at simsys_s.cc:729


(gdb) bt full
#0  0x0000000000722d89 in fabrik_t::smoke (this=0x37ef4260) at simfab.cc:1706
        rot = 3 '\003'
        offsetx = 0 '\000'
        smoke = 0x10100000071c781
        size = {x = 1, y = 1, static invalid = {x = -1, y = -1, static invalid = <same as static member of an already seen type>, static north = {x = 0, y = -1, static invalid = <same as static member of an already seen type>,
              static north = <same as static member of an already seen type>, static south = {x = 0, y = 1, static invalid = <same as static member of an already seen type>, static north = <same as static member of an already seen type>,
                static south = <same as static member of an already seen type>, static east = {x = 1, y = 0, static invalid = <same as static member of an already seen type>, static north = <same as static member of an already seen type>,
                  static south = <same as static member of an already seen type>, static east = <same as static member of an already seen type>, static west = {x = -1, y = 0, static invalid = <same as static member of an already seen type>,
                    static north = <same as static member of an already seen type>, static south = <same as static member of an already seen type>, static east = <same as static member of an already seen type>,
                    static west = <same as static member of an already seen type>, static nsew = {{x = 0, y = -1, static invalid = <same as static member of an already seen type>, static north = <same as static member of an already seen type>,
                        static south = <same as static member of an already seen type>, static east = <same as static member of an already seen type>, static west = <same as static member of an already seen type>,
                        static nsew = <same as static member of an already seen type>, static neighbours = <same as static member of an already seen type>, static second_neighbours = <same as static member of an already seen type>,
                        static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>}, {x = 0, y = 1, static invalid = <same as static member of an already seen type>,
                        static north = <same as static member of an already seen type>, static south = <same as static member of an already seen type>, static east = <same as static member of an already seen type>,
                        static west = <same as static member of an already seen type>, static nsew = <same as static member of an already seen type>, static neighbours = <same as static member of an already seen type>,
                        static second_neighbours = <same as static member of an already seen type>, static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>}, {x = 1, y = 0,
                        static invalid = <same as static member of an already seen type>, static north = <same as static member of an already seen type>, static south = <same as static member of an already seen type>,
                        static east = <same as static member of an already seen type>, static west = <same as static member of an already seen type>, static nsew = <same as static member of an already seen type>,
                        static neighbours = <same as static member of an already seen type>, static second_neighbours = <same as static member of an already seen type>, static from_ribi = <same as static member of an already seen type>,
                        static from_hang = <same as static member of an already seen type>}, {x = -1, y = 0, static invalid = <same as static member of an already seen type>, static north = <same as static member of an already seen type>,
                        static south = <same as static member of an already seen type>, static east = <same as static member of an already seen type>, static west = <same as static member of an already seen type>,
                        static nsew = <same as static member of an already seen type>, static neighbours = <same as static member of an already seen type>, static second_neighbours = <same as static member of an already seen type>,
                        static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>}}, static neighbours = <same as static member of an already seen type>,
                    static second_neighbours = <same as static member of an already seen type>, static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>},
                  static nsew = <same as static member of an already seen type>, static neighbours = <same as static member of an already seen type>, static second_neighbours = <same as static member of an already seen type>,
                  static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>}, static west = <same as static member of an already seen type>,
                static nsew = <same as static member of an already seen type>, static neighbours = <same as static member of an already seen type>, static second_neighbours = <same as static member of an already seen type>,
                static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>}, static east = <same as static member of an already seen type>,
              static west = <same as static member of an already seen type>, static nsew = <same as static member of an already seen type>, static neighbours = <same as static member of an already seen type>,
              static second_neighbours = <same as static member of an already seen type>, static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>},
            static south = <same as static member of an already seen type>, static east = <same as static member of an already seen type>, static west = <same as static member of an already seen type>, static nsew = <same as static member of an already seen type>,
            static neighbours = <same as static member of an already seen type>, static second_neighbours = <same as static member of an already seen type>, static from_ribi = <same as static member of an already seen type>,
            static from_hang = <same as static member of an already seen type>}, static north = <same as static member of an already seen type>, static south = <same as static member of an already seen type>,
          static east = <same as static member of an already seen type>, static west = <same as static member of an already seen type>, static nsew = <same as static member of an already seen type>, static neighbours = <same as static member of an already seen type>,
          static second_neighbours = <same as static member of an already seen type>, static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>}
        ro = {x = 3, y = -2, static invalid = {x = -1, y = -1, static invalid = <same as static member of an already seen type>, static north = {x = 0, y = -1, static invalid = <same as static member of an already seen type>,
              static north = <same as static member of an already seen type>, static south = {x = 0, y = 1, static invalid = <same as static member of an already seen type>, static north = <same as static member of an already seen type>,
                static south = <same as static member of an already seen type>, static east = {x = 1, y = 0, static invalid = <same as static member of an already seen type>, static north = <same as static member of an already seen type>,
                  static south = <same as static member of an already seen type>, static east = <same as static member of an already seen type>, static west = {x = -1, y = 0, static invalid = <same as static member of an already seen type>,
                    static north = <same as static member of an already seen type>, static south = <same as static member of an already seen type>, static east = <same as static member of an already seen type>,
                    static west = <same as static member of an already seen type>, static nsew = {{x = 0, y = -1, static invalid = <same as static member of an already seen type>, static north = <same as static member of an already seen type>,
                        static south = <same as static member of an already seen type>, static east = <same as static member of an already seen type>, static west = <same as static member of an already seen type>,
                        static nsew = <same as static member of an already seen type>, static neighbours = <same as static member of an already seen type>, static second_neighbours = <same as static member of an already seen type>,
                        static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>}, {x = 0, y = 1, static invalid = <same as static member of an already seen type>,
                        static north = <same as static member of an already seen type>, static south = <same as static member of an already seen type>, static east = <same as static member of an already seen type>,
                        static west = <same as static member of an already seen type>, static nsew = <same as static member of an already seen type>, static neighbours = <same as static member of an already seen type>,
                        static second_neighbours = <same as static member of an already seen type>, static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>}, {x = 1, y = 0,
                        static invalid = <same as static member of an already seen type>, static north = <same as static member of an already seen type>, static south = <same as static member of an already seen type>,
                        static east = <same as static member of an already seen type>, static west = <same as static member of an already seen type>, static nsew = <same as static member of an already seen type>,
                        static neighbours = <same as static member of an already seen type>, static second_neighbours = <same as static member of an already seen type>, static from_ribi = <same as static member of an already seen type>,
                        static from_hang = <same as static member of an already seen type>}, {x = -1, y = 0, static invalid = <same as static member of an already seen type>, static north = <same as static member of an already seen type>,
                        static south = <same as static member of an already seen type>, static east = <same as static member of an already seen type>, static west = <same as static member of an already seen type>,
                        static nsew = <same as static member of an already seen type>, static neighbours = <same as static member of an already seen type>, static second_neighbours = <same as static member of an already seen type>,
                        static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>}}, static neighbours = <same as static member of an already seen type>,
                    static second_neighbours = <same as static member of an already seen type>, static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>},
                  static nsew = <same as static member of an already seen type>, static neighbours = <same as static member of an already seen type>, static second_neighbours = <same as static member of an already seen type>,
                  static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>}, static west = <same as static member of an already seen type>,
                static nsew = <same as static member of an already seen type>, static neighbours = <same as static member of an already seen type>, static second_neighbours = <same as static member of an already seen type>,
                static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>}, static east = <same as static member of an already seen type>,
              static west = <same as static member of an already seen type>, static nsew = <same as static member of an already seen type>, static neighbours = <same as static member of an already seen type>,
              static second_neighbours = <same as static member of an already seen type>, static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>},
            static south = <same as static member of an already seen type>, static east = <same as static member of an already seen type>, static west = <same as static member of an already seen type>, static nsew = <same as static member of an already seen type>,
--Type <RET> for more, q to quit, c to continue without paging--c
            static neighbours = <same as static member of an already seen type>, static second_neighbours = <same as static member of an already seen type>, static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>}, static north = <same as static member of an already seen type>, static south = <same as static member of an already seen type>, static east = <same as static member of an already seen type>, static west = <same as static member of an already seen type>, static nsew = <same as static member of an already seen type>, static neighbours = <same as static member of an already seen type>, static second_neighbours = <same as static member of an already seen type>, static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>}
        gr = 0x0
        offsety = -6 '\372'
        rada = 0xac4fb10
#1  0x00000000007249fd in fabrik_t::step (this=0x37ef4260, delta_t=2925) at simfab.cc:2244
        min_change = 1
        periods = 4
        slot_interval = 16384
#2  0x00000000007b421d in karte_t::step (this=0x23e65e30) at simworld.cc:5648
        f = 0x37ef4260
        once1__5647 = false
        iter__5647 = 0x37e4c1f8
        end__5647 = 0x37e4c200
        break__5647 = true
        container___5647 = @0x23e66df0: {data = 0x37e4b8e0, size = 512, count = 292}
        once0__5647 = false
        time = 506250
        delta_t = 2925
        check_city_routes = false
        season_change = false
        snowline_change = false
        dt = 2925
#3  0x00000000007c67c1 in karte_t::interactive (this=0x23e65e30, quit_month=2147483647) at simworld.cc:10531
        time = 506250
        hashes_ok = {data = 0x0, size = 0, count = 0}
        ms_difference = 0
#4  0x000000000075c62f in simu_main (argc=8, argv=0x7fffffffdb48) at simmain.cc:1382
        pause_after_load = false
        welt = 0x23e65e30
        view = 0x130294c0
        eventmanager = 0x130a5f90
        resolutions = {{640, 480}, {800, 600}, {1024, 768}, {1280, 1024}, {704, 560}}
        disp_width = 704
        disp_height = 560
        fullscreen = 0
        quit_month = 2147483647
        path_sep = 0x88533e "/"
        pak_diagonal_multiplier = 724
        pak_tile_height = 8 '\b'
        pak_height_conversion_factor = 2 '\002'
        found_settings = true
        found_simuconf = true
        multiuser = true
        simuconf = {file = 0x0}
        path_to_simuconf = "config/simuconf.tab\000\000\000\000"
        version = 0x885410 "Simutrans version 120.2.1 Extended Nightly development build 14.5 from Aug 25 2019 #1f9227c\n"
        cli_syslog_enabled = false
        cli_syslog_tag = 0x0
        file = {mode = 6, saving = false, buffered = false, curr_buff = 4158526191, buf_pos = {32767, 8}, buf_len = {0, 4160457504}, ls_buf = {0x1 <error: Cannot access memory at address 0x1>, 0x0}, version = 120004, extended_version = 14, extended_revision = 12, ident = 32767, pak_extension = "settings only\000\000\000\335_\024\364\377\177\000\000\000\000\000\000\000\000\000\000h\344\377\367\377\177\000\000p\305\377\377\377\177\000\000`\305\377\377\377\177\000\000>$\336\367\001\000\000\000\020\341\377\367\377\177\000\000\n<@\000\000\000\000\000\377\377\377\377\000\000\000\000\307\324\335\367\377\177\000\000\060B\206\366\377\177\000\000\340$\374\367\377\177\000\000衧\362\377\177\000\000衧\362\377\177\000\000\350\301(\000\000\000\000\000\003\000\000\000\377\177\000\000p\305\377\377\377\177\000\000\003\000\000\000\377\177\000\000\000\000\000\000\000\000\000\000P\307\377\377\377\177\000\000\006\000\000\000\000\000\000\000\002{\025\000\000\000\000\000\340\340\377\367\377\177\000\000\320S\266\000\000\000\000\000"..., filename = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xd05200 "settings-extended-debug.xml"}, _M_string_length = 27, {_M_local_buf = "\036\000\000\000\000\000\000\000\060B\206\366\377\177\000", _M_allocated_capacity = 30}}, fd = 0xd04d40, static save_mode = loadsave_t::zipped, static autosave_mode = loadsave_t::zipped}
        xml_filename = "settings-extended-debug.xml\000\000\000\000"
        xml_settings_found = true
        obj_conf = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xd98e10 "/home/dome/simutrans/simuconf.tab"}, _M_string_length = 33, {_M_local_buf = "*\000\000\000\000\000\000\000\066\340\343\371\000\000\000", _M_allocated_capacity = 42}}
        themes_ok = true
        parameter = {0, 0}
        new_world = false
        loadgame = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x77f2910 ""}, _M_string_length = 0, {_M_local_buf = "\036\000\000\000\000\000\000\000\230\304\377\377\377\177\000", _M_allocated_capacity = 30}}
#5  0x000000000076f6f0 in sysmain (argc=8, argv=0x7fffffffdb48) at simsys.cc:825
        buffer2 = 0x0
        buffer = "/home/dome/games/simutrans-ex-src/simutrans-extended/build/default/simutrans-extended\000\000\000p\316\377\377\377\177\000\000\310\352~\362\377\177\000\000\000\000\000\000\000\000\000\000?\356~\362\377\177\000\000\322D\336\367\377\177\000\000\000\000\000\000\000\000\000\000`\021\337\367\377\177\000\000\000\000\000\000\000\000\000\000\310\327\377\377\377\177\000\000\300\327\377\377\377\177\000\000\277\327\377\377\377\177\000\000\240D\336\367\377\177\000\000\320\327\377\377\377\177\000\000\000\000\000\000\000\000\000\000"...
        length = 85
#6  0x000000000083abb3 in main (argc=8, argv=0x7fffffffdb48) at simsys_s.cc:729
No locals.


Mariculous

#19
After my save crashed the games after ~5-10 minutes of playing, I have loaded an old save from the afternoon which worked well until this evening.
Now I can commit another trace which seems to be the same except for memory adresses for sure.
What kind of confuses me is that the sigsev in this case seems to happen in a completeely different function than it happened at the stephenson-siemens save, so maybe this is a different bug?

I just loaded stephenson-siemens game running simutrans under gdb to confirm this produces the same trace as is did for freddyhayward. But yet it did not crash for me after 5 minutes in fast forward.

However, maybe this should be spit to a different bugreport as it seems to be a different bug to me.

Thread 1 "simutrans-exten" received signal SIGSEGV, Segmentation fault.
0x0000000000722d89 in fabrik_t::smoke (this=0x38380f40) at simfab.cc:1706
1706                    wolke_t *smoke =  new wolke_t(gr->get_pos(), offsetx, offsety, rada->get_images() );

(gdb) bt full
#0  0x0000000000722d89 in fabrik_t::smoke (this=0x38380f40) at simfab.cc:1706
        rot = 3 '\003'
        offsetx = 0 '\000'
        smoke = 0x10100000071c781
        size = {x = 1, y = 1, static invalid = {x = -1, y = -1, static invalid = <same as static member of an already seen type>, static north = {x = 0, y = -1, static invalid = <same as static member of an already seen type>,
              static north = <same as static member of an already seen type>, static south = {x = 0, y = 1, static invalid = <same as static member of an already seen type>, static north = <same as static member of an already seen type>,
                static south = <same as static member of an already seen type>, static east = {x = 1, y = 0, static invalid = <same as static member of an already seen type>, static north = <same as static member of an already seen type>,
                  static south = <same as static member of an already seen type>, static east = <same as static member of an already seen type>, static west = {x = -1, y = 0, static invalid = <same as static member of an already seen type>,
                    static north = <same as static member of an already seen type>, static south = <same as static member of an already seen type>, static east = <same as static member of an already seen type>,
                    static west = <same as static member of an already seen type>, static nsew = {{x = 0, y = -1, static invalid = <same as static member of an already seen type>, static north = <same as static member of an already seen type>,
                        static south = <same as static member of an already seen type>, static east = <same as static member of an already seen type>, static west = <same as static member of an already seen type>,
                        static nsew = <same as static member of an already seen type>, static neighbours = <same as static member of an already seen type>, static second_neighbours = <same as static member of an already seen type>,
                        static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>}, {x = 0, y = 1, static invalid = <same as static member of an already seen type>,
                        static north = <same as static member of an already seen type>, static south = <same as static member of an already seen type>, static east = <same as static member of an already seen type>,
                        static west = <same as static member of an already seen type>, static nsew = <same as static member of an already seen type>, static neighbours = <same as static member of an already seen type>,
                        static second_neighbours = <same as static member of an already seen type>, static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>}, {x = 1, y = 0,
                        static invalid = <same as static member of an already seen type>, static north = <same as static member of an already seen type>, static south = <same as static member of an already seen type>,
                        static east = <same as static member of an already seen type>, static west = <same as static member of an already seen type>, static nsew = <same as static member of an already seen type>,
                        static neighbours = <same as static member of an already seen type>, static second_neighbours = <same as static member of an already seen type>, static from_ribi = <same as static member of an already seen type>,
                        static from_hang = <same as static member of an already seen type>}, {x = -1, y = 0, static invalid = <same as static member of an already seen type>, static north = <same as static member of an already seen type>,
                        static south = <same as static member of an already seen type>, static east = <same as static member of an already seen type>, static west = <same as static member of an already seen type>,
                        static nsew = <same as static member of an already seen type>, static neighbours = <same as static member of an already seen type>, static second_neighbours = <same as static member of an already seen type>,
                        static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>}}, static neighbours = <same as static member of an already seen type>,
                    static second_neighbours = <same as static member of an already seen type>, static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>},
                  static nsew = <same as static member of an already seen type>, static neighbours = <same as static member of an already seen type>, static second_neighbours = <same as static member of an already seen type>,
                  static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>}, static west = <same as static member of an already seen type>,
                static nsew = <same as static member of an already seen type>, static neighbours = <same as static member of an already seen type>, static second_neighbours = <same as static member of an already seen type>,
                static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>}, static east = <same as static member of an already seen type>,
              static west = <same as static member of an already seen type>, static nsew = <same as static member of an already seen type>, static neighbours = <same as static member of an already seen type>,
              static second_neighbours = <same as static member of an already seen type>, static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>},
            static south = <same as static member of an already seen type>, static east = <same as static member of an already seen type>, static west = <same as static member of an already seen type>, static nsew = <same as static member of an already seen type>,
            static neighbours = <same as static member of an already seen type>, static second_neighbours = <same as static member of an already seen type>, static from_ribi = <same as static member of an already seen type>,
            static from_hang = <same as static member of an already seen type>}, static north = <same as static member of an already seen type>, static south = <same as static member of an already seen type>,
          static east = <same as static member of an already seen type>, static west = <same as static member of an already seen type>, static nsew = <same as static member of an already seen type>, static neighbours = <same as static member of an already seen type>,
          static second_neighbours = <same as static member of an already seen type>, static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>}
        ro = {x = 3, y = -2, static invalid = {x = -1, y = -1, static invalid = <same as static member of an already seen type>, static north = {x = 0, y = -1, static invalid = <same as static member of an already seen type>,
              static north = <same as static member of an already seen type>, static south = {x = 0, y = 1, static invalid = <same as static member of an already seen type>, static north = <same as static member of an already seen type>,
                static south = <same as static member of an already seen type>, static east = {x = 1, y = 0, static invalid = <same as static member of an already seen type>, static north = <same as static member of an already seen type>,
                  static south = <same as static member of an already seen type>, static east = <same as static member of an already seen type>, static west = {x = -1, y = 0, static invalid = <same as static member of an already seen type>,
                    static north = <same as static member of an already seen type>, static south = <same as static member of an already seen type>, static east = <same as static member of an already seen type>,
                    static west = <same as static member of an already seen type>, static nsew = {{x = 0, y = -1, static invalid = <same as static member of an already seen type>, static north = <same as static member of an already seen type>,
                        static south = <same as static member of an already seen type>, static east = <same as static member of an already seen type>, static west = <same as static member of an already seen type>,
                        static nsew = <same as static member of an already seen type>, static neighbours = <same as static member of an already seen type>, static second_neighbours = <same as static member of an already seen type>,
                        static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>}, {x = 0, y = 1, static invalid = <same as static member of an already seen type>,
                        static north = <same as static member of an already seen type>, static south = <same as static member of an already seen type>, static east = <same as static member of an already seen type>,
                        static west = <same as static member of an already seen type>, static nsew = <same as static member of an already seen type>, static neighbours = <same as static member of an already seen type>,
                        static second_neighbours = <same as static member of an already seen type>, static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>}, {x = 1, y = 0,
                        static invalid = <same as static member of an already seen type>, static north = <same as static member of an already seen type>, static south = <same as static member of an already seen type>,
                        static east = <same as static member of an already seen type>, static west = <same as static member of an already seen type>, static nsew = <same as static member of an already seen type>,
                        static neighbours = <same as static member of an already seen type>, static second_neighbours = <same as static member of an already seen type>, static from_ribi = <same as static member of an already seen type>,
                        static from_hang = <same as static member of an already seen type>}, {x = -1, y = 0, static invalid = <same as static member of an already seen type>, static north = <same as static member of an already seen type>,
                        static south = <same as static member of an already seen type>, static east = <same as static member of an already seen type>, static west = <same as static member of an already seen type>,
                        static nsew = <same as static member of an already seen type>, static neighbours = <same as static member of an already seen type>, static second_neighbours = <same as static member of an already seen type>,
                        static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>}}, static neighbours = <same as static member of an already seen type>,
                    static second_neighbours = <same as static member of an already seen type>, static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>},
                  static nsew = <same as static member of an already seen type>, static neighbours = <same as static member of an already seen type>, static second_neighbours = <same as static member of an already seen type>,
                  static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>}, static west = <same as static member of an already seen type>,
                static nsew = <same as static member of an already seen type>, static neighbours = <same as static member of an already seen type>, static second_neighbours = <same as static member of an already seen type>,
                static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>}, static east = <same as static member of an already seen type>,
              static west = <same as static member of an already seen type>, static nsew = <same as static member of an already seen type>, static neighbours = <same as static member of an already seen type>,
              static second_neighbours = <same as static member of an already seen type>, static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>},
            static south = <same as static member of an already seen type>, static east = <same as static member of an already seen type>, static west = <same as static member of an already seen type>, static nsew = <same as static member of an already seen type>,
--Type <RET> for more, q to quit, c to continue without paging--c
            static neighbours = <same as static member of an already seen type>, static second_neighbours = <same as static member of an already seen type>, static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>}, static north = <same as static member of an already seen type>, static south = <same as static member of an already seen type>, static east = <same as static member of an already seen type>, static west = <same as static member of an already seen type>, static nsew = <same as static member of an already seen type>, static neighbours = <same as static member of an already seen type>, static second_neighbours = <same as static member of an already seen type>, static from_ribi = <same as static member of an already seen type>, static from_hang = <same as static member of an already seen type>}
        gr = 0x0
        offsety = -6 '\372'
        rada = 0xac46df0
#1  0x00000000007249fd in fabrik_t::step (this=0x38380f40, delta_t=100) at simfab.cc:2244
        min_change = 1
        periods = 4
        slot_interval = 16384
#2  0x00000000007b421d in karte_t::step (this=0x23e5fce0) at simworld.cc:5648
        f = 0x38380f40
        once1__5647 = false
        iter__5647 = 0x382d9f70
        end__5647 = 0x382d9f78
        break__5647 = true
        container___5647 = @0x23e60ca0: {data = 0x382d9660, size = 512, count = 291}
        once0__5647 = false
        time = 368452
        delta_t = 100
        check_city_routes = false
        season_change = false
        snowline_change = false
        dt = 100
#3  0x00000000007c6187 in karte_t::interactive (this=0x23e5fce0, quit_month=2147483647) at simworld.cc:10459
        time = 368425
        hashes_ok = {data = 0x0, size = 0, count = 0}
        ms_difference = 0
#4  0x000000000075c62f in simu_main (argc=8, argv=0x7fffffffdb08) at simmain.cc:1382
        pause_after_load = false
        welt = 0x23e5fce0
        view = 0x12fdabf0
        eventmanager = 0x12fe90c0
        resolutions = {{640, 480}, {800, 600}, {1024, 768}, {1280, 1024}, {704, 560}}
        disp_width = 704
        disp_height = 560
        fullscreen = 0
        quit_month = 2147483647
        path_sep = 0x88533e "/"
        pak_diagonal_multiplier = 724
        pak_tile_height = 8 '\b'
        pak_height_conversion_factor = 2 '\002'
        found_settings = true
        found_simuconf = true
        multiuser = true
        simuconf = {file = 0x0}
        path_to_simuconf = "config/simuconf.tab\000\000\000\000"
        version = 0x885410 "Simutrans version 120.2.1 Extended Nightly development build 14.5 from Aug 25 2019 #1f9227c\n"
        cli_syslog_enabled = false
        cli_syslog_tag = 0x0
        file = {mode = 6, saving = false, buffered = false, curr_buff = 4158526191, buf_pos = {32767, 8}, buf_len = {0, 4160457504}, ls_buf = {0x1 <error: Cannot access memory at address 0x1>, 0x0}, version = 120004, extended_version = 14, extended_revision = 12, ident = 32767, pak_extension = "settings only\000\000\000\335_\024\364\377\177\000\000\000\000\000\000\000\000\000\000h\344\377\367\377\177\000\000\060\305\377\377\377\177\000\000 \305\377\377\377\177\000\000>$\336\367\001\000\000\000\020\341\377\367\377\177\000\000\n<@\000\000\000\000\000\377\377\377\377\000\000\000\000\307\324\335\367\377\177\000\000\060B\206\366\377\177\000\000\340$\374\367\377\177\000\000衧\362\377\177\000\000衧\362\377\177\000\000\350\301(\000\000\000\000\000\003\000\000\000\377\177\000\000\060\305\377\377\377\177\000\000\003\000\000\000\377\177\000\000\000\000\000\000\000\000\000\000\020\307\377\377\377\177\000\000\006\000\000\000\000\000\000\000\002{\025\000\000\000\000\000\340\340\377\367\377\177\000\000\320S\266\000\000\000\000\000"..., filename = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xd04600 "settings-extended-debug.xml"}, _M_string_length = 27, {_M_local_buf = "\036\000\000\000\000\000\000\000\060B\206\366\377\177\000", _M_allocated_capacity = 30}}, fd = 0xd04140, static save_mode = loadsave_t::zipped, static autosave_mode = loadsave_t::zipped}
        xml_filename = "settings-extended-debug.xml\000\000\000\000"
        xml_settings_found = true
        obj_conf = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xd982a0 "/home/dome/simutrans/simuconf.tab"}, _M_string_length = 33, {_M_local_buf = "*\000\000\000\000\000\000\000\066\340\343\371\000\000\000", _M_allocated_capacity = 42}}
        themes_ok = true
        parameter = {0, 0}
        new_world = false
        loadgame = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x766d0e0 ""}, _M_string_length = 0, {_M_local_buf = "\036\000\000\000\000\000\000\000X\304\377\377\377\177\000", _M_allocated_capacity = 30}}
#5  0x000000000076f6f0 in sysmain (argc=8, argv=0x7fffffffdb08) at simsys.cc:825
        buffer2 = 0x0
        buffer = "/home/dome/games/simutrans-ex-src/simutrans-extended/build/default/simutrans-extended\000\000\000\060\316\377\377\377\177\000\000\310\352~\362\377\177\000\000\000\000\000\000\000\000\000\000?\356~\362\377\177\000\000\322D\336\367\377\177\000\000\000\000\000\000\000\000\000\000`\021\337\367\377\177\000\000\000\000\000\000\000\000\000\000\210\327\377\377\377\177\000\000\200\327\377\377\377\177\000\000\177\327\377\377\377\177\000\000\240D\336\367\377\177\000\000\220\327\377\377\377\177\000\000\000\000\000\000\000\000\000\000"...
        length = 85
#6  0x000000000083abb3 in main (argc=8, argv=0x7fffffffdb08) at simsys_s.cc:729
No locals.

freddyhayward

QuoteHowever, maybe this should be spit to a different bugreport as it seems to be a different bug to me.
While I don't know the cause of either of these, the crash on bridgewater-brunel is instantaneous upon loading the save. Also, I'm not sure how to run simutrans-extended on gdb - up until now I have been using it on core dumps.

Mariculous

#21
There _should_ not be a difference in creating the trace from a coredump or using gdb as far as I have read in the last few days.
However, running simutrans-ex using gdb is as sinple as
gdb ./simutrans-extended
Then, from within gdb enter
run -server
which would execute ./simutrans-extended -server under gdb. For sure you can add as many args as you want.
When the game crashes, enter
bt full
and you will get the trace.


Edit: After a whole night and morning of running in fast forward, the stephenson-siemens save from this thread is still running using the same build that I had provided in this thread.
It seems that I can't reproduce the crash by just running the game without taking action.

freddyhayward

#22
another backtrace from a 11-08-19 save. this one is slightly different in that the map and UI will load before immediately crashing. the problems seem to be at the same locations as earlier.

(gdb) bt full
#0  0x000000000040e0aa in grund_t::ist_bruecke (this=0x0)
    at bauer/../boden/grund.h:322
No locals.
#1  0x00000000006eec89 in convoi_t::get_route_infos (this=0xbe54a4f0)
    at simconvoi.cc:1200
        tile = {x = 6437, y = 1474, z = 7 '\a', static invalid = {x = -1,
            y = -1, z = -1 '\377',
            static invalid = <same as static member of an already seen type>}}
        gr = 0x0
        j = 2284
        current_info = @0x18cbb96f8: {speed_limit = 12160,
          steps_from_start = 435467, direction = 9 '\t'}
        this_info = @0x18cbb9704: {speed_limit = 12160,
          steps_from_start = 435648, direction = 9 '\t'}
        this_tile = {x = 6437, y = 1475, z = 7 '\a', static invalid = {x = -1,
            y = -1, z = -1 '\377',
            static invalid = <same as static member of an already seen type>}}
        this_weg = 0x0
        next_tile = {x = 6437, y = 1474, z = 7 '\a', static invalid = {x = -1,
            y = -1, z = -1 '\377',
            static invalid = <same as static member of an already seen type>}}
        this_gr = 0x54201a10
        bridge_tiles_ahead = 0
--Type <RET> for more, q to quit, c to continue without paging--
        route_count = 2777
        current_tile = {x = 6438, y = 1475, z = 8 '\b', static invalid = {x = -1, y = -1, z = -1 '\377', static invalid = <same as static member of an already seen type>}}
        current_weg = 0x0
        touchdown_index = 2704
        bridge_tiles = 1
        front = @0xbe551180: {<vehicle_base_t> = {<obj_t> = {_vptr.obj_t = 0x898b08 <vtable for air_vehicle_t+16>, static show_owner = false, pos = {x = 7674, y = 2472, z = 3 '\003', static invalid = {x = -1,
                  y = -1, z = -1 '\377', static invalid = <same as static member of an already seen type>}}, xoff = -16 '\360', yoff = 8 '\b', owner_n = 7 '\a', flags = 5 '\005',
              static welt = {<No data fields>}, type = obj_t::air_vehicle}, gr = 0x0, weg = 0x0, static dxdy = "\376\001\376\377\374\000\000\002\002\377\002\001\004\000\000\376",
            static diagonal_vehicle_steps_per_tile = 181 '\265', static old_diagonal_vehicle_steps_per_tile = 181 '\265', static diagonal_multiplier = 724, static overtaking_base_offsets = {
              "\364", <incomplete sequence \372>, <incomplete sequence \372>, <incomplete sequence \372>, <incomplete sequence \364>, "\f\006", "\364\006", "\000\006", "\022"}, direction = 3 '\003',
            use_calc_height = 0 '\000', drives_on_left = 0 '\000', disp_lane = 2 '\002', dx = 4 '\004', dy = 0 '\000', steps = 180 '\264', steps_next = 180 '\264', pos_next = {x = 7675, y = 2472, z = 3 '\003',
              static invalid = {x = -1, y = -1, z = -1 '\377', static invalid = <same as static member of an already seen type>}}, zoff_start = 0 '\000', zoff_end = 0 '\000', image = 8950,
            current_livery = "default", next_lane = 0 '\000', class_reassignments = 0xbe54a420 ""}, <test_driver_t> = {_vptr.test_driver_t = 0x898c70 <vtable for air_vehicle_t+376>}, purchase_time = 23617,
          sum_weight = 28030, pre_corner_direction = {data = {360, 0 <repeats 191 times>}, size = 1 '\001', head = 0 '\000', tail = 0 '\000'}, direction_steps = -23636, hill_up = 0 '\000', hill_down = 0 '\000',
          is_overweight = false, reversed = false, diagonal_costs = 0, base_costs = 0, static sound_ticks = 0, speed_limit = 768, previous_direction = 1 '\001', target_halt = {static data = 0xb4e23ee0,
            static next = 8193, static size = 16384, entry = 0}, current_friction = 4, route_index = 2, total_freight = 9, fracht = 0xbe5513f8, desc = 0xa0a0940, cnv = 0xbe54a4f0, pos_prev = {x = 0, y = 0,
            z = 0 '\000', static invalid = {x = -1, y = -1, z = -1 '\377', static invalid = <same as static member of an already seen type>}}, number_of_classes = 5 '\005', leading = true, last = true,
          smoke = true, check_for_finish = false, has_driven = true, hop_count = 0 '\000', last_stop_pos = {x = 7674, y = 2473, z = 3 '\003', static invalid = {x = -1, y = -1, z = -1 '\377',
              static invalid = <same as static member of an already seen type>}}}
        current_route_index = 2
        corner_data = {data = {45, 45, 90, 45, 360, 360, 360, 360, 360, 315, 90 <repeats 18 times>, 180, 270, 270, 270, 270, 315, 315, 270, 270, 270, 270, 270, 270, 315, 360, 315, 360, 360, 360, 315, -19548, -1,
            3, 0, -5072, 15139, 0, 0, -19616, -1, 1023, 0, -21685, 113, 0, 0, -19472, -1, 8, 0, -5072, 15139, 0, 0, -19472, -1, 32767, 0, -23324, 113, 0, 0, 0, -1, 0, 0, -14528, 404, 3, 0, 608, 0, 384, 0,
            -19472, -1, 32767, 0, -18625, -1, 32767, 12338, -6400, 14677, 17773, -29123, -18656, -1, 32767, 0, 0, 0, 0, 0, 31, 0, 0, 0, -19472, -1, 32767, 0, -11898, 132, 0, 0, -19088, -1, 32767, 0, 10042,
            27885, 0, 0, -19384, -1, 32767, 0, -19440, -1, 32767, 0, 27564, 71, 0, 0, -32767, -1107, 32512, 0, -32768, 27884, 0, 0, -19384, -1, 32767, 0, 9952, 27885, 8, 0, -19328, -1, 32767, 0, 24468, 71, 0, 0,
            -19392, -1, 32512, 0, -7680, 64, 0, 0, -19278, -1, 32767, 0, 9952, 27885, 0, 0, -19328, -1, 32767, 0, 1405, 64, 0, 0}, size = 10 '\n', head = 0 '\000', tail = 9 '\t'}
        waytype = air_wt
        takeoff_index = 10
        i = 2283
        start_info = @0x18cbb2c00: {speed_limit = 320, steps_from_start = 0, direction = 3 '\003'}
#2  0x000000000080b0c1 in air_vehicle_t::can_enter_tile (this=0xbe551180, gr=0x6d142d08, restart_speed=@0x7fffffffb850: -1) at vehicle/simvehicle.cc:8781
        __PRETTY_FUNCTION__ = "virtual bool air_vehicle_t::can_enter_tile(const grund_t*, sint32&, uint8)"
        route = @0xbe54a588: {route = {<vector_tpl<koord3d>> = {data = 0xbe54db30, size = 2778, count = 2777}, <No data fields>}, max_axle_load = 4294967295, max_convoy_weight = 4294967295,
          static MAX_NODES_ARRAY = 2 '\002', static _nodes = {0x7fff2a4e5010, 0x7fff2771e010}, static _nodes_in_use = {false, false}, static MAX_STEP = 1500000, static max_used_steps = 604}
        route_infos = @0x1458c30: {<vector_tpl<convoi_t::route_info_t>> = {data = 0x1e38f7000000, size = 3496, count = 270535366}, hp_start_index = 4497, hp_end_index = 1200, hp_start_step = 532,
          hp_end_step = 761}
        next_block = 0
        last_index = 0
#3  0x00000000007eacc8 in vehicle_t::can_enter_tile (this=0xbe551180, restart_speed=@0x7fffffffb850: -1, second_check_count=0 '\000') at vehicle/simvehicle.cc:1628
        ok = false
        gr = 0x6d142d08
#4  0x00000000006f2eab in convoi_t::step (this=0xbe54a4f0) at simconvoi.cc:2260
        restart_speed = -1
        autostart = false
        position = 0 '\000'
        rev = true
        gr = 0xf00026b17
        str = 0x46ffffb901
        __PRETTY_FUNCTION__ = "void convoi_t::step()"
        lines = {data = 0x0, size = 0, count = 0}
#5  0x00000000007b364a in karte_t::step (this=0x1458c30) at simworld.cc:5476
        cnv = {static data = 0xba5a7150, static next = 4097, static size = 8192, entry = 1404}
        i = 2616
        time = 99758
        delta_t = 319
--Type <RET> for more, q to quit, c to continue without paging--
        check_city_routes = false
        season_change = false
        snowline_change = false
        dt = 0
#6  0x00000000007c67c1 in karte_t::interactive (this=0x1458c30, quit_month=2147483647) at simworld.cc:10531
        time = 99645
        hashes_ok = {data = 0x0, size = 0, count = 0}
        ms_difference = 0
#7  0x000000000075c62f in simu_main (argc=1, argv=0x7fffffffe488) at simmain.cc:1382
        pause_after_load = false
        welt = 0x1458c30
        view = 0x1463bf0
        eventmanager = 0x1463b00
        resolutions = {{640, 480}, {800, 600}, {1024, 768}, {1280, 1024}, {704, 560}}
        disp_width = 704
        disp_height = 560
        fullscreen = 0
        quit_month = 2147483647
        path_sep = 0x88533e "/"
        pak_diagonal_multiplier = 724
        pak_tile_height = 8 '\b'
        pak_height_conversion_factor = 2 '\002'
        found_settings = false
        found_simuconf = true
        multiuser = true
        simuconf = {file = 0x0}
        path_to_simuconf = "config/simuconf.tab\000\000\000\000"
        version = 0x885410 "Simutrans version 120.2.1 Extended Nightly development build 14.5 from Aug 25 2019 #1f9227c\n"
        cli_syslog_enabled = false
        cli_syslog_tag = 0x0
        file = {mode = 4, saving = false, buffered = false, curr_buff = 4192460854, buf_pos = {0, 0}, buf_len = {0, 4209674}, ls_buf = {0x7ffff7ffe480 "\340\343\377\367\377\177",
            0x7fffffffcec0 "\377\377\377\377"}, version = 0, extended_version = 0, extended_revision = 0, ident = 32767,
          pak_extension = "\b\000\000\000\000\000\000\000\240\242\230\367\377\177\000\000\001", '\000' <repeats 15 times>, "\001\000\000\000\000\000\000\000 \341\377\367\377\177\000\000h\317\377\377\377\177\000\000\240\242\230\367\377\177\000\000 \341\377\367\377\177\000\000\240\064\377\367\001\000\000\000\200\344\377\367\377\177\000\000\000\000\000\000\000\000\000\000\320\325\377\377\377\177\000\000b\240\375\367\377\177\000\000\377\377\377\377\000\000\000\000\000P\002\000\000\000\000\000\210\254{\367\377\177\000\000\360\224\230\367\377\177\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000P\002\000\000\000\000\000\000\360\026\000\000\000\000\000\375\346\026\000\000\000\000\000\375\346\026\000\000\000\000\000\000P\002\000\000\000\000\000"..., filename = "", fd = 0xd03f10, static save_mode = loadsave_t::zipped,
          static autosave_mode = loadsave_t::zipped}
        xml_filename = "settings-extended-debug.xml\000\000\000\000"
        xml_settings_found = false
        obj_conf = "/home/freddy/simutrans/simuconf.tab"
        themes_ok = true
        parameter = {0, 0}
        new_world = false
        loadgame = ""
#8  0x000000000076f6f0 in sysmain (argc=1, argv=0x7fffffffe488) at simsys.cc:825
        buffer2 = 0x0
        buffer = "/home/freddy/simutrans/Simutrans-Extended-Complete/simutrans/simutrans-extended-debug\000\000\000\035\352\375\367\377\177\000\000\340\r\031\000\000\000\000\000`\232\230\367\377\177\000\000/\236\230\367\377\177\000\000\024\000\000\000\000\000\000\000\364\314\313\367\377\177\000\000\004\000\000\000\000\000\000\000Q\345td\006", '\000' <repeats 11 times>, "\220\325\377\377\377\177\000\000\023\347\375\367\377\177\000\000\377\375\377o\000\000\000\000\220\325\377\377\377\177\000\000\200\232\230\367\377\177\000\000"...
        length = 85
#9  0x000000000083abb3 in main (argc=1, argv=0x7fffffffe488) at simsys_s.cc:729
No locals.
(gdb)


Edit: since the issue began on roughly 11/8, and references to simconvoi.cc:1200, it seems possible to have something to do with James's commit on bridge weight limits: https://github.com/jamespetts/simutrans-extended/commit/e93f72b6eb773d26077834ed3691e2a087de4096

Mariculous

So i build binaries from that said commit and from one commit behind tat one and will run both for the night.
So maybe we can say tomorrow that it is very likely the changes of that commit are causing the error.

freddyhayward

Could you please upload the binary so I can run it with the bridgewater-brunel saves?

Mariculous

Sure.
dome.xileks.de/simutrans/simutrans-extended_f3b6d42dedec041ae25d95a855edda97e33552fd
dome.xileks.de/simutrans/simutrans-extended_e93f72b6eb773d26077834ed3691e2a087de4096

No test results for me yet.

freddyhayward

#26
I tried both versions with the bridgewater-brunel save and can now confirm that commit e93f72b is the cause of the crash.
James, as soon as you read this, please revert commit e93f72b until the issue can be fixed.

Edit: at line 1200 in simconvoi.cc,
gr->ist_bruecke()
is called, where
gr = 0x0
in the backtrace. is this a problem?

freddyhayward

James - have you read my last reply to this thread (https://forum.simutrans.com/index.php/topic,19159.0.html) where I have identified the cause of the bug? Fixing it temporarily would only involve reverting the commit (e93f72b) on bridge weight limits.

freddyhayward

I have done some more testing by saving the file in the older build and loading it in the latest build. What I have consistently found is that the save will not crash upon loading if enough time has been given (roughly 15 in-game minutes) in the older build (f3b6d42) for the planes at Halford Airport to take off. Given that this crash has yet to be reproduced without that specific save, it could be avoided for the time-being simply by updating the savegame used by bridgewater-brunel.

James: I'd be happy to upload the fixed save (run for 15 in-game minutes) for you to replace the existing on bridgewater-brunel.

jamespetts

Thank you all very much for testing: this is most helpful. I believe that Freddy Hayward identified the issue correctly in his post of the 28th of August: gr was not checked to see whether it was NULL. I have now added this check, which should be available in the next nightly builds. I should be grateful if people could report whether this fixes the problem with the server as of to-morrow morning.

My apologies for not having had the chance to look into this sooner: I was away all last week.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Mariculous

#30
I did not have any server crashes for a while now but I'll try the old broken savegame with tomorrows build.

Just trying to understand Simutrans code, I am actually wondering how gr can be null in that case?
You are iterating over route indices, and gr is always the ground of a coordinate in that route.
If I got it right, welt->lookup will return NULL in two cases: The coordinate does not exist on the map or the coordinate exists but there is nothing at the given height at this coordinate.
So how can this happen?
If I got it right, this should situation should get logged as an error as this would be a bug somewhere else in the code.

Additionally I see the following potential bugs in calculation:
1. When a trains route ends on a bridge, the length of the bridge is only calculated up to that point.
2. When a bridge immediately follows another bridge, the code would threat them as one.

freddyhayward

The server is now working again!