Clean up the thread local memory regardless of managed thread's presence #95715
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.
Turns out that #95362 doesn't fully solve the problem of memory leak before we were freeing the thread local memory only if associated managed thread existed, which most of the time won't be around because we would reset it much earlier. To fix, we should delete the thread local memory regardless of underlying managed thread is present.
Below is the sample C# code that prints thread ids
[os, managed]
and the before/after logs of instrumentation I added.repro code
Before logs
After logs
Logging changes