diasurgical / devilutionX

Diablo build for modern operating systems
Other
7.99k stars 781 forks source link

MPQ free list error after switch to Hellfire #4356

Closed schojo44 closed 2 years ago

schojo44 commented 2 years ago

Important information Windows 11 x64 21H2 (OS Build 22000.593) / DevilutionX-current 3309ca8 / Test build artifact

Describe Game crashes, badly.

To Reproduce Steps to reproduce the behavior:

  1. Start DevX as Diablo and open a zerotier private game (might work on others)
  2. Move a step, choose "New Game"
  3. Go to Settings, switch to Hellfire
  4. Open a zerotier private game (might work on others) and the game freezes and then crashes

Expected behavior Well, duh...

Screenshots image

Additional context Log from starting the game with --verbose:

C:\Users\USERNAME\Desktop>DevX-current.lnk

C:\Users\USERNAME\Desktop>VERBOSE: Paths:
    base: C:\Tools\devilutionx_current\devilutionx\
    pref: C:\Users\USERNAME\AppData\Roaming\diasurgical\devilution\
  config: C:\Users\USERNAME\AppData\Roaming\diasurgical\devilution\
  assets: C:\Tools\devilutionx_current\devilutionx\assets/
VERBOSE: MPQ search paths:
     1. 'C:\Tools\devilutionx_current\devilutionx\'
     2. 'C:\Users\USERNAME\AppData\Roaming\diasurgical\devilution\'
     3. 'C:\Program Files (x86)\GOG Galaxy\Games\Diablo/'
     4. 'C:\Program Files (x86)\GOG Galaxy\Games\Diablo/hellfire/'
     5. ''
VERBOSE:   Found: devilutionx.mpq in C:\Tools\devilutionx_current\devilutionx\
VERBOSE: Missing: fonts.mpq
VERBOSE: Paths:
    base: C:\Tools\devilutionx_current\devilutionx\
    pref: C:\Users\USERNAME\AppData\Roaming\diasurgical\devilution\
  config: C:\Users\USERNAME\AppData\Roaming\diasurgical\devilution\
  assets: C:\Tools\devilutionx_current\devilutionx\assets/
VERBOSE: MPQ search paths:
     1. 'C:\Tools\devilutionx_current\devilutionx\'
     2. 'C:\Users\USERNAME\AppData\Roaming\diasurgical\devilution\'
     3. 'C:\Program Files (x86)\GOG Galaxy\Games\Diablo/'
     4. 'C:\Program Files (x86)\GOG Galaxy\Games\Diablo/hellfire/'
     5. ''
