Commit Graph

53 Commits

Author SHA1 Message Date
joe kirchoff
942ac23295 EpicGames.Core: Use SafeProcessHandle instead of SafeFileHandle for child process in ManagedProcess
#rnx

[CL 32868150 by joe kirchoff in ue5-main branch]
2024-04-10 19:26:45 -04:00
ben marsh
00bef38ea0 EpicGames.Core: Set the TaskCreationOptions.RunContinuationsAsynchronously flag by default for all task completion sources.
[CL 31180129 by ben marsh in ue5-main branch]
2024-02-05 13:12:31 -05:00
carl bystrom
6e4f5712f2 Horde: Add support for AppContainers in ManagedProcess
#rb Ben.Marsh
#rb Joe.Kirchoff

[CL 30300443 by carl bystrom in ue5-main branch]
2023-12-13 14:48:45 -05:00
Ben Marsh
9b0341142d EpicGames.Core: Ensure that managed processes are terminated if they are still in a suspended state.
[CL 27601135 by Ben Marsh in ue5-main branch]
2023-09-05 12:51:28 -04:00
Ben Marsh
e96e9a14f8 EpicGames.Core: Allow adding arbitrary processes to ManagedProcessGroup objects (eg. processes created with regular C# Process constructs).
#preflight none

[CL 24751669 by Ben Marsh in ue5-main branch]
2023-03-22 14:34:06 -04:00
Ben Marsh
0366d7924f Horde: Forcibly terminate child process groups after 60 seconds if the stdout pipe isn't closed.
#preflight one
#fyi Ryan.Hummer

[CL 24691714 by Ben Marsh in ue5-main branch]
2023-03-17 13:10:59 -04:00
joe kirchoff
dc12d7356c ManagedProcess: Don't create accounting job object with JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE as the main job object is already managing those processes and it is causing mspdbsrv to be terminated while in use by cl as it is a shared process
#jira UE-179732
#rb Danny.Couture
#lockdown Francis.Hurteau
#preflight 640a78783c2db400295299b4

[CL 24601415 by joe kirchoff in ue5-main branch]
2023-03-10 20:02:09 -05:00
joe kirchoff
a6bf4498ef EpicGames.Core: Backout ManagedProcess.cs, did not intend to submit it
#rnx
#rb trivial
#preflight 63ed7177b96a6b2718d11bc3

[CL 24247586 by joe kirchoff in ue5-main branch]
2023-02-15 19:05:29 -05:00
Joe Kirchoff
3f8dfd7a85 UnrealBuildTool: Split base ProjectFiles classes into their own .cs files
#rnx
#rb trivial
#preflight 63ed6d967d2ec3d2fd6954b2

[CL 24247118 by Joe Kirchoff in ue5-main branch]
2023-02-15 18:49:24 -05:00
Ben Marsh
aadef9cccd Fix static analyzer warning.
#preflight none

[CL 23145189 by Ben Marsh in ue5-main branch]
2022-11-15 17:53:00 -05:00
Ben Marsh
e425682876 EpicGames.Core: Swallow exception on abandoned child process reads.
#preflight none

[CL 23143931 by Ben Marsh in ue5-main branch]
2022-11-15 17:12:07 -05:00
Ben Marsh
075162706e EpicGames.Core: Fix static analysis warnings.
#preflight 633b4ae16b10157eac6f1f15

[CL 22314153 by Ben Marsh in ue5-main branch]
2022-10-03 17:01:13 -04:00
Ben Marsh
80c440a503 Fix Xmldoc warnings in EpicGames.Core prior to enabling tests in CI.
#preflight none

[CL 20777139 by Ben Marsh in ue5-main branch]
2022-06-22 13:23:01 -04:00
Ben Marsh
7103281f7b Fix mangled log output in UGS due to data being read into log buffer at incorrect offset.
#preflight none

[CL 20457420 by Ben Marsh in ue5-main branch]
2022-06-01 15:47:51 -04:00
Ben Marsh
21d420c5ad Horde: Add an agent command which builds UAT runs a BuildGraph script, parsing all the log output through the regular agent path.
#preflight none

[CL 20264248 by Ben Marsh in ue5-main branch]
2022-05-18 13:35:33 -04:00
Ben Marsh
5c04c02bbe C#: Set default editorconfig rules for static analysis and code formatting under Engine/Source/Programs/Shared. Add editorconfig files with exceptions for EpicGames.Build and EpicGames.UHT until code can be reviewed by owners.
#preflight none
#preflight 62599c0679048b7e5e4e11cd

[CL 19772356 by Ben Marsh in ue5-main branch]
2022-04-15 12:31:15 -04:00
Ben Marsh
cda1b66bba Reformat EpicGames.Core according to standard coding conventions.
#preflight 623cd2e84368f558e30b4a9e

[CL 19502309 by Ben Marsh in ue5-main branch]
2022-03-24 16:35:00 -04:00
Joe Kirchoff
e0c988c022 EpicGames.Core: Fix NullReferenceException when framework process stdout & err pipes aren't merged
#rnx
#rb trivial
#preflight 622688bf2f024043cc34e521

[CL 19293529 by Joe Kirchoff in ue5-main branch]
2022-03-07 17:53:22 -05:00
Ben Marsh
d8d4932331 EpicGames.Core: Fix potential exception reading past valid end of buffer when spawning child processes.
#preflight 621d1d55383b5494aa0ab1d1

[CL 19179344 by Ben Marsh in ue5-main branch]
2022-02-28 14:33:21 -05:00
Joe Kirchoff
1bea75f650 ManagedProcess: Process.StartTime & ExitTime can't be trusted on Mac
#rnx
#rb trivial
#preflight none

[CL 19045300 by Joe Kirchoff in ue5-main branch]
2022-02-17 19:06:44 -05:00
Ben Marsh
fd1f1f0c3b Restore CL 18614625 with fix for hang/memory leak.
#preflight none
#fyi Jack.Porter

[CL 18618782 by Ben Marsh in ue5-main branch]
2022-01-14 11:34:46 -05:00
Jack Porter
6cbd27e7e6 Back out CL 18601195 due to infinite hang/memory eat in UBT when building IOS or TVOS
#jira UE-139211
#preflight none
#rb Will.Damon
#fyi Ben.Marsh

[CL 18614625 by Jack Porter in ue5-main branch]
2022-01-13 23:40:02 -05:00
Ben Marsh
e031a88392 CS: Changes to ManagedProcess to better support cancellation on Mac/Linux when using merged output pipes.
- Data read from stdout/stderr is now writen to buffers posted in a Channel<T>, which correctly supports await and cancellation (unlike AsynchronousPipe).
- Public StdOut/StdErr streams are now a custom stream implementation that reads from the channel and copies data into the output buffer.
- Buffer objects are sized at 1024 bytes and pooled, which should be enough to accomodate most output lines without splitting.
- When the process is disposed, we now terminate the entire process tree. The tasks left reading from the child process terminate asynchronously.

Tested in a command line and WinForms app (by forcing SupportsJobObjects to return false) with asynchronous and synchronous reads to ensure code does not deadlock.

#preflight 61e062b3ed50181feb511e39

[CL 18601195 by Ben Marsh in ue5-main branch]
2022-01-13 14:17:35 -05:00
Ben Marsh
7a9e8c8b5c UGS: Significant refactor of UGS internals.
- Now uses the custom C++ Perforce library developed for Horde. This removes dependencies on an installed P4.EXE tool, improves performance, and paves the way to cross-platform support via command line invocations.
- As part of the migration to the new Perforce library, the codebase now uses async/await extensively instead of background threads, and supports a proper cancellation path rather than aborting threads.
- ILogger is now used for writing log files.
- Started converting to use of nullable annotations.

#preflight none

[CL 18511154 by Ben Marsh in ue5-main branch]
2022-01-04 14:03:17 -05:00
Joe Kirchoff
18fe2bc53f ManagedProcess: Remove unnecessary locks from merged stream copy when creating background threads to merge output streams
#preflight 614225ba9bba9a0001980a37
#rb Ben.Marsh
#rnx

[CL 17525066 by Joe Kirchoff in ue5-main branch]
2021-09-15 15:22:22 -04:00