Gameheim

Unreal Editor crash reports for the whole team

For studios where artists, designers and programmers spend the day in the Unreal Editor and its crashes vanish into a dialog nobody reads. It explains where editor crash reports go by default, how to route them to Gameheim for your project, how each crash gets the changelist the machine was synced to, how to keep sending them to Epic, and how editor crashes differ from packaged-game crashes.

By Gianmarco Virzì, co-founder and lead developer of Virsion · Updated · 10 min read

Unreal Editor crashes that the team never sees

The editor crashes more often than any shipped build. A level designer saves, hits Play, and the editor is gone. The crash reporter window opens, the designer clicks send, restarts, and carries on. The report goes to Epic, which is useful for the engine, but your own programmers never see it.

For a studio that is a blind spot. Crashes caused by your own code, your plugins or a broken asset show up in the editor long before they reach a packaged build. Without the reports, the team learns about them through chat messages, and cannot tell whether five people hit the same crash or five different ones.

There is a second problem. Even when the reports arrive, an editor crash does not say which version of the project was open. The engine version is the same for everybody, and the Project Version is only updated when someone packages a build. What matters is the changelist each person's workspace was synced to.

By hand, that means asking whoever crashed to run p4 changes -m1 "//...#have" from the root of their workspace, which prints the newest changelist they have synced, and to paste it with the crash. It works as long as people do it right after the crash, before they sync again. The local copy of each crash stays in the project's Saved/Crashes folder on their machine, if someone needs the files later.

How Gameheim collects Unreal Editor crash reports

The Unreal Editor already contains CrashReportClient. It reads DataRouterUrl from the configuration of the project it has open. When your project's Config/DefaultEngine.ini points to Gameheim, as described in the crash reporter setup, every editor crash on that project goes to Gameheim instead of Epic. Editors opened on other projects are not affected.

Three things make editor reports more useful in Gameheim:

  • The workspace changelist or commit. When the crashing computer runs the Gameheim agent, the report gets the changelist that computer's workspace was synced to on a Perforce project, or the commit it had checked out on a Git project. The report shows it as workspace.
  • Grouping with the rest of your crashes. Editor crashes are grouped by callstack, linked to bugs and tracked as regressions like any other crash. See crash triage.
  • Optional forwarding to Epic. With Also send editor crashes to Epic on, Gameheim passes each editor crash on to Epic unchanged, so Epic keeps receiving what it received before.
StepBy handIn Gameheim
Collect the team's editor crashesAsk people to send the folder from Saved/CrashesSent by CrashReportClient once the ini line is synced and the editor restarted
Know the changelist or commit of the crashAsk for p4 changes -m1 "//...#have" or git rev-parse HEAD right after the crashTaken from the workspace through the agent
Tell whether five people hit the same crashCompare callstacks between reportsOne group per crash, with the number of Machines
Keep Epic informedEpic receives editor crashes only while the project has no DataRouterUrlAlso send editor crashes to Epic forwards each editor crash unchanged

How to receive Unreal Editor crash reports in Gameheim

Before you start
  • Crash reception on, with the DataRouterUrl line in Config/DefaultEngine.ini of the game project, as in the setup guide.
  • The permission to manage the bug tracker, to change the crash settings.
  • For the workspace changelist or commit: Windows, and the Gameheim agent on each editor machine (1.0.2 or later on Perforce, 1.1.0 or later on Git), with that machine's workspace set up through Gameheim.
  1. Get the ini change onto every editor machine

    Submit the change to Config/DefaultEngine.ini and ask the team to sync. Each person needs the file in their workspace, and should restart the editor after syncing so the new configuration is read. Until then, their crashes keep going to Epic.

  2. Install Editor symbols for debugging

    With the editor from the Epic Games Launcher, open Library, click the arrow next to your engine version, choose Options and tick Editor symbols for debugging. Without these files, an editor callstack has module names and offsets but no function names, and the same crash on the next engine or project build opens a new group.

    An editor compiled from source has its symbols from the build, so there is nothing to install.

  3. Run the agent on each editor machine

    Install the Gameheim agent, version 1.0.2 or later, under the same Windows user that runs the editor, and let it manage the project workspace. When it connects, the agent reads the machine id that Unreal stores for that Windows user and sends it to Gameheim, which keeps only a hash. The agent also keeps reporting the changelist the workspace is synced to.

    When an editor crash arrives, Gameheim looks up the machine id of the report among your organization's agents, and uses that workspace's changelist for the report. By default it does not record who had the crash: the machine is used to find a changelist, nothing else. A project can switch on Record who had the crash in its crash settings: from then on, an editor crash from a machine with an agent is filed with the name of that agent's user, visible to whoever can read the project's bugs. Crashes of packaged builds stay anonymous, and switching the option off erases the names recorded so far.

    Some editor crashes arrive without a name even with the option on: when the agent on that machine has not connected for more than 14 days, when agents of two different people are registered for the same Windows user, and when the agent's user is deactivated or can no longer open the project. The name is decided when the crash arrives and stays on the report: an agent going quiet later does not remove it.

  4. Decide whether to forward editor crashes to Epic

    In Unreal crashes, switch on Also send editor crashes to Epic if you want Epic to keep receiving your editor crashes. Read the section on forwarding below first: it changes who sends the data.

  5. Test with a crash in Play In Editor

    Open the project, start Play In Editor, open the console with the tilde key (~) and type debug crash. The whole editor closes and the crash reporter window appears. Send the report. In Bugs > Crashes a new group appears; in its panel the report shows the changelist followed by (workspace) when the agent match worked.

    To see an ensure, type debug ensure instead. The editor stays open, no window appears, and in our tests the report arrived in the background within a few seconds, in a separate group filed as an ensure.

