* Fixed badly formatted printf
* Added so failing to write output files return fail
* Moved a couple of message handlers to separate functions to solve stack complains from submit tool
[CL 32316873 by henrik karlsson in ue5-main branch]
* Added retry code for opening file for write. Will retry 5 times with one second in between. We have seen fails to open files for write randomly over the last five months (only a few times).. have no idea what could cause this.. have never seen it locally myself
* Fixed non unity compile error
[CL 32281959 by henrik karlsson in ue5-main branch]
* Fixed exit race condition for posix processes... session can end up in a situation where it sees the process as exited without getting an exit message.. we have assumed this was a crash but it is actually just a matter of message wait event timing out just before the exit message is written, and then the detoured process manages to exit before the isProcessAlive-checking happens..
Solution is simply to do one more check for messages in the shared memory if an exit has happened without an exit message
[CL 32268295 by henrik karlsson in ue5-main branch]
* Fixed so NetworkMessage can be created without initialized
* Removed unused code
* Fixed StorageClient::SendBatchMessages so it deletes correct number of messages if it disconnects in the middle of transfer
[CL 32262740 by henrik karlsson in ue5-main branch]
* Enabled file writing using memory maps (we've tested on two machines that behaves very different with file writing and mmap is the only path that makes write fast on both machines)
* Changed from lock to bottleneck for creating file mappings and allow four at the time.
[CL 32262457 by henrik karlsson in ue5-main branch]
* Added lots of more logging around processes disappearing without exit message
* Added descriptions to lots of asserts since macos refuse to give us good line numbers
* Added more error handling
[CL 32255038 by henrik karlsson in ue5-main branch]
* Added description to error message when process exits before getting exit message
* Changed NtQueryDirectoryFile usage in UbaDirectoryIterator to use ReturnSingleEntry=false to reduce number of kernel calls. It now uses a 64k buffer to receive as many entries as possible at the time
* Fixed bug in detoured NtQueryDirectoryFile after learning how it works by implementing ReturnSingleEntry=false
[CL 32227289 by henrik karlsson in ue5-main branch]
* Proper fix for setting size of file mapping.. bug was that it tried to set file mapping size on files that were readonly and error was confusing
[CL 32198674 by henrik karlsson in ue5-main branch]
* Changed so macos is using ftruncate instead of lseek+write. This fixes failed unit test on some macs
* Removed locks in UbaNetworkBackendMemory to fix potential deadlock
* Added StringBuffer::GetFileName since it is a common usecase when doing debug printing
* Added missing close of file descriptor in error situation
[CL 32191183 by henrik karlsson in ue5-main branch]
* Fixed so ref count of remote process is kept up in order to prevent it from being deleted at wrong point in time
[CL 32158427 by henrik karlsson in ue5-main branch]
* Huge stability push... all (known) paths have been tested heavily on linux with tsan and every single found race condition report has been fixed. Lots of locks have been added/moved/changed and some instances of things have been leaked on purpose to prevent tsan reports during shutdown
* More efficient storage proxy implementation which immediately forward segments to clients once they are available in proxy
* Added UbaAgent -command=x which can be used to send commands to host. Supported commands are "status"which prints out status of all remote sessions. "abort/abortproxy/abortnonproxy" that can be used to abort remote sessions and "disableremote" to have host stop accepting more helpers
* Fixed scheduler::stop bug if remotes were still requesting processes
* Added support for process reuse on linux/macos
* Added support for Coordinator interface and dynamically load coordinator dll in UbaCli
* Restructured code a little bit to be able to queue up all writes in parallel
* Added Show create/write colors to visualizer (defaults to on)
* Fixed so write file times are visualized in visualizer
* Improved socket path for visualizer
* Improved a lot of error messages
* Fixed double close of memory handle in StorageServer
* Changed some ScopedWriteLock to SCOPED_WRITE_LOCK (same for read locks)
* Fixed some missing cleanup of trace view when starting a new trace view in visualizer
[CL 32137083 by henrik karlsson in ue5-main branch]
* Added session notification message to be able to see why client is about to go away.. hopefully this will help us identify if there are crashes happening on remotes that we don't track
* Added ApplicationRules::AllowStorageProxy and changed so .obj files are never going through the storage proxy on fetch (they are only read by one process so no point feeding them through the proxy
* Fixed the file write-through code and gave the #if 0 a name (#if UBA_USE_WRITE_THROUGH).. still disabled since it didn't give any benefits enabling it
[CL 32025069 by henrik karlsson in ue5-main branch]
* Fixed missing assignment of process weight in assignment operator.. this caused remote machines to think all processes had the processor weight of 1 which is wrong for processes like cl.exe which cost 1.5 processors.
[CL 32024695 by henrik karlsson in ue5-main branch]
* Changed so in-process storage proxy is using memory network backend for communication with client
[CL 31982524 by henrik karlsson in ue5-main branch]
* Added __try/__catch to UbaAgent main and disabled the other seh exception handling to see if we get more luck with this on wine/linux
* Moved code from SessionClient ctor to start function to get around ordering issue where session can get connection callback in ctor
* Compile fix for test code caused by previous changelist
[CL 31982469 by henrik karlsson in ue5-main branch]
* Added support for handling server side messages and send response later
* Changed so storage proxy errors are muted when disconnected
* Improved error messages
[CL 31981923 by henrik karlsson in ue5-main branch]
* Fixed race condition in UbaNetworkClient related to message ids and returning message ids after use
* Implemented network backend that is using memory for communication (will be used between client and proxy server when running inproc)
* Added connection uid provided by network backend to be able to improve error messages
* Added NetworkBackend GetTotalSendAndRecv that can be used to fetch all traffic on backend
[CL 31981782 by henrik karlsson in ue5-main branch]
* Extracted work tracker out from work manager so it can be used for multiple work managers when running with proxies
[CL 31981685 by henrik karlsson in ue5-main branch]