Add a safepoint in the maybe_destroy_plan spin lock #205
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.
This PR adds a safepoint in the
maybe_destroy_plan
spin lock to permit forward progress in that spin lock.Without it, the spin lock blocks forward progress and can ultimately deadlock the program.
This was implemented according to this observation.
I have tested this locally by running the minimum reproducible example; I can't get the program to deadlock any more.
I would like to write an automated test for this, but I can't think of one that would be reliable and run in a timely manner. My best method of testing this is running the minimal example code locally repeatedly and seeing if the program deadlocks.
Fixes #163.