From: Paulo Marques <pmarques@grupopie.com>
To: Sebastian Siewior <lkml@ml.breakpoint.cc>
Cc: Greg Ungerer <gerg@snapgear.com>,
torvalds@linux-foundation.org, akpm@linux-foundation.org,
gerg@uclinux.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] m68knommu: add pretty back strace
Date: Mon, 05 May 2008 20:21:19 +0100 [thread overview]
Message-ID: <481F5E2F.1030806@grupopie.com> (raw)
In-Reply-To: <20080502211038.GB22631@Chamillionaire.breakpoint.cc>
Sebastian Siewior wrote:
> * Paulo Marques | 2008-05-02 20:27:57 [+0100]:
>
>> Greg Ungerer wrote:
>>> From: Sebastian Siewior <bigeasy@linutronix.de>
>>> With this patch and
>>> CONFIG_FRAME_POINTER=y
>>> CONFIG_KALLSYMS=y
>>> The backtrace shows resolved function names and their numeric
>>> address.
>> This is really not my area, but this patch reminds me of all the dwarf2
>> unwinder on x86 that caused so many problems in the beginning...
>>
>>> [...]
>>> +#ifdef CONFIG_FRAME_POINTER
>>> + printk(KERN_EMERG "Call Trace:\n");
>>> +
>>> + last_stack = stack - 1;
>>> + while (stack <= endstack && stack > last_stack) {
>>> +
>>> + addr = *(stack + 1);
>>> + printk(KERN_EMERG " [%08lx] ", addr);
>>> + print_symbol(KERN_CONT "%s\n", addr);
>>> +
>>> + last_stack = stack;
>>> + stack = (unsigned long *)*stack;
>>> }
>>> printk("\n");
>>> +#else
>>> + printk(KERN_EMERG "CONFIG_FRAME_POINTER disabled, no symbolic call
>>> trace\n");
>> You could probably fall back to the old method in this case, no?
> The old method printed every value from stack which was in the text
> range (you didn't get modules AFAIK). This might be the caller as well a
> function pointer as argument as well something else. I tried to find to
> find a pattern without frame pointers but I had no luck. I thing the
> caller fixed the stack frame or something.
> Greg did not complain about removing it. If you or others want the old
> method in case of no frame pointers I can send a patch.
Having output garbled with "false positive" addresses, but that have the
"true positives" in between is better than no output at all.
>> Also, if the stack is slightly corrupted on the top, the new method might
>> just bail out without giving any indication about the path that lead there,
>> when instead it could also fall back to the old method.
> You mean by slightly that the first caller ORed the address with
> something?
Or more commonly, a buffer overflow... (or underflow, depending on how
the stack grows)
> In that case we don't return safely. I don't know how I could
> find out the right time for a fallback (in case of slightly corrupted
> stack).
I was imagining you would get a page fault where you'd show a stack
trace, but that's on a MMU processor. With no MMU I guess you don't get
a chance to do that :(
As I said before, this is really not my area. I just remember that a
very similar change in x86 was a real pain, and wanted to make sure that
everyone here was aware of that.
--
Paulo Marques - www.grupopie.com
"Who is general Failure and why is he reading my disk?"
next prev parent reply other threads:[~2008-05-05 19:21 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-01 2:16 [PATCH] m68knommu: add pretty back strace Greg Ungerer
2008-05-02 19:27 ` Paulo Marques
2008-05-02 21:10 ` Sebastian Siewior
2008-05-05 19:21 ` Paulo Marques [this message]
2008-05-06 4:52 ` Greg Ungerer
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=481F5E2F.1030806@grupopie.com \
--to=pmarques@grupopie.com \
--cc=akpm@linux-foundation.org \
--cc=gerg@snapgear.com \
--cc=gerg@uclinux.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lkml@ml.breakpoint.cc \
--cc=torvalds@linux-foundation.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