VERBOSE:   Found: DIABDAT.MPQ in C:\Tools\devilutionx_current\devilutionx\
VERBOSE:   Found: hellfire.mpq in C:\Tools\devilutionx_current\devilutionx\
VERBOSE:   Found: hfmonk.mpq in C:\Tools\devilutionx_current\devilutionx\
VERBOSE: Missing: hfbard.mpq
VERBOSE: Missing: hfbarb.mpq
VERBOSE:   Found: hfmusic.mpq in C:\Tools\devilutionx_current\devilutionx\
VERBOSE:   Found: hfvoice.mpq in C:\Tools\devilutionx_current\devilutionx\
INFO: Keymapper: no name found for key 'QuickSpell5'
INFO: Keymapper: no name found for key 'QuickSpell6'
INFO: Keymapper: no name found for key 'QuickSpell7'
INFO: Keymapper: no name found for key 'QuickSpell8'
INFO: Keymapper: no name found for key 'QuickSpell9'
INFO: Keymapper: no name found for key 'QuickSpell10'
INFO: Keymapper: no name found for key 'QuickSpell11'
INFO: Keymapper: no name found for key 'QuickSpell12'
INFO: Keymapper: no name found for key 'QuickSave'
INFO: Keymapper: no name found for key 'QuickLoad'
INFO: Keymapper: no name found for key 'QuitGame'
INFO: Keymapper: no name found for key 'StopHero'
INFO: Created renderer: direct3d11
DEBUG: Couldn't open C:\Tools\devilutionx_current\devilutionx\assets/en.mo
DEBUG: Couldn't open C:\Tools\devilutionx_current\devilutionx\assets/en.gmo
DEBUG: Couldn't open C:\Tools\devilutionx_current\devilutionx\assets/ui_art\hero0.pcx
DEBUG: Couldn't open C:\Tools\devilutionx_current\devilutionx\assets/ui_art\hero1.pcx
DEBUG: Couldn't open C:\Tools\devilutionx_current\devilutionx\assets/ui_art\hero2.pcx
DEBUG: Couldn't open C:\Tools\devilutionx_current\devilutionx\assets/ui_art\hero3.pcx
DEBUG: Couldn't open C:\Tools\devilutionx_current\devilutionx\assets/ui_art\hero4.pcx
DEBUG: Couldn't open C:\Tools\devilutionx_current\devilutionx\assets/ui_art\hero5.pcx
DEBUG: Couldn't open C:\Tools\devilutionx_current\devilutionx\assets/ui_art\hero6.pcx
VERBOSE: Aulib sampleRate=22050 channels=2 frameSize=221 format=0x8120
DEBUG: Control: device None -> KeyboardAndMouse, mode None -> KeyboardAndMouse
DEBUG: Couldn't open C:\Tools\devilutionx_current\devilutionx\assets/ui_art\hero0.pcx
DEBUG: Couldn't open C:\Tools\devilutionx_current\devilutionx\assets/ui_art\hero1.pcx
DEBUG: Couldn't open C:\Tools\devilutionx_current\devilutionx\assets/ui_art\hero2.pcx
DEBUG: Couldn't open C:\Tools\devilutionx_current\devilutionx\assets/ui_art\hero3.pcx
DEBUG: Couldn't open C:\Tools\devilutionx_current\devilutionx\assets/ui_art\hero4.pcx
DEBUG: Couldn't open C:\Tools\devilutionx_current\devilutionx\assets/ui_art\hero5.pcx
DEBUG: Couldn't open C:\Tools\devilutionx_current\devilutionx\assets/ui_art\hero6.pcx
INFO: Keymapper: no name found for key 'QuickSpell5'
INFO: Keymapper: no name found for key 'QuickSpell6'
INFO: Keymapper: no name found for key 'QuickSpell7'
INFO: Keymapper: no name found for key 'QuickSpell8'
INFO: Keymapper: no name found for key 'QuickSpell9'
INFO: Keymapper: no name found for key 'QuickSpell10'
INFO: Keymapper: no name found for key 'QuickSpell11'
INFO: Keymapper: no name found for key 'QuickSpell12'
INFO: Keymapper: no name found for key 'QuickSave'
INFO: Keymapper: no name found for key 'QuickLoad'
INFO: Keymapper: no name found for key 'QuitGame'
INFO: Keymapper: no name found for key 'StopHero'
INFO: ZeroTier: ZTS_EVENT_ADDR_NEW_IP6, addr=FDA8:4AC5:C10A:7EBB:5F99:9341:ACB0:A66D
INFO: ZeroTier: ZTS_EVENT_NODE_ONLINE, nodeId=41acb0a66d
INFO: ZeroTier: ZTS_EVENT_NETWORK_READY_IP6, networkId=a84ac5c10a7ebb5f
INFO: Keymapper: no name found for key 'QuickSpell5'
INFO: Keymapper: no name found for key 'QuickSpell6'
INFO: Keymapper: no name found for key 'QuickSpell7'
INFO: Keymapper: no name found for key 'QuickSpell8'
INFO: Keymapper: no name found for key 'QuickSpell9'
INFO: Keymapper: no name found for key 'QuickSpell10'
INFO: Keymapper: no name found for key 'QuickSpell11'
INFO: Keymapper: no name found for key 'QuickSpell12'
INFO: Keymapper: no name found for key 'QuickSave'
INFO: Keymapper: no name found for key 'QuickLoad'
INFO: Keymapper: no name found for key 'QuitGame'
INFO: Keymapper: no name found for key 'StopHero'
DEBUG: Opening C:\Users\USERNAME\AppData\Roaming\diasurgical\devilution\multi_2.sv
DEBUG: GetFileSize("C:\Users\USERNAME\AppData\Roaming\diasurgical\devilution\multi_2.sv") = 91991
VERBOSE: new std::fstream("C:\Users\USERNAME\AppData\Roaming\diasurgical\devilution\multi_2.sv", std::ios::binary | std::ios::in | std::ios::out)
VERBOSE: read(out, 104)
VERBOSE: read(out, 32768)
VERBOSE: read(out, 32768)
VERBOSE: seekp(65648, std::ios::beg)
VERBOSE: write(data, 1017)
VERBOSE: seekp(65640, std::ios::beg)
VERBOSE: write(data, 8)
VERBOSE: seekp(1017, std::ios::cur)
VERBOSE: seekp(66944, std::ios::beg)
VERBOSE: write(data, 100)
VERBOSE: seekp(66936, std::ios::beg)
VERBOSE: write(data, 8)
VERBOSE: seekp(100, std::ios::cur)
VERBOSE: seekp(79545, std::ios::beg)
VERBOSE: write(data, 2655)
VERBOSE: write(data, 2489)
VERBOSE: write(data, 2490)
VERBOSE: write(data, 2476)
VERBOSE: write(data, 2336)
VERBOSE: seekp(79521, std::ios::beg)
VERBOSE: write(data, 24)
VERBOSE: seekp(12446, std::ios::cur)
DEBUG: Closing C:\Users\USERNAME\AppData\Roaming\diasurgical\devilution\multi_2.sv
VERBOSE: seekp(0, std::ios::beg)
VERBOSE: write(data, 104)
VERBOSE: write(data, 32768)
VERBOSE: write(data, 32768)
DEBUG: ResizeFile("C:\Users\USERNAME\AppData\Roaming\diasurgical\devilution\multi_2.sv", 91991)
DEBUG: Opening C:\Users\USERNAME\AppData\Roaming\diasurgical\devilution\stash.sv
DEBUG: GetFileSize("C:\Users\USERNAME\AppData\Roaming\diasurgical\devilution\stash.sv") = 148183
VERBOSE: new std::fstream("C:\Users\USERNAME\AppData\Roaming\diasurgical\devilution\stash.sv", std::ios::binary | std::ios::in | std::ios::out)
VERBOSE: read(out, 104)
VERBOSE: read(out, 32768)
VERBOSE: read(out, 32768)
VERBOSE: seekp(120714, std::ios::beg)
VERBOSE: write(data, 2794)
VERBOSE: write(data, 2807)
VERBOSE: write(data, 2736)
VERBOSE: write(data, 2764)
VERBOSE: write(data, 2692)
VERBOSE: write(data, 2645)
VERBOSE: write(data, 2747)
VERBOSE: write(data, 2710)
VERBOSE: write(data, 2685)
VERBOSE: write(data, 2745)
VERBOSE: write(data, 144)
VERBOSE: seekp(120666, std::ios::beg)
VERBOSE: write(data, 48)
VERBOSE: seekp(27469, std::ios::cur)
DEBUG: Closing C:\Users\USERNAME\AppData\Roaming\diasurgical\devilution\stash.sv
VERBOSE: seekp(0, std::ios::beg)
VERBOSE: write(data, 104)
VERBOSE: write(data, 32768)
VERBOSE: write(data, 32768)
DEBUG: ResizeFile("C:\Users\USERNAME\AppData\Roaming\diasurgical\devilution\stash.sv", 148183)
DEBUG: Couldn't open C:\Tools\devilutionx_current\devilutionx\assets/ui_art\hero0.pcx
DEBUG: Couldn't open C:\Tools\devilutionx_current\devilutionx\assets/ui_art\hero1.pcx
DEBUG: Couldn't open C:\Tools\devilutionx_current\devilutionx\assets/ui_art\hero2.pcx
DEBUG: Couldn't open C:\Tools\devilutionx_current\devilutionx\assets/ui_art\hero3.pcx
DEBUG: Couldn't open C:\Tools\devilutionx_current\devilutionx\assets/ui_art\hero4.pcx
DEBUG: Couldn't open C:\Tools\devilutionx_current\devilutionx\assets/ui_art\hero5.pcx
DEBUG: Couldn't open C:\Tools\devilutionx_current\devilutionx\assets/ui_art\hero6.pcx
DEBUG: Couldn't open C:\Tools\devilutionx_current\devilutionx\assets/ui_art\hero0.pcx
DEBUG: Couldn't open C:\Tools\devilutionx_current\devilutionx\assets/ui_art\hero1.pcx
DEBUG: Couldn't open C:\Tools\devilutionx_current\devilutionx\assets/ui_art\hero2.pcx
DEBUG: Couldn't open C:\Tools\devilutionx_current\devilutionx\assets/ui_art\hero3.pcx
DEBUG: Couldn't open C:\Tools\devilutionx_current\devilutionx\assets/ui_art\hero4.pcx
DEBUG: Couldn't open C:\Tools\devilutionx_current\devilutionx\assets/ui_art\hero5.pcx
DEBUG: Couldn't open C:\Tools\devilutionx_current\devilutionx\assets/ui_art\hero6.pcx
INFO: Keymapper: no name found for key 'QuickSpell5'
INFO: Keymapper: no name found for key 'QuickSpell6'
INFO: Keymapper: no name found for key 'QuickSpell7'
INFO: Keymapper: no name found for key 'QuickSpell8'
INFO: Keymapper: no name found for key 'QuickSpell9'
INFO: Keymapper: no name found for key 'QuickSpell10'
INFO: Keymapper: no name found for key 'QuickSpell11'
INFO: Keymapper: no name found for key 'QuickSpell12'
INFO: Keymapper: no name found for key 'QuickSave'
INFO: Keymapper: no name found for key 'QuickLoad'
INFO: Keymapper: no name found for key 'QuitGame'
INFO: Keymapper: no name found for key 'StopHero'
DEBUG: Opening C:\Users\USERNAME\AppData\Roaming\diasurgical\devilution\multi_0.hsv
DEBUG: GetFileSize("C:\Users\USERNAME\AppData\Roaming\diasurgical\devilution\multi_0.hsv") = 78224
VERBOSE: new std::fstream("C:\Users\USERNAME\AppData\Roaming\diasurgical\devilution\multi_0.hsv", std::ios::binary | std::ios::in | std::ios::out)
VERBOSE: read(out, 104)
VERBOSE: read(out, 32768)
VERBOSE: read(out, 32768)
VERBOSE: seekp(65648, std::ios::beg)
VERBOSE: write(data, 946)
VERBOSE: seekp(65640, std::ios::beg)
VERBOSE: write(data, 8)
VERBOSE: seekp(946, std::ios::cur)
VERBOSE: seekp(66944, std::ios::beg)
VERBOSE: write(data, 99)
VERBOSE: seekp(66936, std::ios::beg)
VERBOSE: write(data, 8)
VERBOSE: seekp(99, std::ios::cur)
VERBOSE: seekp(67108, std::ios::beg)
VERBOSE: write(data, 2523)
VERBOSE: write(data, 2513)
VERBOSE: write(data, 1990)
VERBOSE: write(data, 1787)
VERBOSE: write(data, 2295)
VERBOSE: write(data, 8)
VERBOSE: seekp(67080, std::ios::beg)
VERBOSE: write(data, 28)
VERBOSE: seekp(11116, std::ios::cur)
DEBUG: Closing C:\Users\USERNAME\AppData\Roaming\diasurgical\devilution\multi_0.hsv
VERBOSE: seekp(0, std::ios::beg)
VERBOSE: write(data, 104)
VERBOSE: write(data, 32768)
VERBOSE: write(data, 32768)
DEBUG: ResizeFile("C:\Users\USERNAME\AppData\Roaming\diasurgical\devilution\multi_0.hsv", 78224)
DEBUG: Opening C:\Users\USERNAME\AppData\Roaming\diasurgical\devilution\stash.hsv
DEBUG: GetFileSize("C:\Users\USERNAME\AppData\Roaming\diasurgical\devilution\stash.hsv") = 69512
VERBOSE: new std::fstream("C:\Users\USERNAME\AppData\Roaming\diasurgical\devilution\stash.hsv", std::ios::binary | std::ios::in | std::ios::out)
ERROR: Error
MPQ free list error
qndel commented 2 years ago

interesting, so it looks like the problem was with stash

StephenCWills commented 2 years ago

This is probably the same one @ikonomov reported on Discord a while ago.

  1. create single player in Diablo, place an item in the stash, save
  2. create single player in Hellfire, place an item in the stash, save then
  3. create a multiplayer game in Diablo, place an item in the stash
  4. switch to Hellfire, upon trying to start a multiplayer game, the game crashes on the loading screen
schojo44 commented 2 years ago

deleted stash.hsv and it works like a charm