-
Notifications
You must be signed in to change notification settings - Fork 243
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
minidumpapiset.h:MiniDumpWriteDump is crashing and not dumping anything #250
Comments
Looks like it could be related to this wine bug: https://bugs.winehq.org/show_bug.cgi?id=56932 |
Attached is a debug_log with |
Hi, Proton maintainer here. That's an interesting find! Coincidentally I've been recently testing Unreal's crash dumps. I was using the FPS demo and UE 5.4.3 which was working fine. It's likely the extra complexity of real game that makes the difference here. I'm looking forward to the full log. Is there a chance that you could provide us with a simple reproducer (e.g. stripped down game that just crashes)? That would be a huge help. |
Thanks for the reply. Correction on the unreal version, observing this on 5.3.2. Highly unlikely we can provide a stripped down client. I will look at reproducing with the FPS demo. |
I don't see much in the log other than some usual SEH noise, mostly for The only meaningful difference in 5.4.3 seem to be that the The resulting UEMinidump.dmp has ~13MB and I'm able to open it just fine (see: https://github.com/ivyl/Proton/blob/dbg-win/docs/DEBUGGING-WINDOWS.md - that's WIP documentation I've been toying with UE for). I'll poke at 5.3.2. Let me know if you make any progress on your side. |
from the log, it rather looks like a hang in loading pdb information from main module |
Apologies for the delayed reply folks, I was just doing some sanity checks. Thanks for your continue interest.
This line in particular makes me wonder if Unreal is competing for a lock with itself (unreal also spawns a separate crash monitor at start up, which could be competing here...just speculation): I've also tried a build which simply skips the minidump call altogether. It successfully creates a CrashReportClient process (I can see the proc in windebg) but no GUI appears on the steamdeck. This would all be much easier to debug if I could get winedbg to load our symbols from the pdb file. Without symbols I can't breakpoint on any of the wine API calls. Any ideas how I might be able get that going? |
I can't see any minidump calls into dbghelp for this log; is this intended?
so something like: then from winedbg prompt:
this should work (famous last words) (I assumes that each .pdb file sits in the same directory as the .exe or .dll file) HTH |
This comes from our implementation of To work around this you can try using the redistributable versions of those DLLs. If you can send us the offending shader (can be done privately ahiler at codeweavers com) we can take a look why our impl fails and work on improving it. |
replying to myself:
there's no trace inside MiniDumpWriteDump (only fixme:s) so we can't actually tell if this API is called or not :-( |
Attempted those specific winedbg commands. Wine seems to hang indefinitely when it tries to load symbols from the pdb. The steamdeck also becomes unresponsive. Lethal pdbs 😆 .
|
Progress! I took the pdb file out of the expected path, ran the game, and triggered a crash.
So that gives credence to EPouech's suspicion:
I'll try to find more detail about our pdb files but as far as I know we don't do anything special to produce them. Just a normal build through Unreal Editor. Regardless, the issue I'm now having to deal with is that the call to |
Just following https://github.com/ivyl/Proton/blob/dbg-win/docs/DEBUGGING-WINDOWS.md#live-debugging. Do you know how I can get the proton symbols downloaded on SteamDeck? I don't actually have proton listed in the steam library on the SteamDeck. |
from the pdb trace loading above:
these could be the cause of crash later on could you please:
(you can erase the type names from the log above, I don't need them)
|
You may need to switch the tab at the top to "TOOLS" when performing search. I've just checked on a non-developer mode Steam Deck that has a few games installed and I see Proton installations just fine. If you figure how to make it show (either by enabling developer mode, downloading some free game or switching tabs) let me know so I can include that in the document. Also if you have any other issues with the docs I'm also interested - those are WIP as stated before :-) |
Ok. So I think we're looking at two distinct issues here.
I'm working on collecting that debug info as requested for the pdb issue now. w.r.t getting proton debug symbols on the deck -> got it working. Unfamiliarity with the UI at fault.
Mind sharing further instructions on this point? Thanks for all the help so far folks. 🦸 🦸 |
Hmm. We may need to change that to make troubleshootings like this easier. Right now, if you don't have access to a Linux machine where you can install Wine via package manager, the easiest option is to extract
Our implementation of d3dcompiler_*.dll resides in system32 directory, they are used if there's no DLL with that name next to the .exe or the redistributables containing it did not override it. In the log you should see a line like This should tell you which version (the number) is used and which variant (builtin = Wine's implementation). A lot of games ship those .dlls along the relevant .exes. IIRC there's an option in UE when creating a build to include redists without the installer? I'll look into why our shader compiler doesn't like crash reporter, but that will likely take a lot of time to resolve.
Thanks for reaching out and your patience! |
@nwx-vidaks thanks for taking the time to investigate |
More log info from the shader compile failure:
|
Hey folks. I've did some testing against Microsoft's version of that dll. It works! I get a gui and everything. So there's definitely something up with wine equivalent. |
hi... not entering all the details, but this build contains:
to enable that private build:
this shall download/install the dedicated build TIA |
Taking a look at that debug build asap. Thanks @EPouech ! |
@EPouech Thanks for providing that debug build. The resulting logs are over a gig in size, which surpasses github's limit. Is there anywhere else I can share the logs. |
Hello @nwx-vidaks, Proton logs usually compress well. Throw it in an archive and see how large it ends up. |
Lol! Let's pretend that didn't happen. |
@nwx-vidaks thanks for providing the logs
thanks again for you help |
Interesting. I never researched that but I've seen a lot of software shipping that DLL, including UE games, Chrome browser, etc.
Yes. I've figured out why the shader fails to compile. It contains something along the lines of I'm looking into fixing it, but it may take someone more familiar with vkd3d-shader. After that we'll see if that's the only shader that fails. |
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1096 - probably will require a bit more work but with this change crash reporter works for me (demo FPS project built to include reporter, UE 5.3.2). |
nice ;-) |
Looks like you're right @ivyl the d3dcompiler_XX.dll files are part of the Windows SDK which means they should be redistributable. I was trying to find information specifically for the _47 version and was not finding much info, broadening my search led to more information. Thanks for chasing the issue down and for the fix! When can we expect this change to be included in a release? |
In a week or so it should show up in experimental if everything else goes well. If you want to give it a spin I can update the build that EPouech has shared with you to include that change :-) |
If it's not too much effort for you guys, that would be awesome. |
I've updated test-pdb beta branch to include the shader compiler fix |
The build is working on my end! Awesome work. 🦸 |
Hey folks. Any update on the fix making it into an official release? |
Observed on SteamDeck:
Proton Version: 9.0-2 and 8.0-5
Wine Versions: wine-9.0 and wine-8.0
Summary
Our game is built on Unreal Engine 5.4 and compiled for Win64.
It uses Unreal's default crash reporting mechanism with no changes to the engine code.
During crash handling Unreal makes a call to MiniDumpWriteDump which is a windows built-in API. On native Windows, this works fine as expected and we get minidump files.
On SteamDeck, after triggering an intentional crash of the game client, the subsequent crash dump api call crashes immediately, preventing Unreal from launching a crash reporter client and sending crash logs up to our log collector.
Attached is the very start of the proton log and then the tail end starting from where the explicit crash is requested.
The game was launched with the following args in steam:
PROTON_DUMP_DEBUG_COMMANDS=1 PROTON_LOG=1 PROTON_LOG_DIR=~ PROTON_CRASH_REPORT_DIR=~ %command%
I wasn't able to get symbolicated logs from winedbg, any help would be appreciated. Thank you!
debug_log.txt
The text was updated successfully, but these errors were encountered: