Prevent race conditions in process teardown sequences and use of Execution in the body closure #88
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 combines #81 and #87 into a single PR as it may be more difficult to understand the value of these fixes independently.
This patch ensures process termination monitoring is started after the body closure (which receives the Execution) called as part of the public API. This ensures that any use of Execution to send signals, etc., will send them to the right pid as we are guaranteed not to reap it until body returns. Additionally, we ensure the cleanup handler which runs the termination sequence is run ONLY once, and only run when the body closure throws or when the parent task is cancelled. In combination with the aforementioned process termination monitoring change, this ensures the termination sequence is similarly always sent to the right pid since it will always occur before the pid is reaped.
Closes #80
Closes #86