Accessing crashed executable data from the Crash Report Client

We are using a custom version of the Crash Report Client (CRC) to hook up additional bug reporting features related to crashes that might happen during development.

Into the FCrashReportClient constructor we retrieve some data from the crashed app by retrieving it through FGenericCrashContext::GetCachedSessionContext(). This allows to access the internal static NCached::Session field.

We noticed that in our internal QA development build, those variables were empty.
So for instance when debugging the CRC itself we can see that FGenericCrashContext::GetCachedSessionContext().BuildConfigurationName is an empty string, and so on.
And yet we can see that the XML file where all crash properties have been serialised is full of meaningful data. It looks as if the static data had been used once and then wiped out.

We do not have this issue with locally built Development (or Development Editor) executables, only those built by our build machine for QA purpose.

What could be the reason for this?

Ok, understood: the difference is in how the CRC works.

  • in e.g. editor builds, it is running in “monitoring mode”, exchanging data with a process uniquely identified by its PID
  • in non-editor builds it can only read the report data that was dumped by the crashed process (XML files, etc.)

So the simplest, although not the least invasive one, way I found to workaround this was to expose the variable I was interested in (the BuildConfiguration) in FPrimaryCrashProperties. I was surprised this one was not exposed already anyway.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.