View Issue Details

IDProjectCategoryView StatusLast Update
0005765Spring engineGeneralpublic2017-09-18 00:54
ReporterGoogle_Frog Assigned To 
PrioritynormalSeveritycrashReproducibilityhave not tried
Status closedResolutionno change required 
Product Version103.0 +git 
Summary0005765: 103.0.1-1408 Hang
Descriptionhttps://github.com/ZeroK-RTS/CrashReports/issues/2072
https://github.com/ZeroK-RTS/CrashReports/issues/2074
TagsNo tags attached.
Checked infolog.txt for Errors

Activities

Kloot

2017-09-16 13:13

developer   ~0018399

Last edited: 2017-09-16 13:14

2072: "This stacktrace indicates a problem with a skirmish AI." (CircuitAI overtaxing the engine pathfinder through a callback)

2074: [f=0045230] Error: [ExitSpringProcess] errorMsg="std::bad_alloc" msgCaption="Spring: caught std::bad_alloc" mainThread=1 (in some kind of massive AI game)

lamer

2017-09-16 18:53

reporter   ~0018401

2072:
Please elaborate overtaxing part.
Circuit uses N^2/2 calls to Pathing::GetApproximateLength, where N is number of metal spots. It didn't overtax speedmetal maps where it always use N=1000, but World_FFA with 316 spots failed. Doesn't seem right (though it may behave poorly on 32bit win system as i mostly test AI on 64bit linux).

2074:
The crash doesn't have any SkirmishAI.dll inside infolog - it's not the hoster of AI, the person was not affected by AI binary, It's most likely engine bug.

lamer

2017-09-16 19:10

reporter   ~0018402

2072: My bad: N=300~100 for speedmetal maps. But then i'm not sure what are the limitations for calling Pathing::GetApproximateLength; World_FFA works fine and loads fast on 64bit linux.

Kloot

2017-09-16 19:19

developer   ~0018403

on closer inspection, 2072 might also have been an engine-side infinite loop so it would be really useful to know what the specific inputs to GetPathLength were.

  /opt/mxe/usr/lib/gcc/i686-w64-mingw32/4.8.1/include/c++/bits/stl_heap.h:341
  rts/Sim/Path/Default/IPathFinder.cpp:221
  rts/Sim/Path/Default/IPathFinder.cpp:147
  rts/Sim/Path/Default/PathManager.cpp:170
  rts/Sim/Path/Default/PathManager.cpp:348
  rts/ExternalAI/AICallback.cpp:722
  rts/ExternalAI/AICallback.cpp:741

lamer

2017-09-17 00:02

reporter   ~0018405

I just had a chance to test Circuit win32 version - AI inits on World_FFA for 25-30 seconds compared to 1 second on linux64, news to me.
"CircuitAI overtaxing the engine pathfinder through a callback" is probably correct.
Will have to figure out how to reduce number of Pathing::GetApproximateLength calls (or replace it with raw geometry distance).

Kloot

2017-09-17 01:38

developer   ~0018406

Last edited: 2017-09-17 01:40

an initialisation time of 25 seconds does seem more reasonable since (N^2)/2 for N=316 equals 50000 GetPathLengths or 0.5ms per call. check if linux64 Circuit really makes that many and they all reach the engine.

lamer

2017-09-17 22:54

reporter   ~0018415

2072: My bad, again. Init time is 0000010:0000030 seconds regardless of platform. Going to reduce number of GetPathLengths calls. Thanks for hints!

Kloot

2017-09-18 00:54

developer   ~0018416

NCR then (2074 left no useful trace but will probably reoccur)

Issue History

Date Modified Username Field Change
2017-09-16 12:51 Google_Frog New Issue
2017-09-16 13:13 Kloot Note Added: 0018399
2017-09-16 13:14 Kloot Note Edited: 0018399
2017-09-16 13:14 Kloot Note Edited: 0018399
2017-09-16 18:53 lamer Note Added: 0018401
2017-09-16 19:10 lamer Note Added: 0018402
2017-09-16 19:19 Kloot Note Added: 0018403
2017-09-17 00:02 lamer Note Added: 0018405
2017-09-17 01:38 Kloot Note Added: 0018406
2017-09-17 01:41 Kloot Note Edited: 0018406
2017-09-17 22:54 lamer Note Added: 0018415
2017-09-18 00:54 Kloot Status new => closed
2017-09-18 00:54 Kloot Resolution open => no change required
2017-09-18 00:54 Kloot Note Added: 0018416