- Added "Discovered" status for symbol resolving of a module.
- Fixed deadlock for analysis thread when session completes. This bug also didn't allowed Insights app to terminate when closed. The bug occurs for relatively short mem trace sessions when the session analysis completes before callstack resolving fully loads all modules.
- Fixed issue where number of Discovered symbols for a module was lower than Resolved + Failed. Note: This issue might still occur when a module is reloaded, but should not occur anymore for normal callstack resolving.
#rb Johan.Berg
#preflight 62288cd031133a23da76cf94
[CL 19320366 by ionut matasaru in ue5-main branch]
Previously only enviroment variables paths that contained ';' very correctly parsed. And even in that case the last paths was discarded.
#rb none
#jira UE-140001
#preflight 61eec605aa3f15faa57afefe
#ROBOMERGE-AUTHOR: johan.berg
#ROBOMERGE-SOURCE: CL 18709084 in //UE5/Release-5.0/... via CL 18709097 via CL 18709326
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)
[CL 18709377 by johan berg in ue5-main branch]
* Implements functionality to search for symbols in a stack of search directories. Search directories can be added from configuration, environment variables or explicitly specified by user.
* Exposes module information and ability to enumerate detected modules.
* Adds functionality to attempt loading symbols for a module in a specific directory.
#rb ionut.matasaru, martins.mozeiko
#jira UE-137221
#preflight 61d56928932a02483cc346f7
#preflight 61d571e0ec35d1b940dad984
#ROBOMERGE-AUTHOR: johan.berg
#ROBOMERGE-SOURCE: CL 18517208 in //UE5/Release-5.0/... via CL 18517221
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)
[CL 18517223 by johan berg in ue5-release-engine-test branch]
Now it can resolve stripped pdb symbols, for example, which comes from Microsoft Symbol Server.
Insights will additionally use _NT_SYMBOL_PATH environment variable to lookup pdb files.
#rb Johan.Berg
#ROBOMERGE-AUTHOR: martins.mozeiko
#ROBOMERGE-SOURCE: CL 18330470 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v895-18170469)
#ROBOMERGE[STARSHIP]: UE5-Release-Engine-Staging Release-5.0
[CL 18330565 by martins mozeiko in ue5-release-engine-test branch]
This represents UE4/Main @18073326, Release-5.0 @18081140 and Dev-PerfTest @18045971
[CL 18081471 by aurel cordonnier in ue5-release-engine-test branch]
This represents UE4/Main @17911760, Release-5.0 @17915875 and Dev-PerfTest @17914035
[CL 17918595 by aurel cordonnier in ue5-release-engine-test branch]
Use Perf trace for context switches and stack sampling on PS4 and PS5.
#rb Ionut.Matasaru
#ROBOMERGE-SOURCE: CL 17277312 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v858-17259218)
[CL 17277323 by martins mozeiko in ue5-release-engine-test branch]
Implementation details:
- PS4 & PS5 uses dwarf symbol format and uses Syms symbol resolver.
- To resolve symbols the path to folder where .self file is built currently must be specified in UE_INSIGHTS_SYMBOL_PATH env variable for Insights.
- Multiple paths can be separated by ; in this variable.
- Build for PS5 does not seem to have PLATFORM_PS5 define, I used defined(__PS5__).
- PS5 runtime collects and sends callstacks, but Syms resolver does not support dwarf v5 format yet, which is used on PS5 toolchain.
#rb none
#preflight 6112ead49c7bb10001bc63fc
#ROBOMERGE-SOURCE: CL 17128247 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v855-17104924)
[CL 17128270 by martins mozeiko in ue5-release-engine-test branch]
Move SymsLib cleanup to a task. In the destructor we need to wait for the task to complete. Add support to cancel tasks in order to handle cases where a lot of tasks are in flight on shutdown (for example when shutting down early in analysis).
#rb ionut.matasaru
#rnx
[CL 16034590 by Johan Berg in ue5-main branch]
Previously the name was only displayed when results was successful. With this change we use the additional information in the status code to display module name and reason why the symbol name could not be resolved.
#jira UE-110008
#rb ionut.matasaru
[CL 16020408 by Johan Berg in ue5-main branch]
Reduces the memory footprint of the resolver by releasing all memory associated with each module once analysis is completed.
#rb ionut.matasaru
#rnx
[CL 16004256 by Johan Berg in ue5-main branch]
When parsing debug files and resolving symbols the RAD symbol resolver went very wide. This had two negative effects on performance:
* Module loading and symbol resolve tasks were scheduled together with Slate tasks, causing stuttering in rendering. With this change we move these tasks to the background threads since they are not time critical and to give preference to Slate rendering.
* Symbol resolves are very cheap compared to creating a task. With this change we batch resolve work in a fixed number of tasks.
* Resolve symbol tasks were competing for the string store lock. The ModuleProvider already handles symbol deduplication so each symbol string should already be unique. This change add a task local string allocator which does not have be thread-safe and can take advantage of batching by allocating memory in blocks.
#jira UE-113394
#rb ionut.matasaru
#rnx
[CL 16001877 by Johan Berg in ue5-main branch]
- Fixed/added the compile time macros to enable Symslib / DbgHelp resolvers.
- Fixed crash in Symslib resolver when analysis completes (thread safety for array with mapped file regions and handles).
- Attempt to fix a crash in Symslib resolver when loading a module (thread safety).
- Minor code style / coding standards fixes.
#rb Johan.Berg
[CL 15930686 by ionut matasaru in ue5-main branch]