Globulation 2 crashed in NewNicowar::update_farming (AINicowar.cpp:2647) on the Island of the Renfur level with one of each AI in the game. At Gradient::get_height(), x is 21, y is -1, and width=128, which results in an index of -107 into the gradients array. Visual Studio 2022 then halts the program because the index is invalid.
Should be easily fixable by checking y>0 before passing y-1 to water_gradient.get_height() or adding a modulo operator somewhere.
I noticed this crash when profiling my PR 120 with Intel vTune plugin for Visual Studio and then checked out master branch, and it crashes the same way.
Backtrace below:
glob2.exe!std::vector<short,std::allocator<short>>::operator[](const unsigned __int64 _Pos) Line 1899
at C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.40.33807\include\vector(1899)
glob2.exe!AIEcho::Gradients::Gradient::get_height(int posx, int posy) Line 929
at D:\Linux_home\nathan\src\glob2\src\AIEcho.cpp(929)
glob2.exe!NewNicowar::update_farming(AIEcho::Echo & echo) Line 2647
at D:\Linux_home\nathan\src\glob2\src\AINicowar.cpp(2647)
glob2.exe!NewNicowar::tick(AIEcho::Echo & echo) Line 412
at D:\Linux_home\nathan\src\glob2\src\AINicowar.cpp(412)
glob2.exe!AIEcho::Echo::getOrder() Line 5054
at D:\Linux_home\nathan\src\glob2\src\AIEcho.cpp(5054)
glob2.exe!AI::getOrder(bool paused) Line 105
at D:\Linux_home\nathan\src\glob2\src\AI.cpp(105)
glob2.exe!Engine::run() Line 399
at D:\Linux_home\nathan\src\glob2\src\Engine.cpp(399)
glob2.exe!Glob2::run(int argc, char * * argv) Line 347
at D:\Linux_home\nathan\src\glob2\src\Glob2.cpp(347)
glob2.exe!SDL_main(int argc, char * * argv) Line 442
at D:\Linux_home\nathan\src\glob2\src\Glob2.cpp(442)
glob2.exe!main_getcmdline() Line 80
at D:\Linux_home\nathan\src\glob2\vcpkg_installed\x64-windows\vcpkg\blds\sdl2\src\ase-2.30.3-180151d870.clean\src\main\windows\SDL_windows_main.c(80)
[External Code]
To reproduce:
- Custom Game
- Choose Island of Renfur map
- Add one each of the various AIs
- Start game
- Wait 30 seconds
- Globulation crashes
Actual results:
Visual Studio 2022 pops up a "Vector subscript out of range" error.
Expected results:
Didn't expect it to crash.
Level: Island of the Renfur
AIs: One each of Numbi Castor WarRush ReachToInfinity Nicowar
Commit: sprite-sheet (PR #120) 4cd6bded (Jun 8, 2024) Also crashes with master bf277676 (Jun 6, 2024)
At Gradient::get_height: x=21 y=-1 width=128
Visual Studio settings that may be relevant:
- Optimization: MaxSpeed
- Basic Runtime Checks: Default
- DebugInformationFormat: EditAndContinue
Windows version: 10 Home 22H2 (OS Build 19045.4412)
Compiler:
MSBuild version 17.10.4+10fbfbf2e for .NET Framework
17.10.4.21802
Full error:
Debug Assertion Failed!
Program: D:\Linux_home\nathan\src\glob2\x64\Debug SDL\glob2.exe
File: C\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.40.33807\include\vector
Line: 1900
Expression: vector subscript out of range
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.
(Press Retry to debug the application)
Globulation 2 crashed in NewNicowar::update_farming (AINicowar.cpp:2647) on the Island of the Renfur level with one of each AI in the game. At Gradient::get_height(), x is 21, y is -1, and width=128, which results in an index of -107 into the gradients array. Visual Studio 2022 then halts the program because the index is invalid.
Should be easily fixable by checking y>0 before passing y-1 to water_gradient.get_height() or adding a modulo operator somewhere.
I noticed this crash when profiling my PR 120 with Intel vTune plugin for Visual Studio and then checked out master branch, and it crashes the same way.
Backtrace below:
To reproduce:
Actual results:
Visual Studio 2022 pops up a "Vector subscript out of range" error.
Expected results:
Didn't expect it to crash.
Level: Island of the Renfur
AIs: One each of Numbi Castor WarRush ReachToInfinity Nicowar
Commit:
sprite-sheet (PR #120) 4cd6bded (Jun 8, 2024)Also crashes withmaster bf277676 (Jun 6, 2024)At Gradient::get_height: x=21 y=-1 width=128
Visual Studio settings that may be relevant:
Windows version: 10 Home 22H2 (OS Build 19045.4412)
Compiler:
Full error: