public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@elte.hu>
To: Jan Beulich <jbeulich@novell.com>
Cc: jeff@garzik.org, htejun@gmail.com, Andrew Morton <akpm@osdl.org>,
	reuben-lkml@reub.net, linux-kernel@vger.kernel.org
Subject: Re: 2.6.17-rc5-mm2
Date: Fri, 2 Jun 2006 09:51:50 +0200	[thread overview]
Message-ID: <20060602075150.GA12212@elte.hu> (raw)
In-Reply-To: <448006F6.76E4.0078.0@novell.com>


* Jan Beulich <jbeulich@novell.com> wrote:

> >firstly, i'd suggest to use another magic value for 'bottom of call 
> >stacks' - it is way too common to jump or call a NULL pointer. Something 
> >like 0xfedcba9876543210 would be better.
> 
> That's contrary to common use (outside of the kernel). I'm opposed to 
> this. Detecting an initial bad EIP isn't a problem, and the old code 
> can be used easily in that case.

but 0 is pretty much the worst choice for something that needs to be 
reliable - it's the most common type of machine word in existence, 
amongst all the 18446744073709551616 possibilities. And we need not care 
about userspace's prior choices, this code and data is totally under the 
kernel's control.

> >for the RIP/EIP to get corrupted is a common occurance. So is stack 
> >corruption. So the fallback mechanism shouldnt be a 'short while' 
> >side-thought, it must be part of the design.
> 
> RIP/EIP corruption, as said above, can be easily handled. RSP/ESP 
> corruption, as I understand it, isn't being handled in the old code, 
> and so I can't see what improvements the new code could do here (given 
> that instruction and stack pointers serve as the anchors for kicking 
> off an unwind).

i'm not only talking about RSP/ESP corruption, but about stack 
corruption. I.e. some area of the stack is corrupted. With the scanning 
method we at least get some other entries out - while with the unwind 
method we only say 'sorry'.

anyway, i think that handling a bad initial RIP/EIP would be a good 
first step and it should solve the problem at hand. (it will also serve 
as a basis for whatever other heuristics we might want to apply later 
on)

> >In all other cases (if we go outside of the stack page(s)) we _must_ 
> >fall back to the dump 'scan the stack pages for interesting entries' 
> >method, to get the information out! "Uh oh the unwind info somehow got 
> >corrupted, sorry" is not enough to debug a kernel bug.
> 
> Again, you miss the point that the very last unwind operation must 
> always be expected to move the stack pointer outside the stack 
> boundaries, which would mean triggering the fallback path in all 
> cases. With this, we could as well leave out the entire unwind code 
> and keep everyone of us manually do the separation of good and bad 
> entries in the trace shown.

no, i dont miss that point at all. What _you_ are missing is the obvious 
solution: stacks on x86_64 are already linked to each other, via 
fixed-position pointers at the end of the stackpages. So the unwinder 
can easily check whether the 'next stack' as suggested by the link at 
the end of the page is indeed the same as the unwind jumpout does. If 
not => fallback.

same for i386 - there too the stacks are linked via non-unwind data. The 
unwinder can do a pretty good verification of the jumpout.

	Ingo

  reply	other threads:[~2006-06-02  7:51 UTC|newest]

Thread overview: 97+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-06-01  8:48 2.6.17-rc5-mm2 Andrew Morton
2006-06-01  9:30 ` 2.6.17-rc5-mm2 Mike Galbraith
2006-06-01  9:45   ` 2.6.17-rc5-mm2 Jens Axboe
2006-06-01  9:48   ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-01  9:34 ` 2.6.17-rc5-mm2 Reuben Farrelly
2006-06-01  9:56   ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-01 10:11     ` 2.6.17-rc5-mm2 Reuben Farrelly
2006-06-01 10:33       ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-01 10:53         ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-01 11:25           ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-01 11:59             ` 2.6.17-rc5-mm2 Reuben Farrelly
2006-06-01 16:22               ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-01 22:15                 ` 2.6.17-rc5-mm2 Reuben Farrelly
2006-06-01 12:20           ` 2.6.17-rc5-mm2 Jan Beulich
2006-06-01 16:19             ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-01 18:34               ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-02  6:54             ` 2.6.17-rc5-mm2 Jan Beulich
2006-06-02  7:09               ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02  7:22                 ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-02  7:21                   ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02  7:13               ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-02  7:37             ` 2.6.17-rc5-mm2 Jan Beulich
2006-06-02  7:51               ` Ingo Molnar [this message]
2006-06-02 20:53                 ` 2.6.17-rc5-mm2 Daniel Jacobowitz
2006-06-01 10:23     ` 2.6.17-rc5-mm2 Jeff Garzik
2006-06-01 11:42 ` 2.6.17-rc5-mm2 another compile error Helge Hafting
2006-06-01 16:29   ` Andrew Morton
2006-06-21 12:07     ` Adrian Bunk
2006-06-01 11:54 ` 2.6.17-rc5-mm2 stack unwind compile failure Helge Hafting
2006-06-01 16:30   ` Andrew Morton
2006-06-01 12:35 ` 2.6.17-rc5-mm2 md cause BUGs, and readahead speedup Helge Hafting
2006-06-01 12:54   ` Arjan van de Ven
2006-06-01 13:03 ` 2.6.17-rc5-mm2 link issues on s390 Cedric Le Goater
2006-06-01 13:28   ` Martin Schwidefsky
2006-06-01 13:53     ` Cedric Le Goater
2006-06-08  7:28       ` Heiko Carstens
2006-06-08  9:13         ` Cedric Le Goater
2006-06-08 11:02           ` Heiko Carstens
2006-06-08 12:45             ` Cedric Le Goater
2006-06-09  7:58               ` Heiko Carstens
2006-06-01 15:35 ` 2.6.17-rc5-mm2 Jiri Slaby
2006-06-01 15:49   ` 2.6.17-rc5-mm2 Arjan van de Ven
2006-06-01 16:35     ` 2.6.17-rc5-mm2 Ben Collins
2006-06-05 11:28       ` [PATCH 2.6.17-rc5-mm3] ieee1394: hl_irqs_lock is taken in hardware interrupt context Stefan Richter
2006-06-05 11:31         ` [PATCH 2.6.17-rc5-mm3] ieee1394: adjust code formatting in highlevel.c Stefan Richter
2006-06-05 12:07         ` [PATCH 2.6.17-rc5-mm3] ieee1394: hl_irqs_lock is taken in hardware interrupt context Stefan Richter
2006-06-01 15:51 ` 2.6.17-rc5-mm2 Michal Piotrowski
2006-06-01 17:20   ` 2.6.17-rc5-mm2 Arjan van de Ven
2006-06-01 17:35     ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-01 17:36       ` 2.6.17-rc5-mm2 Arjan van de Ven
2006-06-01 19:04     ` 2.6.17-rc5-mm2 Michal Piotrowski
2006-06-01 22:30       ` 2.6.17-rc5-mm2 Michal Piotrowski
2006-06-01 17:22   ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-01 17:27     ` 2.6.17-rc5-mm2 Arjan van de Ven
2006-06-01 17:40       ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-01 19:31         ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-01 21:51 ` 2.6.17-rc5-mm2 Jesper Juhl
2006-06-01 21:52   ` 2.6.17-rc5-mm2 Jesper Juhl
2006-06-01 22:25   ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-01 22:40     ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-01 22:32   ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-01 22:52     ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-02  0:07       ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-02  0:28         ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-02  0:43           ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-02  0:58 ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-02  1:38   ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-02  6:02     ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 13:14     ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-02 14:20       ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 18:01         ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-02 18:06           ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-02 20:53           ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 22:33             ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-03  7:13               ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-03 14:41                 ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-03 21:10                   ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-04  2:29                     ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-04  8:33                       ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-04  7:57                     ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 15:51       ` 2.6.17-rc5-mm2 Alan Cox
2006-06-02 18:21         ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-02 18:25       ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-02  3:23 ` 2.6.17-rc5-mm2 KAMEZAWA Hiroyuki
2006-06-02  5:06   ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-02 10:09 ` 2.6.17-rc5-mm2 Paolo Ornati
2006-06-02 11:10   ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 11:17     ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 11:34       ` 2.6.17-rc5-mm2 Paolo Ornati
2006-06-02 14:13         ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 14:46           ` 2.6.17-rc5-mm2 Paolo Ornati
2006-06-02 15:10             ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 19:49             ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 20:09               ` 2.6.17-rc5-mm2 Paolo Ornati
2006-06-02 18:38 ` 2.6.17-rc5-mm2 Mel Gorman
2006-06-02 18:59   ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-03 15:29     ` 2.6.17-rc5-mm2 Mel Gorman

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=20060602075150.GA12212@elte.hu \
    --to=mingo@elte.hu \
    --cc=akpm@osdl.org \
    --cc=htejun@gmail.com \
    --cc=jbeulich@novell.com \
    --cc=jeff@garzik.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=reuben-lkml@reub.net \
    /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