#47992: server/advisors/autosettlers.c::929]: assertion 'recursion <= unit_list_size(pplayer->units)' failed. Open Date: 2023-05-08 00:21 Last Update: 2023-05-09 01:03 URL for this Ticket: https://osdn.net//projects/freeciv/ticket/47992 RSS feed for this Ticket: https://osdn.net/ticket/ticket_rss.php?group_id=12505&tid=47992 --------------------------------------------------------------------- Last Changes/Comment on this Ticket: 2023-05-09 01:03 Updated by: alain_bkr Comment: ./ai/classic/classicai.c:665: ai->funcs.settler_run = cai_auto_settler_run; ./ai/classic/classicai.c:411 /**********************************************************************//** Call default ai with classic ai type as parameter. **************************************************************************/ static void cai_auto_settler_run(struct player *pplayer, struct unit *punit, struct settlermap *state) { struct ai_type *deftype = classic_ai_get_self(); dai_auto_settler_run(deftype, pplayer, punit, state); } ai/default/daisettler.c:1012: void dai_auto_settler_run( try different stuff (build city, do something asked for by a city , take a boat, build a city line:1165 if (best_tile != NULL && auto_settler_setup_work(pplayer, ... ) <--- first call && pcity != NULL) { clear_worker_tasks(pcity); } ../../../server/advisors/autosettlers.c : 991 /**********************************************************************//** Setup our settler to do the work it has found. Returns TRUE if started actual work. **************************************************************************/ bool auto_settler_setup_work(struct player *pplayer, struct unit *punit, ... /* Mark the square as taken. */ displaced = player_unit_by_number(pplayer, state[tile_index(best_tile)].enroute); ... line:1044 if (displaced) { .... auto_settler_findwork(pplayer, displaced, state, recursion + 1); <------ our line 1044, begins a recursion if (NULL == player_unit_by_number(pplayer, saved_id)) { /* Actions of the displaced settler somehow caused this settler * to die. (maybe by recursively giving control back to this unit) */ return FALSE; } ../../../server/advisors/autosettlers.c:909 /**********************************************************************//** Find some work for our settlers and/or workers. **************************************************************************/ #define LOG_SETTLER LOG_DEBUG void auto_settler_findwork(...) tasks asked for by cities line 955 : if (auto_settler_setup_work Last try to find something again line 970: if (unit_has_type_flag(punit, UTYF_SETTLERS)) { line 981: auto_settler_setup_work( } --------------------------------------------------------------------- Ticket Status: Reporter: alain_bkr Owner: (None) Type: Bugs Status: Open Priority: 5 - Medium MileStone: (None) Component: Server Severity: 5 - Medium Resolution: None --------------------------------------------------------------------- Ticket details: Freeciv version 3.1.0-beta1+ (version bêta) (origin/S3_1 a37fd14dd HEAD afdfd4fbf (+10) ) I found this error in serv.log (run04_clang-15/loop.230507-100844.done/Sz1-Ai002-Lm59-230507_192610.done/serv.log) 1: [T055 - 2023/05/07 19:26:26] in auto_settler_findwork() [../../../server/advisors/autosettlers.c::929]: assertion 'recursion <= unit_list_size(pplayer->units)' failed. 1: [T055 - 2023/05/07 19:26:26] in auto_settler_findwork() [../../../server/advisors/autosettlers.c::929]: Please report this message at https://osdn.net/projects/freeciv/ticket/ -- Ticket information of Freeciv project Freeciv Project is hosted on OSDN Project URL: https://osdn.net/projects/freeciv/ OSDN: https://osdn.net URL for this Ticket: https://osdn.net/projects/freeciv/ticket/47992 RSS feed for this Ticket: https://osdn.net/ticket/ticket_rss.php?group_id=12505&tid=47992