On 03/12, Roland McGrath wrote: > > > T calls REPORT(), nobody needs needs JCTL, finish_report() sees > > !->takers > > and calls utrace_reset(). It sets ->utrace_flags = 0. > > Nope: > > flags |= engine->flags | UTRACE_EVENT(REAP);
Hmm. But this leads to another question: why does utrace_reset() set UTRACE_EVENT(REAP) ? This looks as: make sure ->utrace_flags is never 0 unless we detach all engines. Perhaps because sometimes, say tracehook_notify_resume(), we just check task_utrace_flags() != 0 ? Imho, this needs a comment. Or I missed something obvious. Oh. utrace_attach_task()->utrace_add_engine() sets ->report + TIF_NOTIFY_RESUME. But tracehook_notify_resume() does nothing because ->utrace_flags == 0 ? Confused. Oleg.