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