Fix a couple of issues with StackTraceSymbols.TryGetReader (#67300)
The implementation has a comment about how ConditionalWeakTable prevents multiple threads from racing to create readers, but CWT doesn't invole the delegate under its lock. So multiple threads can actually race to create a reader, and if one loses, it won't Dispose the reader it created. On top of this, every call to TryGetReader is allocating a closure, even if one of the fast paths is hit, because the cache callback captures all the parameters.
Showing
想要评论请 注册 或 登录