On 09/06, Oleg Nesterov wrote: > > OK, I am stupid. Indeed, say, "return UTRACE_STOP | UTRACE_SIGNAL_IGN" > from under "case UTRACE_SIGNAL_REPORT" changes utrace_report->result, > and confuses other tracers. > > Probably we can ignore ptrace, but this also means ugdb conflicts > with itself and should be fixed.
Yes. I am a bit confused... OK, ugdb is wrong wrt multitracing. UTRACE_SIGNAL_REPORT case shouldn't return "UTRACE_STOP | UTRACE_SIGNAL_IGN", it should return "UTRACE_STOP | UTRACE_SIGNAL_REPORT" to keep report->result. But it needs to return UTRACE_SIGNAL_DELIVER? Probably we can check orig_ka != NULL and treat orig_ka == NULL as UTRACE_SIGNAL_REPORT. Hopefully this can't be confused with UTRACE_SIGNAL_HANDLER. Not sure about UTRACE_SIGNAL_HOLD, but this is very unlikely race. I need to re-read utrace_get_signal() with a fresh head. Oleg.