Commit Graph

103 Commits

Author SHA1 Message Date
geoff evans
1981b2f5f3 StallDetector support for Linux
### 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]
2022-04-25 19:19:04 -04:00
robert seiver
98e1b3a69e Implement OpenMapped for Linux inside of UnixPlatformFile
#jira UE-147332
#rb Brandon.Schaefer
#fyi @James.Singer, @Johan.Torp
#preflight 62587d63946114248dc178b2

[CL 19762042 by robert seiver in ue5-main branch]
2022-04-14 16:03:05 -04:00
alex koumandarakis
c0f3b15a82 #8402 : PR : Add support for using poll instead of select in BSD sockets. Sockets will use poll by default (if supported by the platform), but this can be toggled with the USE_SOCKET_FEATURE_POLL macro.
#jira UE-126684
#rb Brian.Bekich, Brandon.Schaefer
#preflight 62585a33010ebc5d4e81eb25

[CL 19759812 by alex koumandarakis in ue5-main branch]
2022-04-14 13:46:36 -04:00
will damon
b17ecc43bb Add support for Xcode 13.3
- Always ignore -Wunused-but-set-variable (on Apple platforms).
- Ignore -Wunordered-compare-function-pointers on third-party includes (across all clang platforms).

#rb brandon.schaefer
#jira UE-145699
#preflight 622d1696dd1bf3a95a9dfbf0
#rnx

#ROBOMERGE-AUTHOR: will.damon
#ROBOMERGE-SOURCE: CL 19375174 in //UE5/Release-5.0/... via CL 19376309
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v926-19321884)

[CL 19378035 by will damon in ue5-main branch]
2022-03-14 16:31:05 -04:00
marc audy
2c4ef8db33 add new core delegates (OnParentBeginFork, OnParentPreFork, OnPostFork, OnEndFramePostFork) to allow interested parties a chance to take actions before and after the process fork point on dedicated servers
#jira UE-143512
#rb louisphilippe.seguin
#preflight
[REVIEW] [at]sam.zamani [at]rob.cannaday

#ROBOMERGE-OWNER: marc.audy
#ROBOMERGE-AUTHOR: evan.kinney
#ROBOMERGE-SOURCE: CL 19102416 via CL 19103934 via CL 19106412 via CL 19106558 via CL 19110150
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)
#ROBOMERGE-CONFLICT from-shelf

[CL 19151456 by marc audy in ue5-main branch]
2022-02-25 13:23:06 -05:00
Michael Sartain
d09ba57823 Implement FUnixPlatformMisc::GetPrimaryGPUBrand()
For NVIDIA, should return something like:

  "NVIDIA GeForce RTX 3080 Ti (NVIDIA UNIX x86_64 Kernel Module  470.86  Tue Oct 26 21:55:45 UTC 2021)"

And AMD Mesa:

  "AMD PCI-id: 1002-731f (1462-3811)"

#review-18888533 @Brandon.Schaefer, @Robert.Seiver
#fyi Thomas.Convard
#jira UE-141264
#preflight trivial

[CL 18889756 by Michael Sartain in ue5-main branch]
2022-02-07 13:56:08 -05:00
arne schober
1697186e12 FEM - enable aligned malloc for after it was accitently disabled a while back.
#ROBOMERGE-AUTHOR: arne.schober
#ROBOMERGE-SOURCE: CL 18701089 via CL 18701091 via CL 18701094 via CL 18702221 via CL 18702246 via CL 18702283
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)

[CL 18702287 by arne schober in ue5-main branch]
2022-01-22 14:45:23 -05:00
michael sartain
fc8351a183 Added FUnixPlatformFile::CopyFile() that differs from the generic implementation in that it also copies the file permission bits.
This is similar to CL 2421073, 2424491 for FApplePlatformFile.

[at]Brandon.Schaefer, [at]Robert.Seiver
[FYI] Will.Damon
#jira none
#preflight trivial

#ROBOMERGE-AUTHOR: michael.sartain
#ROBOMERGE-SOURCE: CL 18604349 in //UE5/Release-5.0/... via CL 18604376 via CL 18604394
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v899-18417669)

