-
Notifications
You must be signed in to change notification settings - Fork 8
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
Signal Delivery #30
Comments
This issues has been fixed. Signals are now delivered properly. There is noticeable delay between delivering a signal and the tracee receiving the signal. Consider the program: #include <signal.h>
#include <stdio.h>
int main(){
raise(SIGABRT);
printf("Hello World!\n");
} Running this program by itself aborts. But under dettrace it completes. We don't really have power to when the signal is delivered so this may be nondeterministic. We discussed a solution by:
Signals may be ignored if done through ptrace. From man ptrace(2):
So it seems tgkill is the way to go. |
Reopening this until we whitelist signal delivery. Summarizing some Slack discussion here for future reference:
|
As far as your second bullet point. I believe we receive a |
[this came up briefly in the call today] @devietti - re: "jumping directly to the signal handler", is the idea that signal delivery would be instantaneous? E.g., in a sequentialized set of processes/threads, one thread sending a SIGKILL should resolve immediately before any other code runs. Instantaneous signal delivery seems really appealing in a sequential scheduler. But, hmm, perhaps that would compromise achieving observable equivalence between a sequential scheduler and one that employs true parallelism... |
Closing this thanks to #106, we have this working for SIGALRM. |
Signals are not properly being delivered to children (except SIGKILL which always bypasses the tracer).
This causes issues when the OS wants to kill a process due to a segfault or SIGABRT.
The text was updated successfully, but these errors were encountered: