Commit Graph

78 Commits

Author SHA1 Message Date
Stefan Boberg
d2f9a61b06 Copy-up from Dev-Core
#rb none

[CL 10419044 by Stefan Boberg in Main branch]
2019-11-25 12:03:09 -05:00
patrick laflamme
93ab27052b #jira UE-83339 - Disaster Recovery can fail to recover its session when the project is opened from the Project Browser
- Fixed a disaster recovery bug preventing the Editor from recovering a session because another instance of the Editor on another project already locked all the sessions.

Problem:

On windows, the CrashReportClientEditor (hosting disaster recovery service) is started in the static initialization, before the engine is initialized, not allowing lot of command line configuration. The Editor project browser would start a first CrashReportClientEditor instance, which would load and lock all the available sessions (unless another CrashReportClientEditor was running). When the user selected a project, a new Editor and CrashReportClientEditor were launched before the first one was closed. The second instance could not access the existing sessions because they were still locked by the first instance.

Solution:

Because CrashReportClientEditor is launch before the engine is initialized, we don't have any context at the launch time. The best the was to delay the moment when the server reloads the existing sessions and enable each clients to store their sessions in different folders (repositories) mounted on demand by the server.

Implementation details:
  - Implemented new RPC API to allow the client to list/create/load/drop specific repositories containing its own sessions on demand.
  - Updated the Concert server to manage multiples directories where session can be stored/found (session repositories) rather than just one.
  - Added a settings to allow the user to specify where the disaster recovery sessions should be stored on the disk. Now default in the current project folder.
  - Added a settings to prevent the Concert server from scanning the sessions in the default location.
  - Updated disaster recovery to start without any session repository and let the client decide if a new one needs to be created or an existing one be mounted to restore a previous session.
  - Changed the code to let disaster recovery client manage its session history rather than letting the server rotate the old session. Defaulted the history to 0, user has no flow to visualize and pick from the history.

#rb Jamie.Dale

#ROBOMERGE-SOURCE: CL 10260823 in //UE4/Release-4.24/...
#ROBOMERGE-BOT: RELEASE (Release-4.24 -> Main) (v591-10236483)

[CL 10260830 by patrick laflamme in Main branch]
2019-11-15 12:55:57 -05:00
jamie dale
9457015249 Initialize and Shutdown analytics for each crash reported by the monitor
This ensures that we honor the user-settings for reporting analytics correctly if they change while the editor is running.

#jira UE-82764
[FYI] Johan.Berg
#rb Sebastian.Nordgren
#rnx

#ROBOMERGE-SOURCE: CL 9902945 in //UE4/Release-4.24/...
#ROBOMERGE-BOT: RELEASE (Release-4.24 -> Main) (v558-9892490)

[CL 9902964 by jamie dale in Main branch]
2019-10-31 12:39:36 -04:00
johan berg
bd51031375 Prevent analytics being initialized twice
When the user has allowed usage data to be sent we initialize the analytics backend in the crash report client. If the user has also enabled sending unattended reports and an ensure is encountered followed by a crash the crash reporter would assert because the analytics backend was being initialized twice.

#rb sebastian.nordgren
#jira UE-82764

#ROBOMERGE-SOURCE: CL 9899678 in //UE4/Release-4.24/...
#ROBOMERGE-BOT: RELEASE (Release-4.24 -> Main) (v558-9892490)

[CL 9899681 by johan berg in Main branch]
2019-10-31 08:19:10 -04:00
johan berg
b70955bdea Allow game/editor to continue execution earlier after a crash.
A previous change moved the signal to the game/editor that it's okay to continue to after the crash report client was completely done with sending and resolving callstacks, because it was assumed that there was a syncronization problem. However that proved to be another issue, so moving the signal back to where it was originally. This should make the editor only "freeze" a short time, while necessary data is collected.

#jira UE-82333
#rb pj.kack

(ushell-p4-cherrypick of 9868282 by Johan.Berg)

#ROBOMERGE-SOURCE: CL 9868804 in //UE4/Release-4.24/...
#ROBOMERGE-BOT: RELEASE (Release-4.24 -> Main) (v548-9842178)

[CL 9868810 by johan berg in Main branch]
2019-10-28 09:56:39 -04:00
ben marsh
4e13df3463 Fix assert in CrashReportClient when shutting down without sending a crash report.
#rb none
[FYI] sebastian.nordgren
#jira UE-82436

#ROBOMERGE-SOURCE: CL 9838412 in //UE4/Release-4.24/...
#ROBOMERGE-BOT: RELEASE (Release-4.24 -> Main) (v546-9757112)

[CL 9838415 by ben marsh in Main branch]
2019-10-25 08:54:17 -04:00
sebastian nordgren
d7fbf013c6 We now spoof a crash report and send it from the CrashReportClientApp when detecting an abnormal shutdown has occurred. That is to say, a shutdown where, as far as we can tell, no known exit path was followed.
Reverted change to where FCrashReportAnalytics was initialized now that we get those settings from the UECrashContext file.

Added DelayedSend analytics attribute that determines whether or not the process that is sending an analytics event was the same one that created it.

