From: Steven Rostedt <rostedt@goodmis.org>
To: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Peter Zijlstra <peterz@infradead.org>,
linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org,
bpf@vger.kernel.org, x86@kernel.org,
Masami Hiramatsu <mhiramat@kernel.org>,
Josh Poimboeuf <jpoimboe@kernel.org>,
Ingo Molnar <mingo@kernel.org>, Jiri Olsa <jolsa@kernel.org>,
Namhyung Kim <namhyung@kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Andrii Nakryiko <andrii@kernel.org>,
Indu Bhagat <indu.bhagat@oracle.com>,
"Jose E. Marchesi" <jemarch@gnu.org>,
Beau Belgrave <beaub@linux.microsoft.com>,
Jens Remus <jremus@linux.ibm.com>,
Andrew Morton <akpm@linux-foundation.org>,
Jens Axboe <axboe@kernel.dk>, Florian Weimer <fweimer@redhat.com>
Subject: Re: [PATCH v12 06/14] unwind_user/deferred: Add deferred unwinding interface
Date: Wed, 2 Jul 2025 15:36:00 -0400 [thread overview]
Message-ID: <20250702153600.28dcf1e3@batman.local.home> (raw)
In-Reply-To: <20250702152111.1bec7214@batman.local.home>
On Wed, 2 Jul 2025 15:21:11 -0400
Steven Rostedt <rostedt@goodmis.org> wrote:
> The only case is if you see a deferred request with id 1 for task 8888,
> then you start dropping all events and that task 8888 exits and a new
> one appears with task id 8888 where it too has a deferred request with
> id 1 then you start picking up events again and see a deferred stack
> trace for the new task 8888 where it's id is 1, you lose.
And if we want to fix that, we could make the cookie 64 bit again, and
set the timestamp on the first time it is used for the trace.
union unwind_task_id {
struct {
u32 task_id;
u32 cnt;
}
u64 id;
};
static u64 get_cookie(struct unwind_task_info *info)
{
u32 cnt = READ_ONCE(info->id.cnt);
u32 new_cnt;
if (cnt & 1)
return info->id;
if (unlikely(!info->id.task_id)) {
u32 task_id = local_clock();
cnt = 0;
if (try_cmpxchg(&info->id.task_id, &cnt, task_id))
task_id = cnt;
}
new_cnt = cnt + 3;
if (try_cmpxchg(&info->id, &cnt, new_cnt))
new_cnt = cnt; // try_cmpxchg() expects something
return info->id;
}
So now each task will have its own id and even if we have a task wrap
around, the cookie will never be the same, as fork sets the info->id to
zero.
Yes, the local_clock() can wrap around, but now making all those the
same to cause an issue is extremely unlikely, and still, if it happens,
the worse thing that it causes is that the user space stack trace will
be associated to the wrong events.
-- Steve
next prev parent reply other threads:[~2025-07-02 19:36 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-01 0:53 [PATCH v12 00/14] unwind_user: x86: Deferred unwinding infrastructure Steven Rostedt
2025-07-01 0:53 ` [PATCH v12 01/14] unwind_user: Add user space unwinding API Steven Rostedt
2025-07-04 17:58 ` Mathieu Desnoyers
2025-07-04 18:20 ` Mathieu Desnoyers
2025-07-07 19:42 ` Steven Rostedt
2025-07-07 21:01 ` Steven Rostedt
2025-07-01 0:53 ` [PATCH v12 02/14] unwind_user: Add frame pointer support Steven Rostedt
2025-07-01 2:10 ` Linus Torvalds
2025-07-01 2:56 ` Steven Rostedt
2025-07-01 3:05 ` Steven Rostedt
2025-07-01 15:36 ` Jens Remus
2025-07-02 23:50 ` Steven Rostedt
2025-07-03 16:21 ` Jens Remus
2025-07-07 21:28 ` Steven Rostedt
2025-07-01 4:46 ` Florian Weimer
2025-07-01 12:14 ` Steven Rostedt
2025-07-01 0:53 ` [PATCH v12 03/14] unwind_user: Add compat mode " Steven Rostedt
2025-07-01 0:53 ` [PATCH v12 04/14] unwind_user/deferred: Add unwind_user_faultable() Steven Rostedt
2025-07-01 0:53 ` [PATCH v12 05/14] unwind_user/deferred: Add unwind cache Steven Rostedt
2025-07-01 0:53 ` [PATCH v12 06/14] unwind_user/deferred: Add deferred unwinding interface Steven Rostedt
2025-07-02 16:36 ` Peter Zijlstra
2025-07-02 16:42 ` Steven Rostedt
2025-07-02 16:56 ` Linus Torvalds
2025-07-02 17:26 ` Steven Rostedt
2025-07-02 17:48 ` Steven Rostedt
2025-07-02 18:21 ` Linus Torvalds
2025-07-02 18:47 ` Mathieu Desnoyers
2025-07-02 19:05 ` Steven Rostedt
2025-07-02 19:12 ` Mathieu Desnoyers
2025-07-02 19:21 ` Steven Rostedt
2025-07-02 19:36 ` Steven Rostedt [this message]
2025-07-02 19:40 ` Steven Rostedt
2025-07-02 19:48 ` Mathieu Desnoyers
2025-07-02 20:10 ` Steven Rostedt
2025-07-02 19:43 ` Mathieu Desnoyers
2025-07-02 19:51 ` Steven Rostedt
2025-07-02 18:57 ` Steven Rostedt
2025-07-01 0:53 ` [PATCH v12 07/14] unwind_user/deferred: Make unwind deferral requests NMI-safe Steven Rostedt
2025-07-02 15:53 ` Jens Remus
2025-07-02 19:11 ` Steven Rostedt
2025-07-01 0:53 ` [PATCH v12 08/14] unwind deferred: Use bitmask to determine which callbacks to call Steven Rostedt
2025-07-01 0:53 ` [PATCH v12 09/14] unwind deferred: Use SRCU unwind_deferred_task_work() Steven Rostedt
2025-07-01 0:53 ` [PATCH v12 10/14] unwind: Clear unwind_mask on exit back to user space Steven Rostedt
2025-07-01 0:53 ` [PATCH v12 11/14] unwind: Add USED bit to only have one conditional on way " Steven Rostedt
2025-07-01 0:53 ` [PATCH v12 12/14] unwind: Finish up unwind when a task exits Steven Rostedt
2025-07-01 0:53 ` [PATCH v12 13/14] unwind_user/x86: Enable frame pointer unwinding on x86 Steven Rostedt
2025-07-01 0:53 ` [PATCH v12 14/14] unwind_user/x86: Enable compat mode " Steven Rostedt
2025-07-01 2:06 ` [PATCH v12 00/14] unwind_user: x86: Deferred unwinding infrastructure Linus Torvalds
2025-07-01 2:45 ` Steven Rostedt
2025-07-01 22:49 ` Kees Cook
2025-07-01 23:26 ` Steven Rostedt
2025-07-02 14:56 ` Kees Cook
2025-07-02 16:20 ` Mathieu Desnoyers
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250702153600.28dcf1e3@batman.local.home \
--to=rostedt@goodmis.org \
--cc=akpm@linux-foundation.org \
--cc=andrii@kernel.org \
--cc=axboe@kernel.dk \
--cc=beaub@linux.microsoft.com \
--cc=bpf@vger.kernel.org \
--cc=fweimer@redhat.com \
--cc=indu.bhagat@oracle.com \
--cc=jemarch@gnu.org \
--cc=jolsa@kernel.org \
--cc=jpoimboe@kernel.org \
--cc=jremus@linux.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=mhiramat@kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®