[PATCHv3][PING] Enable -fsanitize-recover for KASan
Tue Sep 30 00:24:00 GMT 2014
On Mon, Sep 29, 2014 at 4:26 PM, Alexey Samsonov <firstname.lastname@example.org> wrote:
> On Mon, Sep 29, 2014 at 4:17 PM, Jakub Jelinek <email@example.com> wrote:
>> On Mon, Sep 29, 2014 at 03:36:20PM -0700, Alexey Samsonov wrote:
>>> -fasan-recover doesn't look like a good idea - for instance, in Clang, we
>>> never use "?san"
>>> in flag names, preferring -fsanitize-whatever. What's the rationale behind
>>> -fsanitize-recover in two flags (ASan- and UBSan- specific)?
>>> Is there no way to keep a single -f(no-)sanitize-recover for that purpose?
>>> Now it works
>>> only for UBSan checks, but we may extend it to another sanitizers as well.
>> The problem is that if we start using it for ASan, it needs to have a
>> different default, because ASan wants to abort by default, while UBSan
>> recover by default. -fsanitize=kernel-address w (KASan) wants to recover
>> by default. So, the option is either to never support recover for
>> -fsanitize=address, for ubsan keep -fsanitize-recover (by default) as is
>> and for kasan use that same switch, or have separate flags.
> I don't think we ever going to support recovery for regular ASan
> (Kostya, correct me if I'm wrong).
I hope so too.
Another point is that with asan-instrumentation-with-call-threshold=0
(instrumentation with callbacks)
we can and probably will allow to recover from errors (glibc demands that),
but that does not require any compile-time flag.
> I see no problem in enabling -fsanitize-recover by default for
> -fsanitize=undefined and
This becomes more interesting when we use asan and ubsan together.
Which default setting is stronger? :)
> -fsanitize=kernel-address. We can, potentially, extend
> -fsanitize-recover flag to take the same values as -fsanitize= one,
> so that one can specify which sanitizers are recoverable, and which
> are not, but I'd try to make this a last resort - this is too complex.
> Alexey Samsonov, Mountain View, CA
More information about the Gcc-patches