Forwarding editor crashes to Epic: what it implies

The editor from the Epic Games Launcher sends its crash reports to Epic by default. Epic uses them to find and fix engine crashes. Once your project sets DataRouterUrl, the editor sends to Gameheim instead, so Epic stops receiving the crashes of that project.

Also send editor crashes to Epic restores that. When it is on, Gameheim forwards every editor crash package to Epic's data router exactly as it was received, after filing it for your team. Points to know before you switch it on:

  • Only editor crashes are forwarded, Play In Editor included. Crashes of packaged games are never forwarded: a game build did not send them to Epic before either.
  • The package goes to Epic unchanged, with everything the engine put in it: the machine and account identifiers, the log with local paths, and the minidump. Gameheim itself does not keep those identifiers, but it does pass them on.
  • Gameheim becomes the party that transmits this data to Epic on your behalf. Tell your team, and make sure your internal privacy notice covers it.
  • Forwarding runs in the background, as a single attempt. If Epic cannot be reached at that moment, that report is not sent to Epic.
  • The switch is off by default and applies to the whole project.

Editor crashes vs packaged game crashes

Unreal Editor (including PIE)Packaged game
Crash reporter presentAlwaysOnly with Include Crash Reporter or -CrashReporter
Where reports go without DataRouterUrlTo EpicNot sent: no destination is set
Function names needEditor symbols for debugging (launcher editor).pdb files next to the executable
Module names in the callstackEditor modules, e.g. UnrealEditor-EngineUsually your game executable
Changelist of the reportWorkspace changelist from the agent (Perforce)Project Version with CL<n>
Forwarded to EpicOnly with Also send editor crashes to EpicNever
Added to registered buildsNoYes, from the first report of each build

Because the module names differ, the same bug crashing in the editor and in a packaged build creates two crash groups. Merge them, or link both to the same bug, when you want one place to follow it.

Troubleshooting Unreal Editor crash reports

What you seeLikely causeWhat to do
One person's editor crashes never arriveThe ini change is not in their workspace, or the editor was not restartedSync Config/DefaultEngine.ini and restart the editor.
Editor callstacks have no function namesEngine symbols not installedInstall Editor symbols for debugging in the Epic Games Launcher.
The report shows no changelist, or (build) instead of (workspace)No agent match for that machineCheck that the agent is 1.0.2 or later, runs under the same Windows user as the editor, and manages the Perforce workspace of this project on that computer. On Git projects there is no workspace changelist.
The changelist looks wrong for a crash caused by local editsThe workspace changelist is what the machine has syncedFiles edited locally and not yet submitted are not part of any changelist. The minidump and the log help in that case.
Editor crashes on another project still go to EpicThe line is set per projectExpected: only projects whose Config/DefaultEngine.ini has the line send to Gameheim.

Frequently asked questions

Where do Unreal Editor crash reports go by default?

The editor from the Epic Games Launcher sends its crash reports to Epic through CrashReportClient. Your studio does not receive them. When the project you have open sets DataRouterUrl in its Config/DefaultEngine.ini, the editor sends crashes of that project to that address instead, for example to Gameheim. Editors opened on other projects keep sending to Epic.

Is a crash in Play In Editor an editor crash?

Yes. Play In Editor runs the game inside the editor process, so a crash there takes down the whole editor and is reported as an editor crash, with editor module names in the callstack. It gets the workspace changelist through the agent and can be forwarded to Epic. The same bug in a packaged build creates a separate crash group.

Will Epic still get our editor crashes if we use Gameheim?

Only if you switch on Also send editor crashes to Epic in the Unreal crashes settings. Gameheim then forwards each editor crash package to Epic unchanged, including the identifiers and log the engine put in it, so Gameheim becomes the party sending that data. Crashes of packaged games are never forwarded. The switch is off by default.

How does Gameheim know which changelist the editor was on?

Through the Gameheim agent on the crashing computer. The agent reads the machine id Unreal stores for the Windows user and reports it, as a value Gameheim keeps only as a hash, together with the changelist the Perforce workspace is synced to. An editor crash from that machine gets that changelist, marked workspace. Gameheim does not record who had the crash, unless the project switches that on in its crash settings.

Do editor crashes reopen fixed bugs?

Yes, on Perforce projects. If a crash group is linked to a resolved bug and an editor crash of that group arrives with a workspace changelist equal to or greater than the fix changelist, the bug goes back to Open and the team is notified. Without a workspace changelist the report is still counted but cannot reopen anything.