Commit Graph

142 Commits

Author SHA1 Message Date
Patrick Laflamme
d6a9f2f2e9 Fixed missing PCallstack happening when the Editor has more than 256 threads and the crashing thread is not in the 256 first visited by the OS.
- Bumped the limit from 256 to 512
  - Always reserve one spot for the crashing thread in the list transmitted to CRC, possibly ignoring some thread.
  - Added diagnostic logs in CRC to captures cases where the number of thread would reach the new limit of 512 or if the crashing thread is 0.

#jira UE-114291 - Fail to capture some Editor PCallstack because a hard limit in GenericCrashContext
#rb Johan.Berg

[CL 16123400 by Patrick Laflamme in ue5-main branch]
2021-04-27 08:35:19 -04:00
Patrick Laflamme
296f501123 Added a diagnostic log to CRC when the handle returned by OpenProcess() is invalid. This handle is used to stack walk the crash and generate a minidump.
#rb trivial

[CL 16020816 by Patrick Laflamme in ue5-main branch]
2021-04-15 10:01:55 -04:00
Johan Berg
b2f93702ab Remove UE4 strings and names from Crash reporting
#rb none
#jira UE-111405, UE-111410, UE-111407, UE-111477, UE-111412, UE-111925, UE-111413, UE-111408, UE-111438, UE-111406

[CL 16002172 by Johan Berg in ue5-main branch]
2021-04-14 04:24:50 -04:00
jack porter
946b30a59a Remove UE3/UE4 references
#jira UE-112108
#jira UE-111469
#jira UE-111456
#jira UE-111451
#jira UE-111331
#jira UE-111149
#jira UE-111136
#jira UE-110941
#jira UE-104701
#rb trivial
[FYI] Chris.Babcock
#preflight 606446947a99880001b3cbac

#ROBOMERGE-SOURCE: CL 15872931 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v786-15839533)

[CL 15872932 by jack porter in ue5-main branch]
2021-03-31 06:40:14 -04:00
Patrick Laflamme
b437ca4cd5 Report all Editor bootstrapping failures captured by CrashReportClientEditor (when the Editor dies before analytics could be initialized).
#rb Jamie.Dale

[CL 15645323 by Patrick Laflamme in ue5-main branch]
2021-03-08 16:29:55 -04:00
Martin Ridgers
b8ed8ba3d4 When capturing and reporting callstacks, use the return address of a failure instead of a count of stack frames to trim. The count approach was spread about in many places and fragile to maintain as code changed. This resulted in "noisy" callstacks with distracting boilerplate present like assert dispatch functions.
#rb brandon.schaefer,will.damon,johan.berg
#rnx

#ushell-cherrypick of 15568119 by Martin.Ridgers

[CL 15568152 by Martin Ridgers in ue5-main branch]
2021-03-02 07:48:13 -04:00
Patrick Laflamme
7a4ad8f56d Fixed out-of-process crash reporting used for the Editor on Windows to prevent deadlocking on allocation.
- The function reporting the crash on the pipe doesn't need to suspend all the threads. The original purpose for suspending the threads was likely to preserve the state of the process as best as possible, but that is not required and prone to deadlocks.

Not suspending all the threads may would fix the hyphotetical case where CRC main thread is waiting for a prior ensure call stack to get resolved - I observed degenerated cases on my machine where this could take more than 15 minutes - preventing it to respond promptly to an incoming crash from the Editor. The flow was as following:
       - Editor fires an ensure, suspends all the thread, pipe a message to CRC to process the ensure.
       - CRC collects the ensure artefacts quickly, replies to the Editor, the Editor resumes, then CRC starts to resolve the call stack (blocking the main thread) from the minidump - degenerated cases can take several minutes.
       - Editor gets CRC messages and resumes its threads.
       - Editor fires a crash, suspends all the threads, pipes a message to CRC to process the crash.
       - CRC main thread is busy, waiting for the previous ensure call stack to be resolved... and doesn't respond promptly to the crash message.
       - Editor threads behing suspended, the code responsible to timeout if CRC takes too long never executes and Editor stalls until CRC dies or responds -> The user likely kills the Editor (and possibly CRC).

