* Added support for starting processes suspended
* Added support for processes being able to start processes that are not child processes (services like mspdbsrv.exe etc)
* Moved wait-for-parent code to its own function
[CL 34393790 by henrik karlsson in ue5-main branch]
* Added option to be able to trace child processes in visualizer
* Made WriteDirectoryEntries offset output parameter optional
* Fixed so GetKeyAndFixedName can handle relative paths
[CL 34393678 by henrik karlsson in ue5-main branch]
* Added option to keep files in memory
* Added option to allow using output files (transferred via handle to session process)
* Added option to suppress logging
[CL 34393564 by henrik karlsson in ue5-main branch]
* Renamed system stats to kernel stats
* Changed all stats storing to use bitfield first to say which fields that are non-zero
[CL 34058881 by henrik karlsson in ue5-main branch]
* Added StringView type and replaced a ton of string+stringLen to StringView
* Fixed bug in obj file preloader.
* Fixed so clang targets can used compressed obj files
* Fixed bug in cache client when entry count is zero
* Added magic to compressed obj file header to be able to see if an obj file is compressed or not
* Moved ParseArguments to its own file and added so it can handle both char and wchar
[CL 33933853 by henrik karlsson in ue5-main branch]
* Fixed bug in cache client where it could create a caskey for a file that should always go through ShouldNormalize that matches caskey of non-normalized file
* Added timers around traverse directory calls to be able to see how much time that is spent in traversing directories
[CL 33855227 by henrik karlsson in ue5-main branch]
* Changed so uba consumes command line option "/extractsymbols" and will use that to decide if symbols should be extracted from obj file
* UbaObjTool - Some cleanups and optimizations. Also added code just to get it in the version control (will remove again)
* Renamed symbol files from .sym to .exi (exportimport) to not collide with already existing .sym extension
[CL 33787308 by henrik karlsson in ue5-main branch]
* Fixed code related to process reuse. It was not resetting variables properly
* Added support for detoured SHGetKnownFolderPath
* Fixed so logs for remote child processes are networked over to server when remoteLogs are enabled
* Improved some assert messages
* Fixed some binaryreaderwriter mismatches (they where harmless, just caused asserts)
* Fixed so local system temp folder can always be found when recursing from root to system temp. This is a horrible hack because it could cause bad conflicts between host file system and helper file system.. but solves current problems
* Moved removal of \\?\ into FixPath
[CL 33517723 by henrik karlsson in ue5-main branch]
* Added support for providing custom environment variables when creating UbaSession
* Reverted code using real environment variables when spawning processes...
[CL 33469655 by henrik karlsson in ue5-main branch]
* Added more logging information when farm gets a include not found error. This is temporary and will be deleted once we have figured out why this can happen now and then.
[CL 33368684 by henrik karlsson in ue5-main branch]
* Added special handling for cmd.exe copy processes and prevent spawning external process. Saves quite a lot of time when there is lots of copying
[CL 33207440 by henrik karlsson in ue5-main branch]
* Fixed serious bug related to child processes on helper machines getting process ids that collides with ids of root processes coming from server
* Fixed bug in trace reader causing reusable processes to get no stats
* Added good-to-have asserts
[CL 33064711 by henrik karlsson in ue5-main branch]
* Fixed so tracked inputs can be bigger than 512kb (ouch)
* Added to BinaryWriter so you can always write utf8 even though platform is not utf8
* Fixed bug in IsKnownSystemFile (there was a missing comma on one line). Added unit test
* Added Swap function to MemoryBlock which can be used to swap content of memoryblocks
* Added Parse function to StringBuffer that can parse a wchar stringbuffer into a char array
* Fixed TimeToText for times over 24 hours
* Added some accessors to Session
* Fixed so some temp files are not tracked as inputs for detoured process
* Added assert when message is created without body (it is a special case scenario)
* Removed final keyword on NetworkClient to be able to subclass in export logic (it is just easier)
[CL 32870061 by henrik karlsson in ue5-main branch]
* Added so process input dependencies can be tracked on remote compiles and sent back to host.
* Changed so ApplicationRules is a pointer on the ProcessStartInfo instead.. this in preparation of being able to have custom application rules but also be able to query rules before process instance is created
* Added support for suppressing error log if FileAccessor open file fails
* Fixed so BytesToText show bytes when under 1kb
* Fixed potential shutdown race related to process exiting and session instance being destroyed
* Some minor fixes here and there related to logging
* Changed process IsDetoured to GetExecutionType enum
[CL 32777954 by henrik karlsson in ue5-main branch]
* Added support for storing .obj files compressed by cl.exe and then decompressed in-memory by link.exe. Note this is not properly implemented and only work for cl.exe+link.exe combo
[CL 32625054 by henrik karlsson in ue5-main branch]
* Fixed bug where pipes between processes did not work properly on wine
* Added unit tests for pipes (win only)
* Improved error message when failing to open file
* Fixed so .obj is seen as output files from ispc.exe
* Fixed up application path when creating child processes
[CL 32537147 by henrik karlsson in ue5-main branch]
* 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]
* 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]
* 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]