28 Commits

Author SHA1 Message Date
henrik karlsson
9960d32fbe [UBA]
* Some minor fixes in uba visualizer

[CL 32498704 by henrik karlsson in 5.4 branch]
2024-03-26 02:02:41 -04:00
henrik karlsson
eff0af3c2b [UBA]
* 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 32497847 by henrik karlsson in 5.4 branch]
2024-03-26 01:25:58 -04:00
henrik karlsson
adcec89922 [UBA]
* 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 32496857 by henrik karlsson in 5.4 branch]
2024-03-26 00:50:14 -04:00
henrik karlsson
e1a2510c90 [UBA]
* Added PrefetchVirtualMemory function
* Fixed bug where code writing callstacks checks end of module to figure out if address belongs to module
* Changed so FileAccessor::CreateMemoryWrite set always allow read because you can't create file mappings that are write-only
* Added option to scheduler to force all runs to run native
* Fixed so bottleneck class has enter/leave function
* Added ScopedReadLock::Enter
* Moved LogWriter to its own file
* Visualizer - Fixed so when hovering over timeline time under pointer is showing
* Visualizer - Fixed so hovering over work records shows name, start and duration
* Visualizer - Added context menu item that can show/hide text of process bars
* Improved assert message
* Changed so lock is not on stack but is leaked to prevent shutdown warnings in debug
* Added missing includes

[CL 32496497 by henrik karlsson in 5.4 branch]
2024-03-26 00:38:57 -04:00
henrik karlsson
089435f6f1 [Uba]
* Fixed so visualizer does not crash with version 21 traces that contains log messages that have over 100 lines

[CL 32490873 by henrik karlsson in 5.4 branch]
2024-03-25 19:00:56 -04:00
henrik karlsson
610c24ca9e [Uba]
* Fixed bug in trace code where errors are more than 100 lines long

[CL 32489820 by henrik karlsson in 5.4 branch]
2024-03-25 18:43:18 -04:00
henrik karlsson
175916003f [UBA]
* Fixed allocation to make sure it honors alignments
* Added error handling in trace code. It will stop writing when running out of shared mem

[CL 31533724 by henrik karlsson in 5.4 branch]
2024-02-15 15:37:46 -05:00
henrik karlsson
7d1cb89461 [UBA]
* Fixed crash in UbaVisualizer when jumping back and forth in traces hitting edge cases with multiple sessions. Code was not cleaning up after itself properly

[CL 31511197 by henrik karlsson in 5.4 branch]
2024-02-14 23:32:57 -05:00
henrik karlsson
c35c4a0984 [UBA]
* Added hint to unmapfileview to be able to add useful information to asserts on fails
* Added error handling for vsnprintf returning error
* Fixed memory stomp in unit test
* Removed usage of %hs on non-windows since asan complains about it
* Changed UBA_USE_MIMALLOC to always be defined and be 0 or 1 instead of using ifdef
* Enabled mimalloc on linux

[CL 31355161 by henrik karlsson in 5.4 branch]
2024-02-09 16:14:14 -05:00
henrik karlsson
30d841dc4c [UBA]
* Removed logging entries that was only added to make horde not timeout.. since this was implemented horde has added ping logic so this is not needed anymore
* Fixed bug in callstack logging on posix
* Changed a bunch of %hs to %s
* Added allocator debug code to try to figure out asan issues

[CL 31281623 by henrik karlsson in 5.4 branch]
2024-02-07 20:38:28 -05:00
henrik karlsson
8dc45a8991 [UBA]
* Fixed so include-what-you-use json output is working properly with uba. "puts" implementation is wrong but don't remember why it was added first place so didn't dare changing it too much.. current change only affect remote helpers running on wine
* Fixed ubavisualizer hittest logic when status lines are added
* Enabled remote log transfer by default in UbaCli



#changelist validated
#virtualized

