### Features
This change enables the StallDetector watchdog in Editor to submit reports to crashreporter about threads violating instrumented deadlines in the source code. This feature was available prior on Windows, and this change adds Linux support.
### Notes
New APIs:
ReportStall()
CaptureThreadPortableCallStack()
Many APIs are updated from purely "Ensure" naming to more general naming. Stalls are more like Ensures than crashes, and so the appropriate renames to make the code readable and clear have been made. In some places Ensure is replaced with the clearer: Continuable Event nomenclature.
### Testing
I synthesized an ensure on Linux, and did the same for a stall. I then compared crash report XML file to make sure they contain accurate data in the callstack, portable callstack, and other fields in the report. I also noted that the stall information was showing as expected in the crash reporter.
#rb brandon.schaefer, francis.hurteau
#jira UETOOL-3336
#preflight 625e20d2804460ab0fea3277
[CL 19911608 by geoff evans in ue5-main branch]
Panic allows only one thread to become the panic thread. In panic mode, logs are only sent to panic-safe output devices. Each call to Panic flushes buffered logs to panic-safe output devices, and flushes panic-safe output devices.
#jira UE-147152
#preflight 62424814292f228e09d8a612
#rb Zousar.Shaker
#fyi Brandon.Schaefer
[CL 19545093 by Devin Doucette in ue5-main branch]
- Ensured the new FTSTicker get ticked when running CRC in unattended mode.
#rb Jerome.Delattre
#fyi Dmytro.vovk
[CL 17157164 by Patrick Laflamme in ue5-main branch]
- The data show no evidence that CRC is crashing there. Capturing this state is I/O expensive and not required moving forward.
#jira UETOOL-4042 Inspect UE5/Main analytics for CRC crashes
#rb Jamie.Dale
[CL 17116844 by Patrick Laflamme in ue5-main branch]
- Added code to run a clean up on UECrashContext-{pid}.xml files that 30 days old where the process ID (pid in the name) is not running anymore.
#rb Jamie.Dale
[CL 16522984 by Patrick Laflamme in ue5-main branch]
- Analytics shows that CRC may takes up to 400 seconds to walk all the threads and create a minidump before responding back to the engine on the pipe to resume the crashing thread.
#rb Johan.Berg
#fyi Geoff.Evans
[CL 16483781 by Patrick Laflamme in ue5-main branch]
Added missing include in AnalyticsPropertyStore.cpp
Added ENGINE_API to expose EngineAnlytixSessionSummary publicly.
Added the longuest unattended crash report processing measured during a session to CRC summary to track how fast or how slow CRC is to manage ensures/stalls.
#rb Jamie.Dale
[CL 16404437 by Patrick Laflamme in ue5-main branch]
- Instead of converting summary properties to string duing session aggregation, put properties in FAnalyticsEventAttribute instances to preserve the type information.
Added MonitorEngineVersion, MonitorReportCount, MonitorEnsureCount, MonitorAssertCount to CRC analytics summary.
Added MissingDataFrom to the analytics summary when the property file from a collaboration process failed to load.
Fixed the analytics summary manager to aggreage and produce a report even if the helper process data couldn't be loaded.
#rb Jamie.Dale
[CL 16382795 by Patrick Laflamme in ue5-main branch]