Commit Graph

118 Commits

Author SHA1 Message Date
brandon schaefer
68c446a297 Add support for an Allow Syscall filter file to be passed into the Engine (supports x64 and arm64)
This will cause any syscall *not* in the allow list to cause SIGSYS and then we will exit from our signal handler (unless our signal handler uses a syscall that is not supported in which case we will crash, though a core dump will need to be checked)

Requires explicitly calling this function where you want to actually *setup* the filters:
FPlatformMisc::SetupSyscallFilters();

To use:
-allowsyscallfilterfile=<path/to/allow_filter_file.txt>

Example of file:
read
write
open
mprotect 2 4 0 1

There are only two supported rules for the file:
<syscall_name>
<syscall_name> <syscall_arg_number_zero_based_index> <value> <allow> <check bit only>

#jira UE-169652
#rb Josh.Adams, Robert.Seiver, Calvin.Zheng
#preflight 636d44e81c14fe450503f5cf

[CL 23091532 by brandon schaefer in ue5-main branch]
2022-11-10 20:45:09 -05:00
sarah noonan
1a993b9ada *Remove per-frame caching of stats from FPlaformMemory::GetStats and move caching into helper function.
*Update common callers of FPlaformMemory::GetStats to use the helper.
[REVIEW] [at]matt.peters

[CL 22596606 by sarah noonan in ue5-main branch]
2022-10-18 07:22:43 -04:00
evgenii babinets
528585a552 Merging with resolved conflicts on behalf of sarah.noonan. Original CL description:
*Make FPlatformMemory::GetStats cache memory stats per frame to prevent multiple costly platform calls per frame ( by default, has option to request non-cached values ).
*Update some calls to FPlatformMemory::GetStats to specifically request non-cached values.
[REVIEW] [at]evgenii.babinets [at]andrew.ladenberger


#preflight 634a04c0907f4749392d75d0

[CL 22545788 by evgenii babinets in ue5-main branch]
2022-10-14 21:13:08 -04:00
robert seiver
b4db2e582f Temporary workaround for creating processes that use two unique pipes
#fyi Brandon.Schaefer, James.Singer, Ryan.Neyland
#preflight 633ef28fb7327403d9a2c42b

[CL 22459137 by robert seiver in ue5-main branch]
2022-10-11 11:51:54 -04:00
bryan sefcik
72be98c810 Moved IN and OUT defines to HAL/Platform.h
#jira
#preflight 63371394466fb436691a350a

[CL 22279776 by bryan sefcik in ue5-main branch]
2022-09-30 16:18:41 -04:00
anton dunchev
e825604e90 Process control:
- Implemented priority control on Unix platform
- Refactored RunnableThreadUnix implementation
- Bump resource limits for process scheduling priority (nice) if possible

#rb LouisPhilippe.Seguin, Brandon.Schaefer
[FYI] anrew.ladenberger

[CL 22087348 by anton dunchev in ue5-main branch]
2022-09-19 22:28:24 -04:00
Bryan sefcik
b4a6e947d8 Ran IWYU on Public headers under Engine/Source/Runtime/...
Headers are updated to contain any missing #includes needed to compile and #includes are sorted.  Nothing is removed.

#ushell-cherrypick of 21065896 by bryan.sefcik
#preflight 62d4b1a5a6141b6adfb0c892
#jira

#ROBOMERGE-OWNER: Bryan.sefcik
#ROBOMERGE-AUTHOR: bryan.sefcik
#ROBOMERGE-SOURCE: CL 21150156 via CL 21151754 via CL 21154719
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v972-20964824)
#ROBOMERGE-CONFLICT from-shelf

[CL 21181076 by Bryan sefcik in ue5-main branch]
2022-07-20 11:31:36 -04:00
bryan sefcik
b509beb314 Added a few IWYU pragma comments.
#preflight 62ce5231b90bf53969409839

[CL 21067982 by bryan sefcik in ue5-main branch]
2022-07-13 01:25:24 -04:00
bryan sefcik
5774b4842a Added more IWYU pragmas.
#preflight 62c860d0b04c766648963c4f

[CL 21009868 by bryan sefcik in ue5-main branch]
2022-07-08 13:11:06 -04:00
bryan sefcik
1d773c7d68 Added a few IWYU pragmas.
#preflight 62c8389f7e606620fd5bb338

[CL 21006651 by bryan sefcik in ue5-main branch]
2022-07-08 10:16:40 -04:00
bryan sefcik
746b7df074 Same as CL 20991367:
Updated Core code to not use CoreMinimal.h when possible.
Core public headers still will contain CoreMinimal.h if any included it before my IWYU changes.
#preflight 62c74ed0324817d81488b7ee

[CL 20993420 by bryan sefcik in ue5-main branch]
2022-07-07 17:41:31 -04:00
bryan sefcik
a9cc65bca4 Updated Core code to not use CoreMinimal.h when possible.
Core public headers still will contain CoreMinimal.h if any included it before my IWYU changes.
#preflight 62c73594756222ced4e48707

[CL 20991367 by bryan sefcik in ue5-main branch]
2022-07-07 16:02:19 -04:00
bryan sefcik
0f06d550e6 Fixed some issues found when running includetool.
#preflight 62c72fe82823f28cf2273112

[CL 20990373 by bryan sefcik in ue5-main branch]
2022-07-07 15:29:27 -04:00
bryan sefcik
67b8a4e636 Fixed compile issue.
#preflight 62c72b04702597cc87625d1a

[CL 20989797 by bryan sefcik in ue5-main branch]
2022-07-07 15:09:55 -04:00
bryan sefcik
9905eb52bb Pass 2 on running IWYU on Core.
Things to note regarding this pass:
* No includes are currently being removed from public headers.
* Any private file that has a #if is currently not being updated.
#preflight 62c703bbd13fac04f11da948

[CL 20985655 by bryan sefcik in ue5-main branch]
2022-07-07 12:30:11 -04:00
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