Commit Graph

44 Commits

Author SHA1 Message Date
bryan sefcik
da92084a12 Optimized out more private modules includes and dependencies.
#preflight 64627c382965f6ea8ea83bd6

[CL 25479683 by bryan sefcik in ue5-main branch]
2023-05-15 16:26:12 -04:00
bryan sefcik
de1956f47b Ran IWYU on Public headers under Engine/Source/Developer/...
Headers are updated to contain any missing #includes needed to compile and #includes are sorted.  Nothing is removed.

#ushell-cherrypick of 21064294 by bryan.sefcik
#jira
#preflight 62d5c2111062f2e63015e598

#ROBOMERGE-OWNER: bryan.sefcik
#ROBOMERGE-AUTHOR: bryan.sefcik
#ROBOMERGE-SOURCE: CL 21155249 via CL 21158121 via CL 21161259
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v972-20964824)

[CL 21182053 by bryan sefcik in ue5-main branch]
2022-07-20 12:03:45 -04:00
Patrick Laflamme
11371d32cc Fixed static analysis reporting inconsistent processor state from CoreMiscDefines.h.
#rb none

[CL 16526028 by Patrick Laflamme in ue5-main branch]
2021-06-01 20:18:59 -04:00
Patrick Laflamme
9648c49913 Removed private FEditorSessionSummaryWriter and deprecated public class FEditorSessionSummarySender and FEditorAnalyticsSession.
- The functionality was generalized in FAnalyticsSessionSummaryManager, FEngineAnalyticsSessionSummary, FEditorAnalyticsSessionSummary and FAnalyticsSessionSummarySender.

Added code to clean up left-over expired files/data using the old analytics system implementation.

#rb Jamie.Dale

[CL 16523043 by Patrick Laflamme in ue5-main branch]
2021-06-01 17:01:37 -04:00
Patrick Laflamme
2e5316e1ca Generalized the Editor analytics summary session system to be usable/extendable by other apps.
Engine/Editor changes:

- Split the Editor summary session in two, one summary for the Engine properties and one for the Editor specific properties. Made it easy to extend the Engine summary to create other summaries.
- Made the summary sender as agnostics as possible of the keys it sends.
- Fixed the system wide lock contention between the process when persisting a session. (On problem caused by the lock is UE-114315).
- Fixed concurrent issue when saving the summary sessions on Linux/Mac
- Fixed performance issue when saving the summary session on Linux/Mac. This enable saving at higher frequency.
- Fixed cases where the same session summary is sent more than once.
- Fixed Windows registry key overflow that could happens if we accumulated too many sessions (in theory, this can happen)
- Made adding new properties to the summary easy and private to the implementation.
- Brought the Linux/Mac implementation closer to Windows implementation.
- Reduced memory allocation, especially when the session records a crash.
- Improved chances to send the summary non-delayed by allowing the Editor to send the reports if CRC died unexpectedly.
- Generalized the support to collect and aggregate analytics from helper processes. For example, CRC already collects analytics that is merged with the Editor summary as information supplement
- Reserved the disk space required to store the summary ahead of time to prevent failing later.
- Increased frequency at which the summary is persisted because saving the summary is more efficient. (About every 10 seconds rather than every minutes).
- Added unit tests

CrashReportClient changes:

- Created a 'session summary' from the CRC point of view to merge with the Editor summary.
- Moved analytics collection in a separated class to make the crash reporting code leaner and less noisy with all the analytics
- Merged the CRC diagnostic logger in the class collecting CRC analytics summary and make the diagnostic log a property in the summary.
- Collected analytics (on behalf of Editor) in a background thread because CRC main thread can be blocked collecting a crash, so it doesn't pay attention to other things
- Added MonitorBatteryLevel and MonitorOnACPower summary properties on Windows. Collected on CRC background thread (never blocked, so we reduce changes to miss the battery running out)
- Added MonitorSessionDuration summary property to track now long CRC ran.
- Added MonitorQuitSignalRecv summary property to detect when CRC is soft killed like: taskkill /PID 1234
- Added MonitorIsReportingCrash summary property to track when CRC dies reporting a crash.
- Added MonitorIsCollectingCrash summary property to track when CRC dies collecting a crash artifacts.
- Added IsProcessingCrash summary property to track when CRC dies processing a crash.
- Added MonitorCrashed summary property to track when CRC exception handler was triggered.
- Added MonitorWasShutdown summary property to track when CRC summary was shutdown
- Added MonitorLoggingOut summary property to track when CRC died because the user was logging out (or as result of shutting down or restarting the computer).
- More accurate value for DeathTimestamp summary property because this is now captured in CRC background thread (which cannot be busy handling a crash)
- Added crash processing timing to CRC diagnostic logs (how long it takes to collect/process a crash).

#rb Jamie.Dale, Wes.Hunt, Johan.Berg
#jira UETOOL-3500
#jira UE-114315

[CL 16324612 by Patrick Laflamme in ue5-main branch]
2021-05-13 21:58:20 -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
patrick laflamme
6dfccccdbd Bumped the EditorAnalyticSession version number following a format change.
Renamed IsDebbuger analytic field as IsDebuggerPresent.

#rb Geoff.Evans

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

[CL 15535012 by patrick laflamme in ue5-main branch]
2021-02-25 18:14:09 -04:00
geoff evans
5d550cdb3f Add a "Process Diagnostics" flags word that enumerates the presence of various performance-impacting engine and platform diagnostics.
On Windows this checks for the kernel's various memory sanitizers (Set by gflags).

#rb stefan.boberg, martin.ridgers, patrick.laflamme
#jira none
#preflight /job/6036c60db738e90001178f50

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

