PC Vault Crashing - Investigative Request
It's been beaten to death at this point, but I think we all agree that the PC crashes during Vault are persistent pain points that Blizzard has failed to diagnose and address.
I have been using ProcessMonitor (procmon.exe) to watch for crashes and track what files/scripts/keys were being loaded by DI during Vault.
- resource28.mpk appears to be the generalized tileset for Court of Whispers as well as used within Vault. While the game makes numerous calls to this file, there doesn't seem to be any crash associated with any other CoW activities so I don't think it's a map-related resource issue.
- There is a script that executes when zoning between floors. This script is where the crashes seem to occur according to procmon. These scripts should generally be handling player data transition, loading new map assets, and communicating with the server(s).
- There's numerous "CreateFile" operations, some fail due to name conflicts or permissions issues. This happens near constantly while playing DI, so not a likely suspect in the crashing.
- There's "RemoteProtocolQuery" operations that fail, but I've yet to diagnose these outside of Vault and whether the failures are unique to Vault.
I'll work on parsing a clean and brief log to add here later tonight with the next Vault run...
BUT
Another player mentioned a key piece of information that may have given us a lead: Their alt characters on the same account and server do not crash in Vault.
================
My alt: Necro - P335 (Vanq/TH/Glad trees filled)>! No other significant inventory discrepancies from my Main (pearls/gems/etc both have at least 1 in bag). Both have a weapon in Tableau with invocation selected. Both have Cursed items equipped.!<
Just now I ran Vault successfully without crashing on my alt, same account and server, while my main character continues to crash.
I now believe there is a difference between character data that leads to the PC client crashing when the "zoning script" is loading you to a new floor...
My current suspect: Fishing Rod
There's enough confirmation of ongoing crashes with/without various stages of the fishing rod... but that doesn't rule out some specific issue between characters...
- H8 on both characters?
- Any item/gem/currency differences?
- Unlocked emote differences?
================
ProcMon dump of crash Floor 1 > Floor 2:
"7:31:32.2895112 PM","DiabloImmortal.exe","7488","Thread Create","","SUCCESS","Thread ID: 20520"
"7:31:34.5573064 PM","DiabloImmortal.exe","7488","ReadFile","D:\BattleNet\Diablo Immortal\Package\MPK\Resources28.mpk","SUCCESS","Offset: 121,696,148, Length: 16,384"
"7:31:34.6058711 PM","DiabloImmortal.exe","7488","CreateFile","D:\BattleNet\Diablo Immortal\LocalData\Patch\Patch\Sounds\windows_bnk\UI_Shadow_CampMission_Treasury.bnk","PATH NOT FOUND","Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: Read, Write, AllocationSize: n/a"
"7:31:34.6059451 PM","DiabloImmortal.exe","7488","CreateFile","D:\BattleNet\Diablo Immortal\LocalData\Patch\Sounds\windows_bnk\UI_Shadow_CampMission_Treasury.bnk","NAME NOT FOUND","Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: Read, Write, AllocationSize: n/a"
"7:31:34.6059906 PM","DiabloImmortal.exe","7488","CreateFile","D:\BattleNet\Diablo Immortal\Patch\Sounds\windows_bnk\UI_Shadow_CampMission_Treasury.bnk","PATH NOT FOUND","Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: Read, Write, AllocationSize: n/a"
"7:31:34.6060563 PM","DiabloImmortal.exe","7488","CreateFile","D:\BattleNet\Diablo Immortal\LocalData\Patch\Sounds\windows_bnk\UI_Shadow_CampMission_Treasury.bnk","NAME NOT FOUND","Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: Read, Write, AllocationSize: n/a"
"7:31:34.6061221 PM","DiabloImmortal.exe","7488","CreateFile","D:\BattleNet\Diablo Immortal\LocalData\Patch\Resources\Sounds\windows_bnk\UI_Shadow_CampMission_Treasury.bnk","PATH NOT FOUND","Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: Read, Write, AllocationSize: n/a"
"7:31:34.6061764 PM","DiabloImmortal.exe","7488","CreateFile","D:\BattleNet\Diablo Immortal\LocalData\Resources\Sounds\windows_bnk\UI_Shadow_CampMission_Treasury.bnk","PATH NOT FOUND","Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: Read, Write, AllocationSize: n/a"
"7:31:34.6062218 PM","DiabloImmortal.exe","7488","CreateFile","D:\BattleNet\Diablo Immortal\Resources\Sounds\windows_bnk\UI_Shadow_CampMission_Treasury.bnk","PATH NOT FOUND","Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: Read, Write, AllocationSize: n/a"
"7:31:34.6062637 PM","DiabloImmortal.exe","7488","ReadFile","D:\BattleNet\Diablo Immortal\Package\MPK\Resources28.mpk","SUCCESS","Offset: 705,975,831, Length: 4"
"7:31:34.6063250 PM","DiabloImmortal.exe","7488","ReadFile","D:\BattleNet\Diablo Immortal\Package\MPK\Resources28.mpk","SUCCESS","Offset: 705,975,831, Length: 16,384"
"7:31:34.6063554 PM","DiabloImmortal.exe","7488","ReadFile","D:\BattleNet\Diablo Immortal\Package\MPK\Resources28.mpk","SUCCESS","Offset: 705,992,215, Length: 16,384"
"7:31:34.6063909 PM","DiabloImmortal.exe","7488","ReadFile","D:\BattleNet\Diablo Immortal\Package\MPK\Resources28.mpk","SUCCESS","Offset: 706,008,599, Length: 16,384"
"7:31:34.6064065 PM","DiabloImmortal.exe","7488","ReadFile","D:\BattleNet\Diablo Immortal\Package\MPK\Resources28.mpk","SUCCESS","Offset: 706,024,983, Length: 16,384"
"7:31:34.6064360 PM","DiabloImmortal.exe","7488","ReadFile","D:\BattleNet\Diablo Immortal\Package\MPK\Resources28.mpk","SUCCESS","Offset: 706,041,367, Length: 16,384"
"7:31:34.6064500 PM","DiabloImmortal.exe","7488","ReadFile","D:\BattleNet\Diablo Immortal\Package\MPK\Resources28.mpk","SUCCESS","Offset: 706,057,751, Length: 16,384"
"7:31:34.6064621 PM","DiabloImmortal.exe","7488","ReadFile","D:\BattleNet\Diablo Immortal\Package\MPK\Resources28.mpk","SUCCESS","Offset: 706,074,135, Length: 16,384"
"7:31:34.6064751 PM","DiabloImmortal.exe","7488","ReadFile","D:\BattleNet\Diablo Immortal\Package\MPK\Resources28.mpk","SUCCESS","Offset: 706,090,519, Length: 16,384"
"7:31:34.6064874 PM","DiabloImmortal.exe","7488","ReadFile","D:\BattleNet\Diablo Immortal\Package\MPK\Resources28.mpk","SUCCESS","Offset: 706,106,903, Length: 16,384"
"7:31:34.6064998 PM","DiabloImmortal.exe","7488","ReadFile","D:\BattleNet\Diablo Immortal\Package\MPK\Resources28.mpk","SUCCESS","Offset: 706,123,287, Length: 16,384"
"7:31:34.6065236 PM","DiabloImmortal.exe","7488","ReadFile","D:\BattleNet\Diablo Immortal\Package\MPK\Resources28.mpk","SUCCESS","Offset: 706,139,671, Length: 16,384"
"7:31:34.6065564 PM","DiabloImmortal.exe","7488","ReadFile","D:\BattleNet\Diablo Immortal\Package\MPK\Resources28.mpk","SUCCESS","Offset: 706,156,055, Length: 16,384"
"7:31:34.6065740 PM","DiabloImmortal.exe","7488","ReadFile","D:\BattleNet\Diablo Immortal\Package\MPK\Resources28.mpk","SUCCESS","Offset: 706,172,439, Length: 16,384"
"7:31:34.6065891 PM","DiabloImmortal.exe","7488","ReadFile","D:\BattleNet\Diablo Immortal\Package\MPK\Resources28.mpk","SUCCESS","Offset: 706,188,823, Length: 16,384"
"7:31:34.6066041 PM","DiabloImmortal.exe","7488","ReadFile","D:\BattleNet\Diablo Immortal\Package\MPK\Resources28.mpk","SUCCESS","Offset: 706,205,207, Length: 16,384"
"7:31:34.6066221 PM","DiabloImmortal.exe","7488","ReadFile","D:\BattleNet\Diablo Immortal\Package\MPK\Resources28.mpk","SUCCESS","Offset: 706,221,591, Length: 16,384"
"7:31:34.6066369 PM","DiabloImmortal.exe","7488","ReadFile","D:\BattleNet\Diablo Immortal\Package\MPK\Resources28.mpk","SUCCESS","Offset: 706,237,975, Length: 16,384"
"7:31:34.6066516 PM","DiabloImmortal.exe","7488","ReadFile","D:\BattleNet\Diablo Immortal\Package\MPK\Resources28.mpk","SUCCESS","Offset: 706,254,359, Length: 16,384"
"7:31:34.6066665 PM","DiabloImmortal.exe","7488","ReadFile","D:\BattleNet\Diablo Immortal\Package\MPK\Resources28.mpk","SUCCESS","Offset: 706,270,743, Length: 16,384"
"7:31:34.6066811 PM","DiabloImmortal.exe","7488","ReadFile","D:\BattleNet\Diablo Immortal\Package\MPK\Resources28.mpk","SUCCESS","Offset: 706,287,127, Length: 16,384"
"7:31:34.6066958 PM","DiabloImmortal.exe","7488","ReadFile","D:\BattleNet\Diablo Immortal\Package\MPK\Resources28.mpk","SUCCESS","Offset: 706,303,511, Length: 16,384"
"7:31:34.6067126 PM","DiabloImmortal.exe","7488","ReadFile","D:\BattleNet\Diablo Immortal\Package\MPK\Resources28.mpk","SUCCESS","Offset: 706,319,895, Length: 7,210"
"7:31:34.6067720 PM","DiabloImmortal.exe","7488","ReadFile","D:\BattleNet\Diablo Immortal\Package\MPK\Resources28.mpk","SUCCESS","Offset: 706,327,105, Length: 7,130"
"7:31:35.3251248 PM","DiabloImmortal.exe","7488","ReadFile","D:\BattleNet\Diablo Immortal\Engine\Binaries\Win64\CrashHunter_PC3.dll","SUCCESS","Offset: 2,553,344, Length: 16,384, I/O Flags: Non-cached, Paging I/O, Synchronous Paging I/O, Priority: Normal"
"7:31:35.3254085 PM","DiabloImmortal.exe","7488","ReadFile","D:\BattleNet\Diablo Immortal\Engine\Binaries\Win64\CrashHunter_PC3.dll","SUCCESS","Offset: 2,332,160, Length: 16,384, I/O Flags: Non-cached, Paging I/O, Synchronous Paging I/O, Priority: Normal"
I've scraped out the events that followed the above exerpt - involving creation of various crash logs in the USDK appdata folder under my local username - but otherwise, this is what occurs right before the application reports the crash, creates the crash file and log, and then exits all of the application threads... leading up to this; I stopped in-game right before stepping on the exit plate, started ProcMon's capture, and then stepped onto the plate - promptly crashing out of the game. I waited for all threads to exit for the DI exe before ending the capture.
I'm particularly interested in the \Local\Resources and \Resources folders that are referenced before the crash -- no such folders exist in my install directory. I could manually create them perhaps, but I'm wondering if anyone can determine if they have those folders... The files seem named for a quest that may have been part of the Shadow "Mettle" chain? Did Blizzard break the Shadow questline inadvertently when they allowed it to be skipped?
I'll be pouring through more logs that I collected -- will update further if I find anything worth pursuing.
===============================
[5/23/2023]
I went into my \Appdata\Local folders and cleaned out a ton of old log files under Battlenet and UniSDK... found some crash dump files that I also cleaned out from those directories...
When I relaunched D:I, it gave me the intro cinematic for the accursed tower update and downloaded a 1.5GB patch... Not sure what garbage was in those files but I'll report back later tonight after I test Vault again.
In speaking with a few other folks and the data so far; it seems there may be a file or cached element created as part of Shadow participation that get corrupted by this bug, causing the Vault crash... some <things> may correct this corruption, such as changing clan membership, Rite cycle, or perhaps just random patching... but it's possible that this failure doesn't occur on mobile due to the inherent file structure and permissions that PC may be interfering with. I note numerous file discrepancies where the game is checking for non-existent files/directories during normal gameplay without crashing... only Vault runs into the consistent crashes. I speculate that the random mobile crashing, unrelated to the Vault crashes on PC, may also be due to some bad file management within the game's code.
I dug into some of those dump files before deleting them - they're referencing the "CrashHunter" DLL that D:I loads during the application crash. Since I can assume that this DLL is meant to identify the cause of the crash, collect telemetry data, and send it to Blizzard/NetEase - it's possible that the Vault crash isn't reaching their bug reports through their telemetry feedback............... the dump files report a buffer overflow for these crashes - indicating that whatever crashes the Vault is also possibly causing the telemetry crash afterward...
------------------------------------------------------------------------------------------
Any other helpful assistance in diagnosing the PC client crashes is welcome in the discussion - Blizzard/NetEase can only fix bugs that we can clearly identify, so the more narrowly we can scope the differences between mains/alts the better.
Posted May 22, 2023, 8:39 PM UTC · edited
I have basic fishing rod on my main.
When I dropped FPS from 120 to 60, no crashes on main or alt for few days.
Buy got crashes today and I was on 60fps.
I crash consistently with 120 and 60 fps for my main, even after a full clean reinstall of the client.
Assuming it's not inventory related, do you have an alt that can run vault to compare?
The key thing here is that we need to identify why a main character would crash but an alt wouldn't... what differences characters might have that avoid crashing when zoning between floors (or exiting) in Vault.