Complete.Org:
Mailing Lists:
Archives:
freeciv-dev:
December 2002: [Freeciv-Dev] (PR#2518) ai reading from raw memory? |
[Freeciv-Dev] (PR#2518) ai reading from raw memory?[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
while testing my general effects patch, I noticed that I was getting diverging savegames. Because I am fairly sure I wasn't touching any code that would cause such a thing, I did a bit of investigation (but not too much, otherwise you guys wouldn't get to have any fun...) it seems that somewhere, the ai is looking at raw memory and making calculations based on this. Procedure: 1. compile two trees with debugging 2. apply this diff to one tree: diff -Nur -Xsnap/diff_ignore snap/server/srv_main.c snap-aitest/server/srv_main.c --- snap/server/srv_main.c Thu Nov 14 22:21:45 2002 +++ snap-aitest/server/srv_main.c Sun Dec 8 16:26:38 2002 @@ -427,6 +427,11 @@ for (i = 0; i < game.nplayers; i++) { struct player *pplayer = shuffled_player(i); if (pplayer->ai.control) { + + impr_type_iterate(impr) { + int i = improvement_exists(impr); + } impr_type_iterate_end; + ai_do_first_activities(pplayer); flush_packets(); /* AIs can be such spammers... */ } this _ought_ to be a noop, wouldn't you agree? run the attached savegame like so: ser -d 4 -f civgame+1000.sav.gz 1> output.err.sav st here's a taste: -4: Engineers 266(25, 17) wants city at (135266592, -1073742952) with want 0, distance 0 moves +4: Engineers 266(25, 17) wants city at (135266624, -1073742968) with want 0, distance 0 moves > 4: adding cost:0 at 25,17 > @@ -166005,7 +166005,7 @@ > 4: City value (26, 30) = 2088, harbour = 1, cfood = 48 > -4: Engineers 231(37, 20) wants city at (135266592, -1073742952) with want 0, distance 0 moves +4: Engineers 231(37, 20) wants city at (135266624, -1073742968) with want 0, distance 0 moves this should be fairly easy to track down given the debugging message I would think. diff -Nur -Xsnap/diff_ignore snap/server/srv_main.c snap-aitest/server/srv_main.c --- snap/server/srv_main.c Thu Nov 14 22:21:45 2002 +++ snap-aitest/server/srv_main.c Sun Dec 8 16:26:38 2002 @@ -427,6 +427,11 @@ for (i = 0; i < game.nplayers; i++) { struct player *pplayer = shuffled_player(i); if (pplayer->ai.control) { + + impr_type_iterate(impr) { + int i = improvement_exists(impr); + } impr_type_iterate_end; + ai_do_first_activities(pplayer); flush_packets(); /* AIs can be such spammers... */ }
memread-diff.diff.gz
civgame+1000.sav.gz
|