Add support for new exception trace storage format #4635
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
To eliminate global spinlock in stack trace saving to exceptions, the format of the stack trace storage has changed. The
_stackTrace
array can now be either abyte[]
with the actual stack trace as before or anobject[]
where the first element references the byte[] with the actual stack trace and the following elements contain references toSystem.Resolver
orSystem.Reflection.LoaderAllocator
instances that keep code of methods that can be collected alive.This change modifies SOS to handle the
object[]
case properly, while staying compatible with the old way. Since the same code to get the stack trace was duplicated at two places, I have taken this opportunity to refactor it into a separate function.