[Issue Report]: segfault load save
johndoe71rus opened this issue · 2 comments
johndoe71rus commented
Operating System
Linux x64
DevilutionX version
Custom build (please specify commit ID)
Describe
1.6.0-dev-Release-2ddcc7118
ERROR: Asset not found: lua\user.lua
./hellfire.sh: строка 3: 1148505 Segmentation error
at load save
linux x64 lubuntu 22.04
To Reproduce
- load save
- get error
Expected Behavior
No response
Additional context
johndoe71rus commented
./hellfire.sh just script
#!/bin/bash
/home/johndoe/game/diablo/hellfire/devilutionx -n
StephenCWills commented
Stack trace for crash:
devilutionx.exe!std::vector<devilution::MissileFileData,std::allocator<devilution::MissileFileData>>::operator[](const unsigned __int64 _Pos) Line 1893 C++
devilutionx.exe!devilution::GetMissileSpriteData(devilution::MissileGraphicID graphicId) Line 252 C++
> devilutionx.exe!devilution::missiles_process_charge() Line 4181 C++
devilutionx.exe!devilution::LoadGame(bool firstflag) Line 2536 C++
devilutionx.exe!devilution::ShowProgress(devilution::interface_mode uMsg) Line 338 C++
devilutionx.exe!devilution::`anonymous namespace'::StartGame(devilution::interface_mode uMsg) Line 183 C++
devilutionx.exe!devilution::`anonymous namespace'::RunGameLoop(devilution::interface_mode uMsg) Line 824 C++
devilutionx.exe!devilution::StartGame(bool bNewGame, bool bSinglePlayer) Line 2515 C++
devilutionx.exe!devilution::`anonymous namespace'::InitMenu(devilution::_selhero_selections type) Line 59 C++
devilutionx.exe!devilution::`anonymous namespace'::InitSinglePlayerMenu() Line 70 C++
devilutionx.exe!devilution::mainmenu_loop() Line 161 C++
devilutionx.exe!devilution::DiabloMain(int argc, char * * argv) Line 2590 C++
devilutionx.exe!SDL_main(int argc, char * * argv) Line 52 C++
devilutionx.exe!main_getcmdline() Line 80 C
devilutionx.exe!WinMain(HINSTANCE__ * hInst, HINSTANCE__ * hPrev, char * szCmdLine, int sw) Line 110 C
The issue is that it's trying to retrieve the sprite for missile._miAnimType == MissileGraphicID::None
in missiles_process_charge()
. The missile in question is missile._miType == MissileID::Search
. Seems to me the graphic type of "None" is appropriate so we can probably just check for it at the top of the loop.