#rb jamie.dale

#jira UETOOL-1826

#ROBOMERGE-SOURCE: CL 9731024 in //UE4/Release-4.24/...
#ROBOMERGE-BOT: RELEASE (Release-4.24 -> Main) (v539-9700858)

[CL 9731027 by sebastian nordgren in Main branch]
2019-10-21 08:17:44 -04:00
ben marsh
12cc1a8499 Fix missing icon in CrashReportClient.
#rb none
#jira UE-82092
#rnx

#ROBOMERGE-SOURCE: CL 9710426 in //UE4/Release-4.24/...
#ROBOMERGE-BOT: RELEASE (Release-4.24 -> Main) (v539-9700858)

[CL 9710427 by ben marsh in Main branch]
2019-10-18 21:17:02 -04:00
Jamie Dale
f6cbdd7e62 CIS fix
#jira
#fyi Patrick.Laflamme
#rb none
#rnx

[CL 9619706 by Jamie Dale in 4.24 branch]
2019-10-16 12:32:26 -04:00
Patrick Laflamme
6805fb63aa #jira UE-81549 - Disaster Recovery fails to find the session after selecting Send and Close or Send and Restart in Crash Reporter
- Cleared the concert server instance info on server shutdown.
  - Shutdown the disaster recovery service when a crash is created. This enable the next server instance to grab the file lock and restore.
  - Fixed archive rotation (delete oldest) that did not work when concurrent servers existed.
  - Improved disaster recovery error messages.
  - Fixed disaster recovery client not restoring a session that was crashed (server managed the crash), but for which the client process was still hanging around.
  - Prevent showing the recovery UI if -unattended is specified on command line.

#rb Jamie.Dale

[CL 9617188 by Patrick Laflamme in 4.24 branch]
2019-10-16 10:41:37 -04:00
Jamie Dale
d0f7b3060f Only include disaster recovery session data in crash reports when asked to upload log files
#fyi Patrick.Laflamme
#rb Patrick.Laflamme
#rnx

[CL 9489700 by Jamie Dale in Main branch]
2019-10-09 12:39:19 -04:00
Jamie Dale
80769d305f Gather CrashReportClient into the Engine LocRes
#jira UE-80470
#fyi Michelle.Zhao, Yali.He
#rb none
#rnx

[CL 9474225 by Jamie Dale in Main branch]
2019-10-08 11:37:02 -04:00
Stefan Boberg
1f813eb516 Copying //UE4/Dev-Core to Main (//UE4/Main)
#rb many

[CL 9405827 by Stefan Boberg in Main branch]
2019-10-03 16:26:48 -04:00
brandon schaefer
a715ea4f14 Deprecate GIsRequestingExit
Get GIsRequestingExit now by IsEngineRequestingExit()

Set GIsRequestingExit now by RequestEngineExit(const TCHAR* Reason) or RequestEngineExit(const FString& Reason)
NOTE If Reason is 4 or less chars it will generate an ensure to force a reason to exit

The reason behind this change is right now setting GIsRequestingExit to true can cause many things to break mainly early on and with out any sort of log warning we have entered this state. We should wrap this behind a function to allow for proper handling

#rb Chris.Babcock, Michael.Trepka, Michael.Noland
#jira UE-79933
[FYI] Michael.Noland


#ROBOMERGE-SOURCE: CL 8649683 via CL 8653683
#ROBOMERGE-BOT: (v417-8656536)

[CL 8658680 by brandon schaefer in Main branch]
2019-09-12 14:21:26 -04:00
Josh Markiewicz
d79515867d Copying //UE4/Dev-Online to Dev-Main (//UE4/Dev-Main)
- Up to CL8320930 from DevOnline and 8311605 Merge Down from Main
- skipped some Fortnite content/plugins/code where it tried to reintegrate files that had been moved pending investigation
#rb none

[CL 8321295 by Josh Markiewicz in Main branch]
2019-08-26 18:35:22 -04:00
brandon schaefer
9b6f8a27ec Always send the Pre/Post analytic payload when crashing if enabled
Fix an issue where FCrashReportClient would not call its dtor due to being held by SCrashReportClient

#jira UE-75354
[CODEREVIEW] Arciel.Rekman
[at]Arciel.Rekman
#rb Arciel.Rekman

#ROBOMERGE-OWNER: ben.marsh
#ROBOMERGE-AUTHOR: brandon.schaefer
#ROBOMERGE-SOURCE: CL 7675363 in //UE4/Release-4.23/... via CL 7675365
#ROBOMERGE-BOT: BUILD (Main -> Dev-Build) (v388-7785529)

[CL 7802542 by brandon schaefer in Dev-Build branch]
2019-08-06 12:13:51 -04:00
Ben Marsh
adaaeff8d7 UBT: Rename the bOutputPublicallyDistributable setting to reduce confusion. Now called ModuleRules.bLegalToDistributeObjectCode and TargetRules.bLegalToDistributeBinary.
#rb none
#rnx

[CL 7651516 by Ben Marsh in Dev-Build branch]
2019-07-29 15:00:54 -04:00
ben marsh
11f022162f Copying //UE4/Dev-Rendering to Dev-Main (//UE4/Dev-Main) [at] 6944469
#rb none
#rnx

