From: "Török Edwin" <edwintorok@gmail.com>
To: Ingo Molnar <mingo@elte.hu>
Cc: srostedt@redhat.com, a.p.zijlstra@chello.nl,
sandmann@daimi.au.dk, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] Identify which executable object the userspace address belongs to. Store thread group leader id, and use it to lookup the address in the process's map. We could have looked up the address on thread's map, but the thread might not exist by the time we are called. The process might not exist either, but if you are reading trace_pipe, that is unlikely.
Date: Mon, 03 Nov 2008 10:16:33 +0200 [thread overview]
Message-ID: <490EB361.9090007@gmail.com> (raw)
In-Reply-To: <20081103074754.GB13727@elte.hu>
On 2008-11-03 09:47, Ingo Molnar wrote:
> * Török Edwin <edwintorok@gmail.com> wrote:
>
>
>> + struct task_struct *task;
>> + /* we do the lookup on the thread group leader,
>> + * since individual threads might have already quit! */
>>
>
> please use the customary comment style:
>
> /*
> * Comment .....
> * ...... goes here:
> */
>
>
. Can checkpatch.pl warn me of situations like this?
>> - if (ret /*&& (sym_flags & TRACE_ITER_SYM_ADDR)*/)
>> + if (mm) {
>> + const struct vm_area_struct *vma = find_vma(mm, ip);
>> + if (vma) {
>> + file = vma->vm_file;
>> + vmstart = vma->vm_start;
>> + }
>> + }
>> + if (file) {
>> + ret = trace_seq_path(s, &file->f_path);
>> + if (ret)
>> + ret = trace_seq_printf(s, "[+0x%lx]",
>> + ip - vmstart);
>> + }
>> + if (ret && ((sym_flags & TRACE_ITER_SYM_ADDR) || !file))
>> ret = trace_seq_printf(s, " <" IP_FMT ">", ip);
>>
>
> the function is getting a bit large - would it make sense to split out
> this section into a helper inline function?
>
Yes, I'll do that.
> another small nit: i cleaned up the subject line and the commit log
> message for you - see the two patches below - could you please keep it
> for future (v3) submissions of these patches? It's just small
> formatting changes.
>
Ok, luckily git-rebase -i allows me to rewrite the log message too ;)
> Your patches are a nice feature we want to have nevertheless - to be
> able to see where a user-space app is running has been one of the
> historically weak points of kernel instrumentation.
Thanks.
It currently works for x86 only, but architecture porters can add
support for theirs quite easily, it just needs to modeled after how
oprofile does it for example.
BTW would it make sense to change oprofile and the sysprof tracer to use
save_stack_trace_user? It would eliminate some code duplication.
Would it make sense to add a script that post-processes the output to
scripts/tracing?
It would parse a trace log (from trace or latency_trace) and use
addr2line to resolve the address to source:line, and if successful
replace the relative address with that; and also
group identical stack traces together.
Best regards,
--Edwin
next prev parent reply other threads:[~2008-11-03 8:16 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-02 21:18 Add support for userspace stacktraces in tracing/iter_ctrl [v2] Török Edwin
2008-11-02 21:18 ` [PATCH] Add support for userspace stacktraces in tracing/iter_ctrl Török Edwin
2008-11-02 21:18 ` [PATCH] Identify which executable object the userspace address belongs to. Store thread group leader id, and use it to lookup the address in the process's map. We could have looked up the address on thread's map, but the thread might not exist by the time we are called. The process might not exist either, but if you are reading trace_pipe, that is unlikely Török Edwin
2008-11-02 21:25 ` Al Viro
2008-11-02 21:28 ` Török Edwin
2008-11-02 21:40 ` Al Viro
2008-11-03 7:32 ` Ingo Molnar
2008-11-04 18:26 ` Christoph Hellwig
2008-11-04 18:37 ` Török Edwin
2008-11-04 19:09 ` Christoph Hellwig
2008-11-04 19:10 ` Török Edwin
2008-11-06 9:55 ` Ingo Molnar
2008-11-06 12:26 ` Christoph Hellwig
2008-11-06 15:32 ` Ingo Molnar
2008-11-06 15:36 ` Christoph Hellwig
2008-11-03 7:47 ` Ingo Molnar
2008-11-03 8:16 ` Török Edwin [this message]
2008-11-03 8:21 ` Ingo Molnar
2008-11-03 8:29 ` Ingo Molnar
2008-11-03 13:57 ` Török Edwin
2008-11-03 14:04 ` Ingo Molnar
2008-11-03 19:26 ` Mathieu Desnoyers
2008-11-03 19:56 ` Peter Zijlstra
2008-11-03 19:58 ` Arnaldo Carvalho de Melo
2008-11-03 20:01 ` Török Edwin
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=490EB361.9090007@gmail.com \
--to=edwintorok@gmail.com \
--cc=a.p.zijlstra@chello.nl \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=sandmann@daimi.au.dk \
--cc=srostedt@redhat.com \
/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