As a side effect from this change, if CRC doesn't respond promptly to a crash, the thread calling ReportCrash( )/ReportGPUCrash( ) will timeout and likely terminate the Editor before CRC could collect the crash artifacts or walk the thread to collect the call stacks.
  - Added a hint to the diagnostic logs reported with the Editor 'SummaryEvent' analytic event to indicate if the crash report was produced after the Editor died, so that the portable call stack wasn't captured.
  - Added a message displayed to the user by CRC saying that the the system failed to capture the callstack.

#jira UE-108701 - Editor deadlocks when reporting an ensure, a stall or a crash.
#rb Johan.Berg

[CL 15452515 by Patrick Laflamme in ue5-main branch]
2021-02-18 10:40:40 -04:00
will damon
1fe47fa53a Fix the task tag scope of the crash report client on the Mac.
#rb arne.schober
#jira UE-104914
#rnx

#ROBOMERGE-SOURCE: CL 15408307 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v771-15082668)

[CL 15408317 by will damon in ue5-main branch]
2021-02-15 13:23:31 -04:00
will damon
043161851e Move calls to setAlphaValue: to the main application thread.
#rb richard.wallis
#jira UE-102630
#rnx
#lockdown marcus.wassmer


#ushell-cherrypick of 15301157 by will.damon

#ROBOMERGE-SOURCE: CL 15282356 in //UE4/Release-4.26/... via CL 15282366 via CL 15282367 via CL 15282368 via CL 15398543
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v771-15082668)

[CL 15398565 by will damon in ue5-main branch]
2021-02-12 14:17:34 -04:00
Patrick Laflamme
a98b2214e3 On Windows, fixed CRC (out of process mode for Editor) generating an incomplete portable callstack when the crash occurred because a null function pointer was invoked
- When CRC runs out of process, instead of reading the current thread context of the crashed thread, read and use the crash context that was reported during the crash (which is different).
  - Added an optional context parameter to FGenericPlatformStackWalk::CaptureThreadStackBackTrace(), implemented it across all platforms, but only used on Windows.

On Windows, fixed InitStackWalking() and InitStackWalkingForProcess() to reset the process that needs to be walked.
  - CRC, running out of process may run its own process or the Editor process and which ever was walking first ruled out the other.

#jira UE-105006 - [CrashReporter] VCRUNTIME140!7fffce010000 + e390
#rb Johan.Berg
#preflight 15217159

[CL 15319737 by Patrick Laflamme in ue5-main branch]
2021-02-04 14:06:44 -04:00
Marc Audy
cac1fe0019 Merge UE5/Release-Engine-Staging @ CL# 15299266 to UE5/Main
This represents UE4/Main @ CL# 15277572

[CL 15299962 by Marc Audy in ue5-main branch]
2021-02-03 14:57:28 -04:00
Josh Adams
b0e4357576 - UBT Code changes to remove 32-bit Windows support (C++ code for 32-bit still exists)
#rb marc.audy (concept, not each file)

[CL 15265424 by Josh Adams in ue5-main branch]
2021-01-31 15:09:58 -04:00
geoff evans
4f72b503b8 Add Stall Detector API, enabled only for Editor builds for Windows
This code is meant to help locate and send reports/telemetry for slow code pathways that create unresponsive conditions
FGameThreadHitchHeartBeatThreaded was considered, but doesn't fit Editor's needs because its designed around general GameThread deadlines
Editor workloads are much less homogenous, and proper async support for a consistent GameThread deadline in Editor is a ways away
This necessitates a more focused approach where we can instrument specific routines such that each issue their own telemetry report
Add a "Stalls" counter in the Frame Rate and Memory title bar stats
Add LogStall Log category for viewing details about stalls that have occurred
Introduces a stall counter object on the GameThread to collect statistical data about stalls (this will not report to telemetry)
Future changes will introduce report objects into specific routines to upload to crashreporter
Future changes will introduce support for non-Windows OSes

