<URL: http://bugs.freeciv.org/Ticket/Display.html?id=40011 >

Thank you for the bad savegame!  This is the worst I've ever seen.  It will
help in debugging our future code....

Sadly, the 2.1 border generation code is very buggy, and has a tendency to
crash whenever cities change hands out of sight.  For 2.2, the code has
been changed to deterministic borders.

The 2.1 server loads it without complaint, but then the client crashes
trying to display impossible data.  Some 2.1.2+ test runs:

0   civclient                   0x00039758 fill_terrain_sprite_layer + 0x30 
(tilespec.c:3781)
1   civclient                   0x0003a594 fill_sprite_array + 0x3b4 
(tilespec.c:4086)
2   civclient                   0x0001b678 put_one_element + 0x68 
(mapview_common.c:897)
3   civclient                   0x0001bc38 put_one_tile + 0x84 
(mapview_common.c:1071)
4   civclient                   0x0001c3f0 update_map_canvas + 0x7a4 
(mapview_common.c:1142)


0   civclient                   0x000392b8 fill_terrain_sprite_array + 0x41c 
(tilespec.c:3667)
1   civclient                   0x000397dc fill_terrain_sprite_layer + 0xb4 
(tilespec.c:3803)
2   civclient                   0x0003a594 fill_sprite_array + 0x3b4 
(tilespec.c:4086)
3   civclient                   0x0001b678 put_one_element + 0x68 
(mapview_common.c:897)
4   civclient                   0x0001bc38 put_one_tile + 0x84 
(mapview_common.c:1071)
5   civclient                   0x0001c3f0 update_map_canvas + 0x7a4 
(mapview_common.c:1142)


The 2.2 pre-beta server code has more extensive error checking, it won't
load the file, here is a sampling:

