Roland McGrath wrote:
[...]
What's supposed to happen is that ptrace_resume uses ptrace_set_action to
store UTRACE_SINGLESTEP. It then actually passes UTRACE_REPORT or
UTRACE_INTERRUPT to utrace_control (for the reasons explained in the
comments in the code for each of those cases).
The child should then get into either ptrace_report_quiesce or
ptrace_report_signal (ptrace_resumed case). These both use
ptrace_resume_action to extract what was saved by ptrace_set_action, which
should still be UTRACE_SINGLESTEP. Then whichever of these callbacks it is
should return that value, UTRACE_SINGLESTEP. It's that return value that
is what should ensure that user_enable_single_step actually happens (in
utrace.c:finish_resume_report).
I'm not entirely sure I understood your description of what you see
happening. But perhaps you can figure out exactly where it differs from
what I've described that I think it should do.
Thanks,
Roland
Understood.
The test step-simple can pass on 2.6.29-rc1+utrace(11 Jan). Seems the
regression has been fixed.
Regards,
Wenji