#jira none
#rb francis.hurteau

[CL 15213394 by geoff evans in ue5-main branch]
2021-01-26 20:26:53 -04:00
Marc Audy
bc88b73a29 Merge Release-Engine-Staging to Main @ CL# 15151250
Represents UE4/Main @ 15133763

[CL 15158774 by Marc Audy in ue5-main branch]
2021-01-21 16:22:06 -04:00
Patrick Laflamme
39beb94b81 #jira UETOOL-2873 - For MTBF, account for crashes happening before analytics is initialized.
- Count number of crashes before Analytics get initialized and report them as DelayedCrashCount field of the Editor summary session event.

#rb Jamie.Dale

[CL 15128718 by Patrick Laflamme in ue5-main branch]
2021-01-18 10:45:38 -04:00
Patrick Laflamme
66f43c0eb6 Optmized how the Crash Context memory buffer used to serialize the context was used:
- Prevented CrashReportClient from serializing the CrashContext to the memory buffer if it was already serialized once.
  - Increased the default space reserved by memory buffer used to serialize the crash context from 32K to 128K because serializing the crash context of 'debug crash' command line in Editor uses up to 112K.
  - Cleared the memory buffer before serializing the CrashContext in case it was serialized more than once preventing the internal buffer to grow needlessly. Also, the XML reader being limited, would only read the first one written, ignoring further and more recent ones appended.

#rb Johan.Berg

[CL 15037279 by Patrick Laflamme in ue5-main branch]
2021-01-11 10:52:58 -04:00
Marc Audy
ada7c144fa Merge //UE5/Release-Engine-Staging @14903491 to //UE5/Main
[CL 14906022 by Marc Audy in ue5-main branch]
2020-12-11 14:21:20 -04:00
Patrick Laflamme
1b65e55820 Logged ensures file/line/condition/message captured by CrashReportClientEditor in the analytic diagnostic log.
#rb Jamie.Dale

[CL 14823953 by Patrick Laflamme in ue5-main branch]
2020-11-30 17:56:19 -04:00
Marc Audy
a7f9391231 Merge UE5/Release-Engine-Staging @ 14811410 to UE5/Main
This represents UE4/Main @ 14768117

For ReleaseObjectVersion.h
#lockdown Marcus.Wassmer

[CL 14811440 by Marc Audy in ue5-main branch]
2020-11-24 18:42:39 -04:00
Marc Audy
68150e0be7 Merge UE5/Release-Engine-Staging to UE5/Main @ 14611496
This represents UE4/Main @ 14594913

[CL 14612291 by Marc Audy in ue5-main branch]
2020-10-29 13:38:15 -04:00
Marc Audy
4c1bb11c29 Merge UE5/Release-Engine-Staging to UE5/Main @ 14548662
This represents UE4/Main @ 14525125 + cherrypicked fixes
#skipundocheck

[CL 14551026 by Marc Audy in ue5-main branch]
2020-10-22 19:19:16 -04:00
Marc Audy
50a3d7d368 Merge Release-Engine-Staging to Main @ CL# 14467590
This represents UE4/Main @ 14432125 + some cherrypick fixes

[CL 14468207 by Marc Audy in ue5-main branch]
2020-10-09 22:42:26 -04:00
Marcus Wassmer
3b81cf8201 Merging using //UE5/Main_to_//UE5/Release-Engine-Staging @14384769
autoresolved files
#rb none

[CL 14384911 by Marcus Wassmer in ue5-main branch]
2020-09-24 00:43:27 -04:00
Ben Marsh
486408b1a9 Rename UE5Editor to UnrealEditor.
#rb none
#jira UE-97600

[CL 14292067 by Ben Marsh in ue5-main branch]
2020-09-10 15:39:00 -04:00
Ben Marsh
be7034ec27 Rename UE4Editor to UE5Editor, and generated solution/projects from UE4 -> UE5.
UE4Game/Client/Server targets left intact for the time being.

#rb none

[CL 14288076 by Ben Marsh in ue5-main branch]
2020-09-10 09:10:30 -04:00