1: Failed sanity check in Echmiadzin[10](52, 14): tile_owner(pcity->tile) == 
NULL || tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Echmiadzin[10](52, 14): tile_owner(pcity->tile) == 
NULL || tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Echmiadzin[10](52, 14): workers + 
city_specialists(pcity) == pcity->size + 1 (sanitycheck.c:333)
1: Failed sanity check in Echmiadzin[10](52, 14): tile_owner(pcity->tile) == 
NULL || tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Echmiadzin[10](52, 14): tile_owner(pcity->tile) == 
NULL || tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Echmiadzin[10](52, 14): workers + 
city_specialists(pcity) == pcity->size + 1 (sanitycheck.c:333)
1: Failed sanity check in Echmiadzin[10](52, 14): tile_owner(pcity->tile) == 
NULL || tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Echmiadzin[10](52, 14): tile_owner(pcity->tile) == 
NULL || tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Echmiadzin[10](52, 14): workers + 
city_specialists(pcity) == pcity->size + 1 (sanitycheck.c:333)
1: Failed sanity check in Celje[5](48, 20): tile_owner(pcity->tile) == NULL || 
tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Celje[5](48, 20): tile_owner(pcity->tile) == NULL || 
tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Celje[5](48, 20): workers + city_specialists(pcity) 
== pcity->size + 1 (sanitycheck.c:333)
1: Failed sanity check in Ljubljana[5](43, 18): tile_owner(pcity->tile) == NULL 
|| tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Ljubljana[5](43, 18): tile_owner(pcity->tile) == NULL 
|| tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Ljubljana[5](43, 18): workers + 
city_specialists(pcity) == pcity->size + 1 (sanitycheck.c:333)
1: Failed sanity check in Ljubljana[5](43, 18): tile_owner(pcity->tile) == NULL 
|| tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Ljubljana[5](43, 18): tile_owner(pcity->tile) == NULL 
|| tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Ljubljana[5](43, 18): workers + 
city_specialists(pcity) == pcity->size + 1 (sanitycheck.c:333)
1: Failed sanity check in Ljubljana[5](43, 18): tile_owner(pcity->tile) == NULL 
|| tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Ljubljana[5](43, 18): tile_owner(pcity->tile) == NULL 
|| tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Ljubljana[5](43, 18): workers + 
city_specialists(pcity) == pcity->size + 1 (sanitycheck.c:333)
1: Failed sanity check in Ljubljana[5](43, 18): tile_owner(pcity->tile) == NULL 
|| tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Ljubljana[5](43, 18): tile_owner(pcity->tile) == NULL 
|| tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Ljubljana[5](43, 18): workers + 
city_specialists(pcity) == pcity->size + 1 (sanitycheck.c:333)
1: Failed sanity check in Ljubljana[5](43, 18): tile_owner(pcity->tile) == NULL 
|| tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Ljubljana[5](43, 18): tile_owner(pcity->tile) == NULL 
|| tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Ljubljana[5](43, 18): workers + 
city_specialists(pcity) == pcity->size + 1 (sanitycheck.c:333)
1: Failed sanity check in Ljubljana[5](43, 18): tile_owner(pcity->tile) == NULL 
|| tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Ljubljana[5](43, 18): tile_owner(pcity->tile) == NULL 
|| tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Ljubljana[5](43, 18): workers + 
city_specialists(pcity) == pcity->size + 1 (sanitycheck.c:333)
1: Failed sanity check in Maribor[6](45, 19): tile_owner(pcity->tile) == NULL 
|| tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Maribor[6](45, 19): tile_owner(pcity->tile) == NULL 
|| tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Maribor[6](45, 19): workers + city_specialists(pcity) 
== pcity->size + 1 (sanitycheck.c:333)
1: Failed sanity check in Brussel / Bruxelles[5](38, 20): 
find_city_from_great_wonder(pimprove) == pcity (sanitycheck.c:241)
1: last message repeated 2 times
1: last message repeated 1 time (total 3 repeats)
1: Failed sanity check in Brussel / Bruxelles[5](38, 20): 
tile_owner(pcity->tile) == NULL || tile_owner(pcity->tile) == pplayer 
(sanitycheck.c:230)
1: Failed sanity check in Brussel / Bruxelles[5](38, 20): 
find_city_from_great_wonder(pimprove) == pcity (sanitycheck.c:241)
1: Failed sanity check in Brussel / Bruxelles[5](38, 20): 
find_city_from_great_wonder(pimprove) == pcity (sanitycheck.c:241)
1: Failed sanity check in Brussel / Bruxelles[5](38, 20): 
tile_owner(pcity->tile) == NULL || tile_owner(pcity->tile) == pplayer 
(sanitycheck.c:230)
1: Failed sanity check in Brussel / Bruxelles[5](38, 20): 
find_city_from_great_wonder(pimprove) == pcity (sanitycheck.c:241)
1: Failed sanity check in Brussel / Bruxelles[5](38, 20): 
find_city_from_great_wonder(pimprove) == pcity (sanitycheck.c:241)
1: Failed sanity check in Brussel / Bruxelles[5](38, 20): workers + 
city_specialists(pcity) == pcity->size + 1 (sanitycheck.c:333)
1: Failed sanity check in Nova Gorica[9](44, 16): tile_owner(pcity->tile) == 
NULL || tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Nova Gorica[9](44, 16): tile_owner(pcity->tile) == 
NULL || tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Nova Gorica[9](44, 16): workers + 
city_specialists(pcity) == pcity->size + 1 (sanitycheck.c:333)
1: Failed sanity check in Brussel / Bruxelles[5](38, 20): 
tile_owner(pcity->tile) == NULL || tile_owner(pcity->tile) == pplayer 
(sanitycheck.c:230)
1: Failed sanity check in Brussel / Bruxelles[5](38, 20): 
find_city_from_great_wonder(pimprove) == pcity (sanitycheck.c:241)
1: Failed sanity check in Brussel / Bruxelles[5](38, 20): 
find_city_from_great_wonder(pimprove) == pcity (sanitycheck.c:241)
1: Failed sanity check in Brussel / Bruxelles[5](38, 20): 
tile_owner(pcity->tile) == NULL || tile_owner(pcity->tile) == pplayer 
(sanitycheck.c:230)
1: Failed sanity check in Brussel / Bruxelles[5](38, 20): 
find_city_from_great_wonder(pimprove) == pcity (sanitycheck.c:241)
1: Failed sanity check in Brussel / Bruxelles[5](38, 20): 
find_city_from_great_wonder(pimprove) == pcity (sanitycheck.c:241)
1: Failed sanity check in Brussel / Bruxelles[5](38, 20): workers + 
city_specialists(pcity) == pcity->size + 1 (sanitycheck.c:333)
1: Failed sanity check in Antwerpen[4](41, 19): tile_owner(pcity->tile) == NULL 
|| tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Antwerpen[4](41, 19): tile_owner(pcity->tile) == NULL 
|| tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Antwerpen[4](41, 19): workers + 
city_specialists(pcity) == pcity->size + 1 (sanitycheck.c:333)
1: Failed sanity check in Brussel / Bruxelles[5](38, 20): 
tile_owner(pcity->tile) == NULL || tile_owner(pcity->tile) == pplayer 
(sanitycheck.c:230)
1: Failed sanity check in Brussel / Bruxelles[5](38, 20): 
find_city_from_great_wonder(pimprove) == pcity (sanitycheck.c:241)
1: Failed sanity check in Brussel / Bruxelles[5](38, 20): 
find_city_from_great_wonder(pimprove) == pcity (sanitycheck.c:241)
1: Failed sanity check in Brussel / Bruxelles[5](38, 20): 
tile_owner(pcity->tile) == NULL || tile_owner(pcity->tile) == pplayer 
(sanitycheck.c:230)
1: Failed sanity check in Brussel / Bruxelles[5](38, 20): 
find_city_from_great_wonder(pimprove) == pcity (sanitycheck.c:241)
1: Failed sanity check in Brussel / Bruxelles[5](38, 20): 
find_city_from_great_wonder(pimprove) == pcity (sanitycheck.c:241)
1: Failed sanity check in Brussel / Bruxelles[5](38, 20): workers + 
city_specialists(pcity) == pcity->size + 1 (sanitycheck.c:333)
1: Failed sanity check in Antwerpen[4](41, 19): tile_owner(pcity->tile) == NULL 
|| tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Antwerpen[4](41, 19): tile_owner(pcity->tile) == NULL 
|| tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Antwerpen[4](41, 19): workers + 
city_specialists(pcity) == pcity->size + 1 (sanitycheck.c:333)
1: Failed sanity check in Roma[6](35, 16): find_city_from_small_wonder(pplayer, 
pimprove) == pcity (sanitycheck.c:239)
1: Failed sanity check in Roma[6](35, 16): find_city_from_small_wonder(pplayer, 
pimprove) == pcity (sanitycheck.c:239)
1: Failed sanity check in Hrazdan[8](46, 14): tile_owner(pcity->tile) == NULL 
|| tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Hrazdan[8](46, 14): tile_owner(pcity->tile) == NULL 
|| tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Hrazdan[8](46, 14): workers + city_specialists(pcity) 
== pcity->size + 1 (sanitycheck.c:333)
1: Failed sanity check in Hrazdan[8](46, 14): tile_owner(pcity->tile) == NULL 
|| tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Hrazdan[8](46, 14): tile_owner(pcity->tile) == NULL 
|| tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Hrazdan[8](46, 14): workers + city_specialists(pcity) 
== pcity->size + 1 (sanitycheck.c:333)
1: Failed sanity check in Pontevedra[4](43, 8): tile_owner(pcity->tile) == NULL 
|| tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Pontevedra[4](43, 8): tile_owner(pcity->tile) == NULL 
|| tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Pontevedra[4](43, 8): workers + 
city_specialists(pcity) == pcity->size + 1 (sanitycheck.c:333)
1: Failed sanity check in Roma[6](35, 16): find_city_from_small_wonder(pplayer, 
pimprove) == pcity (sanitycheck.c:239)
1: Failed sanity check in Roma[6](35, 16): find_city_from_small_wonder(pplayer, 
pimprove) == pcity (sanitycheck.c:239)
1: Failed sanity check in Wamanqa[4](30, 20): tile_owner(pcity->tile) == NULL 
|| tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Wamanqa[4](30, 20): tile_owner(pcity->tile) == NULL 
|| tile_owner(pcity->tile) == pplayer (sanitycheck.c:230)
1: Failed sanity check in Wamanqa[4](30, 20): workers + city_specialists(pcity) 
== pcity->size + 1 (sanitycheck.c:333)
1: Failed sanity check in Brugge[6](38, 31): 
find_city_from_great_wonder(pimprove) == pcity (sanitycheck.c:241)
1: last message repeated 2 times
1: last message repeated 2 times (total 4 repeats)
1: last message repeated 3 times (total 7 repeats)
...



_______________________________________________
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev

Reply via email to