#ROBOMERGE-OWNER: ben.marsh
#ROBOMERGE-AUTHOR: rolando.caloca
#ROBOMERGE-SOURCE: CL 6944849 in //UE4/Main/...
#ROBOMERGE-BOT: BUILD (Main -> Dev-Build) (v367-6836689)

[CL 7089689 by ben marsh in Dev-Build branch]
2019-06-19 08:52:32 -04:00
brandon schaefer
b0f9513623 Use the CRC to pop a message up not in crash reporting code
#rb none

#ROBOMERGE-OWNER: ben.marsh
#ROBOMERGE-AUTHOR: brandon.schaefer
#ROBOMERGE-SOURCE: CL 6854205 via CL 6854208 via CL 6854668 via CL 6854718
#ROBOMERGE-BOT: BUILD (Main -> Dev-Build) (v366-6836689)

[CL 6916096 by brandon schaefer in Dev-Build branch]
2019-06-10 15:50:15 -04:00
Josh Adams
1e4b186150 - Big update to platforms: PlatformExtensions
- This allows for Confidential platforms to exist outside of the engine, and insert themselves in as needed
- Directory structure is, where .... mirrors the directory structure for Engine and projects
     - /Platforms/XXX/....
- Moving to more data driven approach for ShaderPlatforms and PlatformInfo, where they can be read from DataDrivenPlatformInfo.ini files that live in the platform config folders
- Removed platform mentions from UBT, by way of changing some enums to partial classes with static members (see UnrealTargetPlatform)
- Various other UBT/UAT modifications to allow for looking in other locations for files
- THIS IS NOT A COMPLETE AND FINAL SOLUTION. WE WILL CONTINUE WORK IN DEV-BUILD BEFORE ITS READY FOR PRIMETIME
#rb ben.marsh

[CL 6271418 by Josh Adams in Dev-Build branch]
2019-05-03 08:03:23 -04:00
peter sauerbrei
b4bd6b75dd Add crash reporting to IOS.
Remove old CrashReportHelper
Move files dealing with crash upload and reporting to Runtime/CrashReportCore from CrashReportClient
Addition of CrashReporter Plugin in Fortnite for use with IOS
#rb brandon.schaefer, chris.bunner

#ROBOMERGE-OWNER: ben.marsh
#ROBOMERGE-AUTHOR: peter.sauerbrei
#ROBOMERGE-SOURCE: CL 5814730 via CL 5814731 via CL 5814748 via CL 5817030 via CL 5817031
#ROBOMERGE-BOT: BUILD (Main -> Dev-Build)

[CL 5847894 by peter sauerbrei in Dev-Build branch]
2019-04-12 13:17:14 -04:00
chris bunner
fd6d1a0103 Exposing CrashType and EngineData to the CRC analytic event.
#rb Wes.Hunt

#ROBOMERGE-OWNER: ben.marsh
#ROBOMERGE-AUTHOR: chris.bunner
#ROBOMERGE-SOURCE: CL 5810111 via CL 5810112 via CL 5810369 via CL 5813350 via CL 5813469
#ROBOMERGE-BOT: BUILD (Main -> Dev-Build)

[CL 5843141 by chris bunner in Dev-Build branch]
2019-04-12 13:02:29 -04:00
peter sauerbrei
cde7b8d738 Add crash reporting to IOS.
Remove old CrashReportHelper
Move files dealing with crash upload and reporting to Runtime/CrashReportCore from CrashReportClient
Addition of CrashReporter Plugin in Fortnite for use with IOS
#rb brandon.schaefer, chris.bunner


#ROBOMERGE-OWNER: peter.sauerbrei
#ROBOMERGE-AUTHOR: peter.sauerbrei
#ROBOMERGE-SOURCE: CL 5814730 via CL 5814731 via CL 5814748 via CL 5817030

[CL 5817031 by peter sauerbrei in Main branch]
2019-04-09 21:27:26 -04:00
chris bunner
87ed339f6b Exposing CrashType and EngineData to the CRC analytic event.
#rb Wes.Hunt


#ROBOMERGE-SOURCE: CL 5810111 via CL 5810112 via CL 5810369 via CL 5813350

[CL 5813469 by chris bunner in Main branch]
2019-04-09 17:09:00 -04:00
ben marsh
62b3c64b61 Workaround for corrupt minidumps on Windows 10 v1709. Bundle a working version of dbghelp.dll with the application, and attempt load it at startup before loading the system version. Disabled for any targets using CrashDebugHelper, which depends on a matching version of dbgeng.dll (which we can't distribute).
#rb none
#jira UE-70207

#ROBOMERGE-OWNER: ben.marsh
#ROBOMERGE-AUTHOR: ben.marsh
#ROBOMERGE-SOURCE: CL 5284948 in //UE4/Release-4.22/... via CL 5284959
#ROBOMERGE-BOT: BUILD (Main -> Dev-Build)

[CL 5286763 by ben marsh in Dev-Build branch]
2019-03-04 13:02:18 -05:00