Update of bug #23614 (project freeciv):

         Planned Release:                         => 3.0.0                  

    _______________________________________________________

Follow-up Comment #5:

Bug #23786 fixes the get_trade_illness() crash without adding
city_illness_calc() to city_refresh().

As in comment #2, loading this savegame (or file #24884) still causes trunk to
crash later. Both savegames crash similarly (this is from the latter):


1: in city_owner() [../../common/city.c::1062]: assertion '((void *)0) !=
pcity' failed.
1: Please report this message at http://gna.org/projects/freeciv/
2: Backtrace:
2:     0:
/home/jtn/src/freeciv/git/btrunk/./server/freeciv-server(backtrace_print+0x30)
[0x65ddf0]
2:     1:
/home/jtn/src/freeciv/git/btrunk/./server/freeciv-server(vdo_log+0x8b)
[0x6617bb]
2:     2:
/home/jtn/src/freeciv/git/btrunk/./server/freeciv-server(do_log+0x7d)
[0x66186d]
2:     3:
/home/jtn/src/freeciv/git/btrunk/./server/freeciv-server(fc_assert_fail+0x8e)
[0x661a5e]
2:     4:
/home/jtn/src/freeciv/git/btrunk/./server/freeciv-server(city_owner+0x66)
[0x5837d6]
2:     5:
/home/jtn/src/freeciv/git/btrunk/./server/freeciv-server(cities_trade_route_type+0x1a)
[0x6527ca]
2:     6:
/home/jtn/src/freeciv/git/btrunk/./server/freeciv-server(city_refresh_from_main_map+0x78b)
[0x5867cb]
2:     7:
/home/jtn/src/freeciv/git/btrunk/./server/freeciv-server(city_refresh+0x29)
[0x49e6a9]
2:     8: /home/jtn/src/freeciv/git/btrunk/./server/freeciv-server()
[0x52d15a]
2:     9: /home/jtn/src/freeciv/git/btrunk/./server/freeciv-server()
[0x52ec6c]
2:    10:
/home/jtn/src/freeciv/git/btrunk/./server/freeciv-server(savegame2_load+0x2af)
[0x53243f]
2:    11:
/home/jtn/src/freeciv/git/btrunk/./server/freeciv-server(savegame_load+0x98)
[0x4eedc8]
2:    12:
/home/jtn/src/freeciv/git/btrunk/./server/freeciv-server(load_command+0x363)
[0x44b143]
2:    13:
/home/jtn/src/freeciv/git/btrunk/./server/freeciv-server(srv_main+0xff)
[0x43d81f]
2:    14: /home/jtn/src/freeciv/git/btrunk/./server/freeciv-server(main+0x23c)
[0x433e3c]
2:    15: /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)
[0x7fad53790ec5]
2:    16: /home/jtn/src/freeciv/git/btrunk/./server/freeciv-server()
[0x4349b7]
1: in player_diplstate_get() [../../common/player.c::298]: assertion 'plr2 !=
((void *)0)' failed.
1: Please report this message at http://gna.org/projects/freeciv/
2: Backtrace:
2:     0:
/home/jtn/src/freeciv/git/btrunk/./server/freeciv-server(backtrace_print+0x30)
[0x65ddf0]
2:     1:
/home/jtn/src/freeciv/git/btrunk/./server/freeciv-server(vdo_log+0x8b)
[0x6617bb]
2:     2:
/home/jtn/src/freeciv/git/btrunk/./server/freeciv-server(do_log+0x7d)
[0x66186d]
2:     3:
/home/jtn/src/freeciv/git/btrunk/./server/freeciv-server(fc_assert_fail+0x8e)
[0x661a5e]
2:     4:
/home/jtn/src/freeciv/git/btrunk/./server/freeciv-server(player_diplstate_get+0x75)
[0x63bbd5]
2:     5:
/home/jtn/src/freeciv/git/btrunk/./server/freeciv-server(cities_trade_route_type+0x2e)
[0x6527de]
2:     6:
/home/jtn/src/freeciv/git/btrunk/./server/freeciv-server(city_refresh_from_main_map+0x78b)
[0x5867cb]
2:     7:
/home/jtn/src/freeciv/git/btrunk/./server/freeciv-server(city_refresh+0x29)
[0x49e6a9]
2:     8: /home/jtn/src/freeciv/git/btrunk/./server/freeciv-server()
[0x52d15a]
2:     9: /home/jtn/src/freeciv/git/btrunk/./server/freeciv-server()
[0x52ec6c]
2:    10:
/home/jtn/src/freeciv/git/btrunk/./server/freeciv-server(savegame2_load+0x2af)
[0x53243f]
2:    11:
/home/jtn/src/freeciv/git/btrunk/./server/freeciv-server(savegame_load+0x98)
[0x4eedc8]
2:    12:
/home/jtn/src/freeciv/git/btrunk/./server/freeciv-server(load_command+0x363)
[0x44b143]
2:    13:
/home/jtn/src/freeciv/git/btrunk/./server/freeciv-server(srv_main+0xff)
[0x43d81f]
2:    14: /home/jtn/src/freeciv/git/btrunk/./server/freeciv-server(main+0x23c)
[0x433e3c]
2:    15: /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)
[0x7fad53790ec5]
2:    16: /home/jtn/src/freeciv/git/btrunk/./server/freeciv-server()
[0x4349b7]
Segmentation fault (core dumped)



