linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jonathan Lundell <jlundell@lundell-bros.com>
To: "Randy.Dunlap" <rddunlap@osdl.org>
Cc: <torvalds@transmeta.com>, <vonbrand@inf.utfsm.cl>,
	<linux-kernel@vger.kernel.org>
Subject: Re: 2.5.63 accesses below %esp (was: Re: ntfs OOPS (2.5.63))
Date: Thu, 13 Mar 2003 22:26:39 -0800	[thread overview]
Message-ID: <p05210502ba97239e44cf@[207.213.214.37]> (raw)
In-Reply-To: <33130.4.64.238.61.1047616146.squirrel@www.osdl.org>

At 8:29pm -0800 3/13/03, Randy.Dunlap wrote:
>  > If you've got a symbol some reasonable distance before EIP, you could
>>  decode from there. I wrote a little code that does that (using
>>  kallsyms) very crudely in the stack trace in order to give the reader  a
>>  hint about stack frames. Go to the prior symbol, which is usually  an entry
>>  point, and find the %esp arithmetic. Works pretty well for  figuring out the
>>  real call chain.
>
>as long as it's not a data symbol...
>can you determine that?

Sometimes/mostly, and btw my code is i386-only. The trace is question 
is arch/i386/kernel/traps.c:show_trace(). It already makes the test 
kernel_text_address(), which works in the kernel, but not for modules 
(at least in the kernel I'm using: 2.4.9 (don't ask)).

For addresses in the trace (as opposed to the trapped EIP), I look 
for a call instruction preceding the putative return address. That's 
backwards assembly, but since there are relatively few possibilities, 
it seems to work fairly well.

So finding a call is a good clue that we're looking at text. Look 
back from the call for argument pushes (I stop at the first non-push, 
because of the backwards-disassembly problem), then go to the 
previous symbol and scan forward for pushes and subtracts from %esp. 
The sum of all those, plus four bytes for the return link, gives me a 
lower limit on frame size. It's not perfect; a real disassembly 
forward from the symbol would maybe be better, but that seems like 
overkill (what to do with branches, etc).

The idea isn't to be perfect anyway, but to give me hints for 
manually reconstructing the call chain. Way better than nothing.

But for your purposes, disassembling from the previous symbol gives 
you a code dump, and you know that EIP had better be pointing to text.
-- 
/Jonathan Lundell.

  reply	other threads:[~2003-03-14  6:16 UTC|newest]

