[Freeciv-tickets] [freeciv] #47992: server/advisors/autosettlers.c::929]: assertion 'recursion <= unit_list_size(pplayer->units)' failed.

Back to archive index
OSDN Ticket System norep****@osdn*****
Tue May 9 06:33:45 JST 2023


#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



More information about the Freeciv-tickets mailing list
Back to archive index