Repository navigation
bpo-33613, test_semaphore_tracker_sigint: fix race condition #7850
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 our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 1 commit
Commits
Show all changes
21 commits
Select commit
Hold shift + click to select a range
5f1df08
bpo-33613, test_semaphore_tracker_sigint: fix race condition
pablogsal 4f9babb
Implement PONG command in the semaphore tracker
pablogsal 26d81a3
Ensure the tracker is killed to allow multiple testing runs in the sa…
pablogsal a7d5c59
fixup! Ensure the tracker is killed to allow multiple testing runs in…
pablogsal a735d49
fixup! fixup! Ensure the tracker is killed to allow multiple testing …
pablogsal 9460da4
fixup! fixup! fixup! Ensure the tracker is killed to allow multiple t…
pablogsal fb136d0
Use a buffered writer to answer to the PING command
pablogsal f3d0f0b
Use the tracker own stderr for answering the PING command
pablogsal f5e5cf9
Use pthread_sigmask to avoid the race condition
pablogsal 4393021
Add comment explaining the race condition
pablogsal d501f2f
Restore timeout and use os.waitpid
pablogsal 9e0243e
fixup! Restore timeout and use os.waitpid
pablogsal 26e077b
Add News entry
pablogsal a50912b
fixup! fixup! Restore timeout and use os.waitpid
pablogsal bcbb942
fixup! Add News entry
pablogsal 0b46f07
fixup! fixup! fixup! Restore timeout and use os.waitpid
pablogsal 66ef7dc
Unregister sigmask if process fails to start
pablogsal f7d2d4d
Include the signal registering in the try block
pablogsal 4a09fde
Simplify comment when handling ChildProcessError
pablogsal c9f96c1
Eliminate hardcoded reference to the bug tracker url
pablogsal c0a088c
Remove extraneous NEWS file
pitrou File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next
Next commit
bpo-33613, test_semaphore_tracker_sigint: fix race condition
Fail `test_semaphore_tracker_sigint` if no warnings are expected and one is received. Fix race condition when the child receives SIGINT before it can register signal handlers for it. The race condition occurs when the parent calls `_semaphore_tracker.ensure_running()` (which in turn spawns the semaphore_tracker using `_posixsubprocess.fork_exec`), the child registers the signal handlers and the parent tries to kill the child. What seem to happen is that in some slow systems, the parent sends the signal to kill the child before the child protects against the signal. There is no reliable and portable solution for the parent to wait until the child has register the signal handlers to send the signal to kill the child so a `sleep` is introduced between the spawning of the child and the parent sending the signal to give time to the child to register the handlers.
- Loading branch information
commit 5f1df0887c1daefd137e66a90943d2afa292e8fb
There are no files selected for viewing
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
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.
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.
Why do you reduce time?
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.
Because one second seems a lot to me for the signal to be delivered (checked in the buildbot) and this will make the test suite run a bit faster. I can undo this if we want to be conservative :).
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.
Please keep 1 second. While you saw the test passing, I'm sure that reducing the sleep will make the test failure more likely on some very busy buildbots.