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
next prev parent 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.