On some computer the crash report client doesn’t show up and so the crash cannot be sent to our backend.
I can reproduce at the office on some computers but I have no idea why it is working on some computers but not for all.
We are using the same packaged build.
Just to be clear, I don’t mean that the CRC sometime works and some other time doesn’t on a given computer. We have computers on which it always works and some other on which it never works.
I don’t know if it is related on a windows setup or missing redistribuables all taht I can say is that the CRC is added to the firewall authorized files.
Have you any advices to find out what is happening?
Thanks
Christophe
Steps to Reproduce
Run a packaged build.
Crash in the way you want: Real exception or by manually calling “debug crash”
The crash report client doesn’t show up.
Hi,
I’m not quite sure, but I suspect it might be one of the system .dll missing or one with the wrong version. Since you are using a ‘packaged build’, I assume this is for a Win64 game shipping build. I’ll says CRC for CrashReportClient. Here some idea how to diagnose the issue:
- Check if you have CRC logs: The CRC target has bUseLoggingInShipping to true by default, so it generates logs in the user AppData folder: Ex: C:\Users\patrick.laflamme\AppData\Local\CrashReportClient\Saved\Logs\CrashReportClient.log. You can crash and then review the logs.
- If you get a log file, the CRC process is launched and the issue is likely on CRC side.
- If you don’t get a log file, the CRC is not launched or it crashes early while launching.
- On a PC failing, just launch CrashReportClient.exe in a command prompt without any arguments. See if it launches. If a .dll is missing, you might get an error message. Check if you have a log file.
- If CRC launches (you have logs), but never shows the UI, you could set -waitforattachcrc when launching the game. If CRC is launched, then -waitforattach will be passed to CRC process and it will waits for the debugger to attach. So you can attach the debugger and start debugging CRC process on a machine that can debug.
- In the default CRC configuration, the game process collects all the crash artifacts, put them in a folder and launch CRC to send the content. You can run CRC after-the-fact with the same command line over and over again as long a the crash folder exist. The command line can be found in the log.
- If CRC doesn’t appear to launch at all, take a look in D:\UE_5.5\Engine\Source\Runtime\Core\Private\Windows\WindowsPlatformCrashContext.cpp in the function `ReportCrashUsingCrashReportClient`. Review the code. I’d suggest commenting out any code that could skip launching CRC for reasons…
If the game seems to spawn CRC, but it fails, but you cannot get any error message, I’ll bet on dbghelp.dll. This DLL cannot be redistributed and might be the cause:
if (Target.Platform == UnrealTargetPlatform.Win64 && Target.WindowsPlatform.bUseBundledDbgHelp) { throw new System.Exception("CrashDebugHelper uses DBGENG.DLL at runtime, which depends on a matching version of DBGHELP.DLL but cannot be redistributed. Please set WindowsPlatform.bUseBundledDbgHelp = false for this target."); }Otherwise, I would monitor which .dll the process opens with SysInternal ProcessMonitor tool. Then you can compare which dll are used on a working machine vs a non-working machine.
I think this is a good enough as a starting point. Let me know what you find, I’ll try to continue guiding your from there.
Regards,
Patrick
Hello Patrick,
I tried your suggestions without success but I finally got it. It was due to a special character. To be more precise the special dash caracter (Alt + 0150)
Long time ago we changed the steam folder name. But the computers on which the game was installed before that, even if they are up to date regading the game version were still using this old path. And the old path was containing - probably by mistake - a special caracter: ALT + 0150
So if this special caracter is part of the game path, the CRC will fail
Thank you for your help.
Christophe
Hi,
Thanks for the feedback and glad this is solved. What is failing to spawn the CRC process or was CRC failing the process the report? I’m wondering if this is a fixable issue.
Regards,
Patrick
I was not able to easily attach a debugger on those computers but I think the CRC failing the process to report. I guess it is not able to find the path to the dump files if it contains a special caracter.
Please find below what I know
When crashing:
- Even if I didn’t see any the CRC windows. SysInternal ProcessMonitor tool clearly shows that CRC process was running.
- No log were available in %localAppData%\CrashReportClient\Saved\Logs
If I run the CRC by command line without argument:
- A log was available in %localAppData%\CrashReportClient\Saved\Logs
If I run the CRC by command line with arguments pointing to the crash dump path:
- SysInternal ProcessMonitor tool clearly shows that CRC process was running.
- No log were available in %localAppData%\CrashReportClient\Saved\Logs
Thanks for the information. I’ll see if I can do something.