#0  city_tile (pcity=pcity@entry=0x0) at ../../common/city.c:1074
No locals.
#1  0x00000000006527f5 in cities_trade_route_type (
    pcity1=pcity1@entry=0x237d220, pcity2=pcity2@entry=0x0)
    at ../../common/traderoutes.c:66
        ds = 0x0
        plr1 = <optimised out>
        plr2 = <optimised out>
        __FUNCTION__ = "cities_trade_route_type"
#2  0x00000000005867cb in set_city_production (pcity=0x237d220)
    at ../../common/city.c:2639
        type = <optimised out>
        settings = <optimised out>
        tcity = 0x0
        can_trade = <optimised out>
        proute_iter = 0x0
        proute = 0x22485c0
#3  city_refresh_from_main_map (pcity=pcity@entry=0x237d220, 
    workers_map=workers_map@entry=0x0) at ../../common/city.c:2812
No locals.
#4  0x000000000049e6a9 in city_refresh (pcity=pcity@entry=0x237d220)
    at ../../server/cityturn.c:154
        retval = false
#5  0x000000000052d15a in sg_load_player_cities (
    loading=loading@entry=0x216f050, plr=plr@entry=0x3ee4f50)
    at ../../server/savegame2.c:2974
        buf =
"player0.c0\000ceship\000\000S\255\177\000\000\000лU\255\177\000"
        pcity = 0x237d220
        ncities = 2
        i = 0
        plrno = 0
        tasks_handled = <optimised out>
        __FUNCTION__ = "sg_load_player_cities"
#6  0x000000000052ec6c in sg_load_players (loading=loading@entry=0x216f050)
    at ../../server/savegame2.c:2397
        pplayer = 0x3ee4f50
        _pslot = 0x1f06160
        __FUNCTION__ = "sg_load_players"
#7  0x000000000053243f in savegame2_load_real (file=0x48)
    at ../../server/savegame2.c:448
        loading = 0x216f050
        was_send_city_suppressed = <optimised out>
        was_send_tile_suppressed = <optimised out>
#8  savegame2_load (file=file@entry=0x1f2cb90) at
../../server/savegame2.c:404
        savefile_options = <optimised out>
        __FUNCTION__ = "savegame2_load"
#9  0x00000000004eedc8 in savegame_load (file=file@entry=0x1f2cb90)
    at ../../server/savegame3.c:442
        savefile_options = <optimised out>
        __FUNCTION__ = "savegame_load"
        loadtimer = 0x216f010
#10 0x000000000044b143 in load_command (caller=caller@entry=0x0, 
    filename=filename@entry=0xc05cf8 <srvarg+568>
"/home/jtn/.freeciv/saves/25exp_trade_ill_plague.sav.bz2",
check=check@entry=false)
    at ../../server/stdinhand.c:3653
        loadtimer = 0x216ef90
        uloadtimer = 0x216efd0
        file = 0x1f2cb90
        arg = "/home/jtn/.freeciv/saves/25exp_trade_ill_plague.sav.bz2",
'\000' <repeats 1337 times>...
        __FUNCTION__ = "load_command"
#11 0x000000000043d81f in srv_prepare () at ../../server/srv_main.c:2706
No locals.
#12 srv_main () at ../../server/srv_main.c:3088
        __FUNCTION__ = "srv_main"
#13 0x0000000000433e3c in main (argc=3, argv=0x7ffd3086dd28)
    at ../../server/civserver.c:459
        inx = 3
        showhelp = <optimised out>
        showvers = <optimised out>
        option = <optimised out>
        __FUNCTION__ = "main"


I think a similar crash was seen in freeciv-web in bug #23708.

Root cause is calling city_refresh() before all cities are loaded; I think
patch #6037 has exposed a latent issue. Either:
* city_refresh() is not needed this early and can be removed or deferred; or
* something later in savegame loading is depending on a calculation done by
city_refresh(), and probably gets the wrong answers even on stable branches

    _______________________________________________________

Reply to this item at:

  <http://gna.org/bugs/?23614>

_______________________________________________
  Message sent via/by Gna!
  http://gna.org/


_______________________________________________
Freeciv-dev mailing list
[email protected]
https://mail.gna.org/listinfo/freeciv-dev

Reply via email to