All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@elte.hu>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: Jeremy Fitzhardinge <jeremy@goop.org>,
	Petr Tesarik <ptesarik@suse.cz>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: Definition of BUG on x86
Date: Thu, 19 Feb 2009 21:26:47 +0100	[thread overview]
Message-ID: <20090219202647.GB784@elte.hu> (raw)
In-Reply-To: <499DBBEF.2090508@zytor.com>


* H. Peter Anvin <hpa@zytor.com> wrote:

> Jeremy Fitzhardinge wrote:
>> Ingo Molnar wrote:
>>> Well, the important question is thatGCC will optimize out whatever  
>>> comes after the __builtin_trap(), right? To guarantee an assert we 
>>> can do something like:
>>>
>>>      __builtin_trap();
>>>     panic("should never get here");
>>>
>>> to guarantee a message. (But realistically GCC will at most generate 
>>> a build error.)
>>>   
>>
>> Ah, right, I remember the problem.  There's no guaranteed way of 
>> getting the address of the ud2a instruction __builtin_trap generates to 
>> put it into the bug table.
>>
>
> Did we actually run into any instance where that failed?
>
> It's true that it's not guaranteed, but it seems highly 
> unlikely that it would happen in real life.  We *could* do a 
> forward search at that point, that should catch the vast 
> majority of the failing cases, again, but once again there are 
> no guarantees.
>
> I guess I should ask the gcc people...

The whole thing is borderline anyway (the win is small), and the 
combination of relying on __builtin_trap() [which is documented 
as a non-stable interface], and the reliance on basic block 
non-ordering.

Another complication is that this is _debug_ code - i.e. if 
there's a rare bug here we'll only see it if a bug triggers 
there - which is very rare in itself.

So i'm rather uneasy to rely on GCC to this level. They should 
allow to pass __noreturn to asm()s - that's a far cleaner 
approach.

	Ingo

  reply	other threads:[~2009-02-19 20:27 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1234975856.15053.16.camel@nathan.suse.cz>
     [not found] ` <499C4786.5010504@goop.org>
2009-02-19 11:40   ` Definition of BUG on x86 Petr Tesarik
2009-02-19 12:10     ` Ingo Molnar
2009-02-19 12:19       ` Petr Tesarik
2009-02-19 12:22         ` Ingo Molnar
2009-02-19 12:38           ` Petr Tesarik
2009-02-19 12:47             ` Ingo Molnar
2009-02-19 13:02               ` Petr Tesarik
2009-02-19 14:49                 ` Ingo Molnar
2009-02-19 15:32                   ` Jeremy Fitzhardinge
2009-02-19 15:35                     ` Ingo Molnar
2009-02-19 16:11                       ` Petr Tesarik
2009-02-19 16:16                         ` Ingo Molnar
2009-02-19 16:34                           ` Jeremy Fitzhardinge
2009-02-19 16:41                             ` Ingo Molnar
2009-02-19 20:07                             ` H. Peter Anvin
2009-02-19 20:26                               ` Ingo Molnar [this message]
2009-02-19 16:55                           ` Petr Tesarik
2009-02-19 16:32                       ` Jeremy Fitzhardinge
2009-02-19 18:38     ` H. Peter Anvin

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=20090219202647.GB784@elte.hu \
    --to=mingo@elte.hu \
    --cc=hpa@zytor.com \
    --cc=jeremy@goop.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ptesarik@suse.cz \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.