- Notifications
You must be signed in to change notification settings - Fork5.2k
[release/9.0] Root the System.Runtime EventSource#108348
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
The System.Runtime EventSource (RuntimeEventSource), was unintentionally being garbage collected because it wasn't rooted. This caused runtime EventCounters to no longer be available after GC occurred.This was a regression from a recent change (#106014). That change accidentally converted the static field that was intended to the root the object into a property getter that returned a new instance each time it was called. This fix converts the property back into a statically initialized field.This willfix#107919 once it is backported.
tarekgh commentedSep 27, 2024
jeffschwMSFT left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
lgtm. we will take for consideration in 9 GA
Tagging subscribers to this area:@tarekgh,@tommcdon,@pjanotti |
tarekgh commentedSep 30, 2024
/ba-g no real failure in the build analysis. The CI just skipped one leg. |
tarekgh commentedSep 30, 2024
Could someone have permission help merge this PR? Thanks! |
tommcdon commentedSep 30, 2024
I believe@jeffschwMSFT has merge permissions |
Uh oh!
There was an error while loading.Please reload this page.
Backport of#108266 to release/9.0
/cc@noahfalk
Customer Impact
Starting in RC1 runtime metrics available via dotnet-counters, dotnet-monitor, Visual Studio and potentially other tools were missing if the tool wasn't started quickly after app startup. Once the metrics were missing they are unrecoverable for the remainder of the process lifetime.
The underlying cause is that the RuntimeEventSource object which provides the counters was being garbage collected because it isn't properly rooted. The timing on how quickly the counters go away depend on how quickly the GC runs.
Regression
Regressed starting in RC1, caused by#106014
Testing
I manually tested the change using the repro provided in the issue report.
Risk
Low - the change restores behavior that was present before the regression, its a tiny code change that is easy to reason about, and its been tested.