[CL 31224565 by henrik karlsson in 5.4 branch]
2024-02-06 14:08:32 -05:00
henrik karlsson
0135eca2cc [UBA]
* Fixed up replay controls in visualizer

[CL 31148189 by henrik karlsson in 5.4 branch]
2024-02-02 18:31:44 -05:00
henrik karlsson
599d896df7 [UBA]
* Added support for custom text in trace/visualizer... can be used to report things like horde status etc

[CL 31118476 by henrik karlsson in 5.4 branch]
2024-02-02 01:56:30 -05:00
henrik karlsson
733de33800 [UBA]
* Added more context menu options in visualizer to navigate trace

[CL 31058289 by henrik karlsson in 5.4 branch]
2024-01-31 14:20:33 -05:00
henrik karlsson
11ed67aeed [UBA]
* Added log entries to trace file

[CL 30669670 by henrik karlsson in ue5-main branch]
2024-01-17 16:49:50 -05:00
henrik karlsson
fa2772e27d [UBA]
* Added so in-process proxy can use storage of client
* Fixed reset of trace reader
* Fixed annoying warnings when closing invalid sockets

[CL 30667316 by henrik karlsson in ue5-main branch]
2024-01-17 15:28:30 -05:00
zack neyland
c91ba1805b UBA: Fixes various small bugs.
[CL 30662921 by zack neyland in ue5-main branch]
2024-01-17 13:07:52 -05:00
henrik karlsson
cdfbe93014 [UBA]
* Fixed so -replay works again when viewing files

[CL 30643275 by henrik karlsson in ue5-main branch]
2024-01-16 15:35:42 -05:00
henrik karlsson
4fc49e9e97 [UBA]
* Fixed visualizer drawing lines between two sessions started from the same client
* Removed the "- Disconnected" entries where client was disconnected super early before any information was available

[CL 30526213 by henrik karlsson in ue5-main branch]
2024-01-10 03:05:23 -05:00
henrik karlsson
e30e9214aa [UBA]
* Added popup menu on right mouse click
* Added so it is possible to save active visualizing session

[CL 30509401 by henrik karlsson in ue5-main branch]
2024-01-09 12:43:47 -05:00
henrik karlsson
ea673427b2 [UBA]
* 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]
2024-01-02 17:42:42 -05:00
henrik karlsson
32f666ea42 [UBA]
* Added Scheduler class that is a very simple scheduler that handles processes that has no intra dependencies. It handles scheduling remotely and also reschedule processes returned from remote machines.
* Changed so application dependencies are retrieved in parallel by clients
* Added so custom assert handler can be set from the outside
* Added traceEnabled to SessionCreateInfo so trace shared mem can be created without needing to launch visualizer or write to file
* Added so userData can be provided in RemoteProcessAvailable and RemoteProcessReturned callbacks
* Added more files to known system files (based on what exists in wine)
* Improved FindImports code and made it available in export. (it is now automatically filtering out known system files)
* Moved ProcessHandle to its own file
* Added ProcessStartInfoHolder which is a class that can wrap a ProcessStartInfo and make sure all strings are allocated

[CL 30437951 by henrik karlsson in ue5-main branch]
2023-12-22 02:41:43 -05:00
henrik karlsson
1a08aa22d7 [UBA - Visualizer]
* Fixed bug in listen flow so it sometimes didn't pick up new traces.
* Fixed annoying messagebox that popped up when starting listen session sometimes

[CL 30406947 by henrik karlsson in ue5-main branch]
2023-12-19 19:50:04 -05:00
henrik karlsson
054d26f056 [UBA]
* Fixed so all visualization of times in visualizer is taking timer frequency into account

[CL 30344197 by henrik karlsson in ue5-main branch]
2023-12-15 03:06:12 -05:00
henrik karlsson
3b2c6c6feb [UBA]
* Fixed visualizer crash

[CL 30284831 by henrik karlsson in ue5-main branch]
2023-12-12 21:27:20 -05:00