#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-08 23:33 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-08 23:33 Updated by: alain_bkr Comment: Yes, overzealous probably, even more if it is normal case. (and i hope unit count is refreshed when a unit die or we have another bug :-) But i still try to understand/learn the ai part. Breakpoint 2, auto_settler_findwork (pplayer=<optimized out>, punit=<optimized out>, state=<optimized out>, recursion=<optimized out>) at ../../../server/advisors/autosettlers.c:917 917 { (gdb) bt #0 auto_settler_findwork (pplayer=<optimized out>, punit=<optimized out>, state=<optimized out>, recursion=<optimized out>) at ../../../server/advisors/autosettlers.c:917 #1 0x0000555555e65cd5 in auto_settler_setup_work (pplayer=<optimized out>, punit=0x613000020800, state=<optimized out>, recursion=<optimized out>, path=<optimized out>, best_tile=<optimized out>, best_act=<optimized out>, best_target=<optimized out>, completion_time=<optimized out>) at ../../../server/advisors/autosettlers.c:1044 #2 0x000055555639e482 in dai_auto_settler_run (ait=<optimized out>, pplayer=<optimized out>, punit=<optimized out>, state=<optimized out>) at ../../../ai/default/daisettler.c:1165 #3 0x0000555555e6a929 in auto_settlers_player (pplayer=pplayer at entry=0x62100003d500) at ../../../server/advisors/autosettlers.c:1218 #4 0x0000555555db3790 in end_phase () at ../../server/srv_main.c:1434 #5 0x0000555555dae335 in srv_running () at ../../server/srv_main.c:2913 #6 0x0000555555da88f4 in srv_main () at ../../server/srv_main.c:3480 #7 0x0000555555d91851 in main (argc=<optimized out>, argv=<optimized out>) at ../../server/civserver.c:486 (gdb) What surprises me currently is the need of recursion, as it seems we are already in a loop over all units. In human order , the first call is settler_run , inside a unit_list_iterate_safe ../../../server/advisors/autosettlers.c:1218 CALL_PLR_AI_FUNC(settler_run, pplayer, pplayer, punit, state); } } } } unit_list_iterate_safe_end; --------------------------------------------------------------------- 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