* Added ProcessStartInfo::writeOutputFilesOnFail that can be set to true if we want the output files to be written/sent back even though process exited with errors
* Changed so session client use ProcessStartInfoHolder and moved serialization code to that class
[CL 30576299 by henrik karlsson in ue5-main branch]
* Beeeautiful hack to try to get around ETXTBSY error when spawning ispc processes on linux. Our theory is that with perfectly bad timing the symlink creation of ispc could happen at the exact same time as a posix_spawn happening and inside symlink there is a temporarily open file descriptor that gets cloned into the child and kept open. and this causes ETXTBSY when trying to open that binary.
Solution is simply to have a writelock around the symlink creation and a readlock around posix_spawn
[CL 30513020 by henrik karlsson in ue5-main branch]
* Added RegisterDeleteFile to external api that should be used when file is deleted outside of uba but uba needs to know about it
* Reduced lock scope around FlushDeadProcesses
* Fixed disconnect issue crash in ubaagent that could cause access violation in UbaStorage. Fix was to cleanup when leaving StorageClient::SendAllSegments
* Changed so UbaRequestNextProcess is doing a full environment update (not resetting stats) if no next process is found
* Fixed so Scheduler enableProcessReuse=false works properly
* Improved some assert descriptions
* Fixed so files in m_outputFiles in session client is erased when flushed to server
* Fixed so Rpc_GetFullName cleans up .. in paths
* Fixed so files that existed but has been deleted by external process is seen as not existing by remote detoured process.
[CL 30507663 by henrik karlsson in ue5-main branch]
* Implemented process reuse logic in UbaScheduler. It is now possible for running processes to fetch more work
* Fixed bugs in custom message path
* Fixed bugs in FlushWrittenFiles message
* Changed So UpdateEnvironment is resetting stats
* Fixed potential race condition related to process reuse
* Added special rule for ShaderCompileWorker.exe which detours ImageGetDigestStream in Imagehlp.dll (because wine implementation does not match windows implementation)
* Renamed "exitedUserData" to just userData since it is used for more than when exiting process
* Added a couple more dlls to "known system dlls"
* Fixed so visualizer can visualize process reuse properly
[CL 30462059 by henrik karlsson in ue5-main branch]
* Added retry for ETXTBSY failures when doing posix_spawn. Have no idea how these can happen but they do.
[CL 30311542 by henrik karlsson in ue5-main branch]
* Removed "EARLY_INIT" macro since this doesn't seem to work properly on macos.
* Changed so only one __attribute(constructor..) exists
* Replaced g_applicationRules with GetApplicationRules() to try to resolve initializationordering issues
[CL 30232292 by henrik karlsson in ue5-main branch]
* Implement simple commandline parser and added unit tests
* Removed usage of wordexp on non-windows platforms because it seems to have a _huge_ penalty on macos..
* Added trace scope around WriteFilesToDisk
* Fixed assert in stdout/err pipes on macos and added handling for poll hangup
*
[CL 30225204 by henrik karlsson in ue5-main branch]
* Implemented RunProcess which can be used to spawn and wait on raw processes (not detoured). (Note, calling program needs to report file system modifications since it is not known to UBA)
* Changed so UBAExecutor is using UBA for non-detoured processes as well. This will give correct profiling tracking and reuse existing code.
* Fixed handle leak in windows
* Fixed race condition on linux since wordexp() is n ot thread safe
* Added tests
* New binaries
[CL 30216046 by henrik karlsson in ue5-main branch]
* Fixed so puts is properly detoured so output logging going through there is captured by uba
* Fixed so linux application paths can contain spaces
[CL 30196216 by henrik karlsson in ue5-main branch]
* Brought back code where parent waits for children's m_hasExited because it can actually happen!! (Need to investigate)
[CL 30149195 by henrik karlsson in ue5-main branch]
* Checking returns a bit better
* Handling "/" in a friendly way since realpath calls stat with "/"
* Hooks up lockFd so we don't accidently close fd1 and fd2 (aka stdout/stderr)
* MacOS doesn't have subreaper so implement another way using sysctl
[CL 30129626 by zack neyland in ue5-main branch]
* Fixed bug with time stamps on linux.. was using seconds accuracy
* Fixed a few bugs on linux paths related to not updating directory caches properly when files changed
* Fixed so asserts are logging properly on linux
* Added debug logger for session side to be able to track all tracking of file caches (disabled by default)
[CL 30104061 by henrik karlsson in ue5-main branch]