Thread overview: 81+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-03-02  1:38 ntfs OOPS (2.5.63) Randy.Dunlap
2003-03-04 14:51 ` [Linux-NTFS-Dev] " Szakacsits Szabolcs
2003-03-05 19:09 ` Anton Altaparmakov
2003-03-06  6:19   ` Randy.Dunlap
2003-03-06  6:28     ` Szakacsits Szabolcs
2003-03-06  6:42       ` Randy.Dunlap
2003-03-06 12:32       ` Anton Altaparmakov
2003-03-06 14:34         ` Szakacsits Szabolcs
2003-03-06 14:55           ` Anton Altaparmakov
2003-03-06 19:39           ` Randy.Dunlap
2003-03-06 19:41             ` Szakacsits Szabolcs
2003-03-06 20:15               ` Szakacsits Szabolcs
2003-03-06 20:36                 ` Randy.Dunlap
2003-03-06 21:46                   ` Oops counter (was Re: ntfs OOPS (2.5.63)) Szakacsits Szabolcs
2003-03-07  7:50         ` [Linux-NTFS-Dev] ntfs OOPS (2.5.63) Randy.Dunlap
2003-03-07  7:52           ` Szakacsits Szabolcs
2003-03-07 17:17             ` Randy.Dunlap
2003-03-07 17:56               ` Szakacsits Szabolcs
2003-03-07 18:08                 ` Randy.Dunlap
2003-03-08 13:24                   ` Szakacsits Szabolcs
2003-03-08 15:47                     ` Szakacsits Szabolcs
2003-03-10  4:16                       ` Randy.Dunlap
2003-03-10  7:22                         ` 2.5.63 accesses below %esp (was: Re: ntfs OOPS (2.5.63)) Szakacsits Szabolcs
2003-03-11 17:01                           ` Alan Cox
2003-03-11 16:29                             ` Szakacsits Szabolcs
2003-03-12  1:09                               ` Alan Cox
2003-03-13 18:02                               ` Zach Brown
2003-03-12  0:39                           ` Linus Torvalds
2003-03-12  6:07                             ` Szakacsits Szabolcs
2003-03-12  7:52                               ` Richard Henderson
2003-03-12  8:02                                 ` Szakacsits Szabolcs
2003-03-12  8:17                                   ` Richard Henderson
2003-03-12  8:45                                     ` Szakacsits Szabolcs
2003-03-12  9:17                                       ` Szakacsits Szabolcs
2003-03-12 15:28                                         ` Szakacsits Szabolcs
2003-03-12 15:38                                           ` Linus Torvalds
2003-03-12 23:14                                             ` Bill Davidsen
2003-03-12 10:19                               ` Arjan van de Ven
2003-03-12 15:20                                 ` Linus Torvalds
2003-03-12 15:24                                   ` Arjan van de Ven
2003-03-12 15:35                                 ` Szakacsits Szabolcs
2003-03-12 15:43                                   ` Arjan van de Ven
2003-03-12 15:47                                     ` Linus Torvalds
2003-03-12 16:38                                       ` Randy.Dunlap
2003-03-12 16:50                               ` Randy.Dunlap
2003-03-12 18:25                                 ` Szakacsits Szabolcs
2003-03-12 18:33                                   ` Linus Torvalds
2003-03-12 21:54                                     ` Szakacsits Szabolcs
2003-03-12 22:18                                       ` Linus Torvalds
2003-03-12 22:28                                         ` Szakacsits Szabolcs
2003-03-13  1:07                                           ` Linus Torvalds
2003-03-14  8:04                                             ` Szakacsits Szabolcs
2003-03-14 10:00                                               ` Helge Hafting
2003-03-14 11:02                                                 ` Szakacsits Szabolcs
2003-03-13 21:07                                         ` Horst von Brand
2003-03-13 23:24                                           ` Linus Torvalds
2003-03-14  1:08                                             ` Jonathan Lundell
2003-03-14  4:29                                               ` Randy.Dunlap
2003-03-14  6:26                                                 ` Jonathan Lundell [this message]
2003-03-15 18:24                                                 ` Horst von Brand
2003-03-15 19:47                                                   ` Randy.Dunlap
2003-03-12 21:13                                   ` Horst von Brand
2003-03-12 22:03                                     ` Szakacsits Szabolcs
2003-03-13 21:04                                       ` Horst von Brand
2003-03-14  7:14                                         ` Denis Vlasenko
2003-03-14 12:16                                           ` Backward disassembling (was: Re: 2.5.63 accesses below %esp) Szakacsits Szabolcs
2003-03-14 16:53                                             ` Jonathan Lundell
2003-03-15 18:34                                           ` 2.5.63 accesses below %esp (was: Re: ntfs OOPS (2.5.63)) Horst von Brand
2003-03-17  6:56                                             ` Denis Vlasenko
2003-03-17 21:43                                               ` Horst von Brand
2003-03-18  3:28                                                 ` Keith Owens
2003-03-18  7:13                                                   ` Hugh Dickins
2003-03-20 10:48                                                     ` Keith Owens
2003-03-20 11:04                                                       ` Hugh Dickins
2003-03-18 19:44                                                   ` Szakacsits Szabolcs
2003-03-18  6:05                                                 ` Denis Vlasenko
2003-03-18  6:35                                                   ` John Alvord
2003-03-14 18:01                                     ` Olaf Titz
2003-03-14 18:56                                       ` Richard B. Johnson
2003-03-12 23:32                               ` [PATCH] OOPS counters Randy.Dunlap
2003-03-06 12:27     ` [Linux-NTFS-Dev] ntfs OOPS (2.5.63) Anton Altaparmakov

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='p05210502ba97239e44cf@[207.213.214.37]' \
    --to=jlundell@lundell-bros.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rddunlap@osdl.org \
    --cc=torvalds@transmeta.com \
    --cc=vonbrand@inf.utfsm.cl \
    /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;
as well as URLs for NNTP newsgroup(s).