[CL 15522524 by geoff evans in ue5-main branch]
2021-02-24 18:23:34 -04:00
Patrick Laflamme
8538e11308 Fixed UnixCriticalSection not timing out properly.
#jira UE-108878 - Linux - Random hangs when opening the editor
#rb Brandon.Schaefer

[CL 15495563 by Patrick Laflamme in ue5-main branch]
2021-02-22 18:59:56 -04:00
geoff evans
58022cbe85 Add StallDetector to Session Summary for Analytics
This adds some scalar statistics to the session summary:
* The total stall trigger count
* The total reported stalls
* The top stall name
* The top stall budget time in seconds
* The top stall cumulative overage time in seconds
* The top stall trigger count

#jira none
#rb patrick.laflamme, francis.hurteau
#preflight /job/6019a5ef797f69000126f9b6

[CL 15284567 by geoff evans in ue5-main branch]
2021-02-02 16:47:04 -04:00
Patrick Laflamme
1f5993dff0 Fixed CIS errors reported on Android.
#jira - UE-106832 //UE5/Main - Compile FortniteClient Android - EditorAnalyticsSession.cpp errors
#rb Trivial.

[CL 15146147 by Patrick Laflamme in ue5-main branch]
2021-01-20 13:41:51 -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
d2a8e90a0d Fixed static analyis warning V634: The priority of the '*' operation is higher than that of the '<<' operation. It's possible that parentheses should be used in the expression in EditorAnalyticSession.cpp
#rnx
#rb Trivial

[CL 14913128 by Patrick Laflamme in ue5-main branch]
2020-12-14 09:35:27 -04:00
Patrick Laflamme
4ea7ec01f2 Fixed a race condition firing an ensure when saving the Editor analytic session in background.
#rb Jamie.Dale

[CL 14891480 by Patrick Laflamme in ue5-main branch]
2020-12-09 16:15:57 -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
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
Marc Audy
a7c9001a94 Merging //UE5/Release-Engine-Staging to Main (//UE5/Main) @ 14075166
#rb
#rnx

[CL 14075271 by Marc Audy in ue5-main branch]
2020-08-11 01:36:57 -04:00
Marc Audy
11f5b21210 Merging //UE5/Release-Engine-Staging @ 13752110 to Main (//UE5/Main)
#rnx

[CL 13753156 by Marc Audy in ue5-main branch]
2020-06-23 18:40:00 -04:00
patrick laflamme
0364d01a96 #jira UE-92319 - Normal Editor shutdown can be reported as abnormal shutdown because of lock contention
- In case of contention on the system session lock, fallback on the lockless mechanism (the one use for crash/terminate) to report the shutdown (we may not save everything, but we will save the most important information)

#rb none
#lockdown cristina.riverun

#ROBOMERGE-SOURCE: CL 12974643 in //UE4/Release-4.25/... via CL 12974652 via CL 12974654
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v682-12900288)

[CL 12974660 by patrick laflamme in Main branch]
2020-04-22 10:39:52 -04:00
patrick laflamme
30017ee6f0 #jira UE-92231 - Editor session summary event doesn't have any link to CrashGUID
- Implemented a special logger inside CrashReportClientEditor to capture and save important events such as crash reporting (along with the CrashGUID)
  - When CrashReportClientEditor sends all the Editor summary events, if an error was detected in the session being sent, the mini-log for that session is attached to the analytic event.

#rb Chris.Gagnon, Jamie.Dale
#lockdown cristina.riverun

#ROBOMERGE-SOURCE: CL 12935952 in //UE4/Release-4.25/... via CL 12935970 via CL 12935996
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v682-12900288)

[CL 12936020 by patrick laflamme in Main branch]
2020-04-20 15:38:55 -04:00
patrick laflamme
847fb54e89 Detected and reported if CrashReportClientEditor crashed itself and improved how Editor analytics summarize few stats:
- Computed a more accurate 'idle' base on user inputs.
  - Experimenting a measurement of Editor 'idle' time based on Editor process CPU usage.
  - Recorded entering/exiting PIE right away rather than waiting the next 'heartbeat' up to 60 seconds.
  - In case the the session creation is delayed (because contention on the session lock), don't wait up to 60 seconds to retry. Retry immediatedly at the next tick.
  - Increased update rate of the session in the first minute to each second rather than each minute because lot of crashes occurs before the first minute.

#jira UE-91890 - Detect and report if CrashReportClientEditor is crashing
#rb Jamie.Dale
#lockdown cristina.riverun

#ROBOMERGE-SOURCE: CL 12751397 in //UE4/Release-4.25/... via CL 12751399 via CL 12783803
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v681-12776863)

[CL 12786319 by patrick laflamme in Main branch]
2020-04-14 16:52:27 -04:00
patrick laflamme
21f4994064 Fixed a variable in analytic session that could be use before initialization.
#jira none
#rb trivial
#lockdown cristina.riverun

#ROBOMERGE-SOURCE: CL 12695208 in //UE4/Release-4.25/... via CL 12695223 via CL 12695256
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v676-12543919)

[CL 12695269 by patrick laflamme in Main branch]
2020-04-09 15:53:20 -04:00
patrick laflamme
675cc37038 Prevented one CrashReportClientEditor from sending the report owned by another concurrent instance and losing the exit code.
#jira UE-91493 - CrashReportClientEditor may send a report owned by another concurrent instance losing the exit code in the process
#rb Jamie.Dale

#ROBOMERGE-SOURCE: CL 12598059 in //UE4/Release-4.25/... via CL 12598060 via CL 12598062
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v675-12543919)

[CL 12598063 by patrick laflamme in Main branch]
2020-04-03 16:23:51 -04:00