Prevent races between dropping File LockGuard and waking its tasks #1056
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.
By changing the inner
LockGuard
value to anOption
and setting it toNone
indrop()
so we can drop theArc
before waking its tasks.Closes #1001
I have not added a regression test, because the only practical test I can think of is the busy loop, but I don't think we want a test like that.
I can easily reproduce the panic without the fix (the test crashes within 0.1-7 seconds on my machine), but with the fix I get no crash (I waited for 8 minutes).
To be honest I am not 110% sure that the fix is 100% sound, but intuitively this feels like a good fix. Maybe it is obviously correct (or obviously wrong) to people who are more familiar with this code base. I'm confident enough in the fix to consider it ready for CR at least.