View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0005765 | Spring engine | General | public | 2017-09-16 12:51 | 2017-09-18 00:54 |
| Reporter | Google_Frog | Assigned To | |||
| Priority | normal | Severity | crash | Reproducibility | have not tried |
| Status | closed | Resolution | no change required | ||
| Product Version | 103.0 +git | ||||
| Summary | 0005765: 103.0.1-1408 Hang | ||||
| Description | https://github.com/ZeroK-RTS/CrashReports/issues/2072 https://github.com/ZeroK-RTS/CrashReports/issues/2074 | ||||
| Tags | No tags attached. | ||||
| Checked infolog.txt for Errors | |||||
|
|
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) |
|
|
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. |
|
|
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. |
|
|
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 |
|
|
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). |
|
|
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. |
|
|
2072: My bad, again. Init time is 0000010:0000030 seconds regardless of platform. Going to reduce number of GetPathLengths calls. Thanks for hints! |
|
|
NCR then (2074 left no useful trace but will probably reoccur) |
| 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 |