Skip to content
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

Broadcast SIGPROF, rather than SIGALRM, when doing real time profiling #207

Closed
wants to merge 2 commits into from

Conversation

timpalpant
Copy link
Contributor

Real-time profiling uses a signal broadcast mechanism to capture all registered threads, since the SIGALRM delivered by ITIMER_REAL is only sent to the main thread.

This change updates the broadcasting logic to send SIGPROF to trigger the actual stack sampling handler, rather than SIGALRM. 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 receiving SIGPROF rather than SIGALRM, 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.

@timpalpant
Copy link
Contributor Author

Actually this doesn't help, SIGPROF still interrupts time.sleep with EINTR. Abandoning since there is not much benefit to separating this out.

@timpalpant timpalpant closed this Aug 8, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants