Schedule tasks where we've seen but not processed PTRACE_EVENT_EXIT #3883
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.
If we see the PTRACE_EVENT_EXIT for a task while running a different task in unlimited-ticks mode in
Scheduler::reschedule
, it looks like nothing ever actually callshandle_ptrace_exit_event
on it, and so nothing ever PTRACE_CONT's the task out of the exit-stop and into the zombie state.This seems to manifest itself as rr not reaping processes properly when they receive asynchronous core-dumping signals (e.g. SIGSEGV sent by
raise
orkill
).Fix this issue by checking if there's a pending PTRACE_EVENT_EXIT to deal with on the task in
Scheduler::is_task_runnable
, and allowing the task to be executed if so.Fixes #3882