[CL 18604413 by michael sartain in ue5-main branch]
2022-01-13 15:57:24 -05:00
michael sartain
3e2943820e Add Linux -crashhandlerstacksize command line option to set crash handler stack size
Also move stack to mmap'd memory instead of alloc'ing in heap

Should allow us to set & reduce size of 200k stack significantly via command line.

Brandon.Schaefer
#jira none
#preflight 61dc61cb1f62d3ad4d8079d4

#ROBOMERGE-AUTHOR: michael.sartain
#ROBOMERGE-SOURCE: CL 18561402 in //UE5/Release-5.0/... via CL 18561404
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)

[CL 18561421 by michael sartain in ue5-release-engine-test branch]
2022-01-10 12:18:10 -05:00
jack porter
e7b6f0102c Add flag to FPlatformProcess::CreatePipe to indicate the pipe will be used for stdin redirection rather than stdout redirection.
Windows needs to set permissions accordingly.
#rb Brandon.Schaefer
[FYI] Josh.Adams
#preflight 61d79ed84c252480ca31e640

#ROBOMERGE-AUTHOR: jack.porter
#ROBOMERGE-SOURCE: CL 18539045 in //UE5/Release-5.0/... via CL 18539064
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)

[CL 18539081 by jack porter in ue5-release-engine-test branch]
2022-01-06 21:19:58 -05:00
Marc Audy
0c3be2b6ad Merge Release-Engine-Staging to Test @ CL# 18240298
[CL 18241953 by Marc Audy in ue5-release-engine-test branch]
2021-11-18 14:37:34 -05:00
nuno leiria
92c8a74ffe Change Stadia time to use Unix time again.
Functional tests discovered errors in the implementation. This way Improvements to Unix also improve Stadia without duplicated effort.

#preflight 61389e432d09b9000155e7e6
#rb trivial

#ROBOMERGE-AUTHOR: nuno.leiria
#ROBOMERGE-SOURCE: CL 17457455 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v870-17433530)

[CL 17457471 by nuno leiria in ue5-release-engine-test branch]
2021-09-08 09:07:40 -04:00
geordiemhall
1c5bfd52de Implement OutStdErr in FUnixPlatformProcess::ExecProcess
Add stderr parameter to CreateProc
Add exec-process test to TestPAL

PR #6919: Add a new FPlatformProcess::CreateProc() overload to allow separating stderr and stdout (Contributed by geordiemhall)

#rb Brandon.Schaefer, James.Singer, Robert.Seiver, Will.Damon
#jira UE-91758, UE-92964

#ROBOMERGE-SOURCE: CL 17290306 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v861-17282326)

[CL 17290325 by geordiemhall in ue5-release-engine-test branch]
2021-08-24 14:16:10 -04:00
johan torp
272087e936 Fix OnOutOfMemory thread-safety issue when concurrent calls return from the function
Change all FPlatformMemory::OnOutOfMemory implementations to [[noreturn]]

#jira UE-93728
#rb steve.robb, arciel.rekman

#ROBOMERGE-SOURCE: CL 17212898 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v855-17104924)

[CL 17212911 by johan torp in ue5-release-engine-test branch]
2021-08-18 06:20:03 -04:00
aurel cordonnier
dc4bf61540 Merge from Release-Engine-Staging @ 17030559 to Release-Engine-Test
This represents UE4/Main @ 17030256 and Dev-PerfTest @ 17030553

[CL 17031509 by aurel cordonnier in ue5-release-engine-test branch]
2021-08-03 11:56:47 -04:00
louisphilippe seguin
9da3c4d82c Made UnixCrashContext for ensures thread-safe
* Stop adding/removing FTicker delegates outside the game-thread
* Made the concurrently uploading processes thread-safe using atomic state machine
* Added option to limit the number of processes on dedicated game servers
* Fix ensures not getting sent on dedicated game servers

#rb brandon.schaefer, robert.siever, ryan.gerleve
#jira FORT-392630


#ushell-cherrypick of 16969720 by louisphilippe.seguin

#ROBOMERGE-SOURCE: CL 16968970 in //Fortnite/Release-17.30/... via CL 16968983 via CL 16982775
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v838-16927207)

[CL 16982781 by louisphilippe seguin in ue5-release-engine-test branch]
2021-07-28 11:23:01 -04:00
brandon schaefer
a90cdbe7c2 Rename LinuxAArch64 to LinuxArm64
#jira UE-118127
#rb Michael.Sartain
[FYI] Marc.Audy, Aurel.Cordonnier

#ROBOMERGE-SOURCE: CL 16660821 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v834-16658389)

[CL 16660830 by brandon schaefer in ue5-release-engine-test branch]
2021-06-14 13:40:06 -04:00
danny couture
f358a5d8a4 Include mimalloc compilation as part of the core module instead of relying on prebuilt binaries
- This will make maintenance for multiple platforms a lot easier (i.e. just preflight)
  - Will be easy to get callstack and debug since it will be compiled on the machine it is debugged on
  - Easier to try out modifications on mimalloc itself
  - Fix mimalloc compilation under Clang 10
  - Fix mimalloc inconsistent usage of MI_ENCODE_FREELIST define
  - Fix mimalloc inconsistent usage of _WIN32 define
  - Implement MacOS and Unix -mimalloc command-line switch

- Some MacOS changes were contributed by Will.Damon

#rb Brandon.Schaefer, Will.Damon
#preflight 60b4ea613c6c4e000158233e
#rnx

[CL 16512512 by danny couture in ue5-main branch]
2021-06-01 05:35:42 -04:00
aurel cordonnier
43fa62fcd8 Merge from Release-Engine-Test @ 16487383 to UE5/Main
This represents UE4/Main @ 16445039 and Dev-PerfTest @ 16444526

[CL 16488106 by aurel cordonnier in ue5-main branch]
2021-05-27 13:40:37 -04:00
robert seiver
7d09c12286 Pull request #7677 to give actual OS version name data instead of previously hardcoded OS name
#jira UE-106398
#review @Brandon.Schaefer
#rb Brandon.Schaefer

[CL 16474875 by robert seiver in ue5-main branch]
2021-05-26 16:28:01 -04:00
aurel cordonnier
50944fd712 Merge UE5/RES @ 16162155 to UE5/Main
This represents UE4/Main @ 16130047 and Dev-PerfTest @ 16126156

[CL 16163576 by aurel cordonnier in ue5-main branch]
2021-04-29 19:32:06 -04:00
Marc Audy
01b7c9f4f5 Merge UE5/RES @ 15958325 to UE5/Main
This represents UE4/Main @ 15913390 and Dev-PerfTest @ 15913304

[CL 15958515 by Marc Audy in ue5-main branch]
2021-04-08 14:32:07 -04:00
will damon
0ea481a548 Add "uninitialized const reference" warning disable flag for third party includes.
- Add PRAGMA_DISABLE_UNINITIALIZED_CONST_REFERENCE_WARNINGS and PRAGMA_ENABLE_UNINITIALIZED_CONST_REFERENCE_WARNINGS.

#rb steve.robb, chris.babcock, brandon.schaefer, michael.sartain
#jira none
#rnx

[CL 15861362 by will damon in ue5-main branch]
2021-03-30 09:31:31 -04:00
Johan Torp
ae8157b855 Add FPlatformMisc::NormalizePath(FStringBuilderBase&) overload
#rb steve.robb, devin.doucette

[CL 15848637 by Johan Torp in ue5-main branch]
2021-03-29 02:56:56 -04:00
Andriy Tylychko
0a5583a6a9 changed FUnixPlatformMisc::NumberOfWorkerThreadsToSpawn to match the logic for Windows, as it was too pessimistic (outdated) for modern hw with high number of cores. This affects Linux, LinuxAArch64 and platforms derived from them
[CL 15830611 by Andriy Tylychko in ue5-main branch]
2021-03-25 15:58:34 -04:00