Broadcast SIGPROF, rather than SIGALRM, when doing real time profiling #207
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.
Real-time profiling uses a signal broadcast mechanism to capture all registered threads, since the
SIGALRMdelivered byITIMER_REALis only sent to the main thread.This change updates the broadcasting logic to send
SIGPROFto trigger the actual stack sampling handler, rather thanSIGALRM. This separates the logic for handling the broadcast (SIGALRM handler) from handling the stack collection (always SIGPROF handler). It also helps mitigate #159, since the threads will be receivingSIGPROFrather thanSIGALRM, which disrupts time.sleep (It is not a perfect fix because the main thread may still be disrupted, but this seems to be a limitation of setitimer). This also fixes the real_time_threaded test, which is currently marked xfail.Ref #153 and #204.