This repository was archived by the owner on Jun 5, 2025. It is now read-only.
Fix possible crash navigating away from Dashboard#3619
Merged
Conversation
guimafelipe
approved these changes
Aug 15, 2024
lauren-ciha
approved these changes
Aug 15, 2024
adrastogi
approved these changes
Aug 15, 2024
dkbennett
approved these changes
Aug 16, 2024
DefaultRyan
reviewed
Aug 20, 2024
| { | ||
| _log.Debug($"Unloading Dashboard, cancel any loading."); | ||
| _initWidgetsCancellationTokenSource.Cancel(); | ||
| _initWidgetsCancellationTokenSource?.Cancel(); |
Member
There was a problem hiding this comment.
There's still a race condition because InitializeDashboard() does some amount of non-trivial work before initializing _initWidgetsCancellationTokenSource. So it's possible that we could see this sequence:
OnLoadedAsync()called,InitializeDashboard()starts running,_initWidgetsCancellationTokenSourcestillnull.OnUnloadedAsync()called,_initWidgetsCancellationTokenSourcestillnull, so no call toCancel().InitializeDashboard()finally reaches the point where it initializes_initWidgetsCancellationTokenSource, but becauseOnUnloadedAsync()is already finished, the cancellation never gets called.
Is there a reason we don't simply initialize the cancellation token in the constructor, so even in this case InitializeDashboard will eventually see the cancellation?
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
Summary of the pull request
If something terrible happens during Dashboard startup and the
_initWidgetsCancellationTokenSourcein not initialized, then cancelling it when we move away from the Dashboard can cause a crash. Check that the object is initialized before trying to use it.References and relevant issues
Detailed description of the pull request / Additional comments
Validation steps performed
PR checklist