On Fri, Sep 26, 2014 at 12:26 AM, Alexander Potapenko <ramosian.gli...@gmail.com> wrote: > We just need a separate error reporting function that'll be called > exclusively from interceptors. It doesn't have to be noreturn, because the > interceptors themselves aren't.
yep > > On Sep 26, 2014 8:52 AM, "'Alexey Samsonov' via address-sanitizer" > <address-sanitizer@googlegroups.com> wrote: >> >> >> On Thu, Sep 25, 2014 at 9:46 PM, Konstantin Serebryany >> <konstantin.s.serebry...@gmail.com> wrote: >>> >>> I don't think this is what we want. >>> I'd rather suppress by one of the frames in the stack where strcasecmp is >>> called >>> (This may, of course, be the #0 frame with strcasecmp) >> >> >> Sure. But it would be great to be able to disable interceptors in ASan >> while still keeping __asan_report_error noreturn. >> >>> >>> >>> On Thu, Sep 25, 2014 at 6:17 PM, 'Alexey Samsonov' via >>> address-sanitizer <address-sanitizer@googlegroups.com> wrote: >>> > Can you add a new suppression kind that would disable certain >>> > interceptors? >>> > E.g. the following line in suppressions file: >>> > >>> > interceptor:strcasecmp >>> > >>> > will disable the checks in this interceptor (in case of ASan it would >>> > turn >>> > COMMON_INTERCEPTOR_READ_RANGE to nop). >>> > >>> > >>> > On Thu, Sep 25, 2014 at 4:49 PM, Konstantin Serebryany >>> > <konstantin.s.serebry...@gmail.com> wrote: >>> >> >>> >> On Thu, Sep 25, 2014 at 2:16 AM, 'Alexander Potapenko' via >>> >> address-sanitizer <address-sanitizer@googlegroups.com> wrote: >>> >> > Some time ago I've been thinking about adding a flag for each >>> >> > interceptor that disables checks in that interceptor similar to >>> >> > replace_intrin flag. >>> >> > Using suppressions for that sounds more flexible, but we must make >>> >> > sure the users do not try to suppress errors in instrumented code. >>> >> >>> >> Correct. >>> >> >>> >> > (For example we could print a warning about that when a suppression >>> >> > matches the report that didn't originate from an interceptor) >>> >> SGTM >>> >> >>> >> > >>> >> > On Thu, Sep 25, 2014 at 4:08 AM, 'Alexey Samsonov' via >>> >> > address-sanitizer <address-sanitizer@googlegroups.com> wrote: >>> >> >> I haven't looked at the code in a while, but this should be >>> >> >> possible. >>> >> >> We >>> >> >> already have a global suppression context in sanitizer_common. >>> >> >> >>> >> >> On Wed, Sep 24, 2014 at 4:47 PM, Konstantin Serebryany >>> >> >> <konstantin.s.serebry...@gmail.com> wrote: >>> >> >>> >>> >> >>> We probably can reuse >>> >> >>> lib/sanitizer_common/sanitizer_suppressions.h to >>> >> >>> suppress errors that come from the interceptors... >>> >> >>> Thoughts? >>> >> >>> >>> >> >>> On Wed, Sep 24, 2014 at 4:39 PM, 'Dmitry Vyukov' via >>> >> >>> address-sanitizer >>> >> >>> <address-sanitizer@googlegroups.com> wrote: >>> >> >>> > +tetra2005 >>> >> >>> > >>> >> >>> > >>> >> >>> > On Wed, Sep 24, 2014 at 4:31 PM, Kuba Brecka >>> >> >>> > <kuba.bre...@gmail.com> >>> >> >>> > wrote: >>> >> >>> >> Hi, >>> >> >>> >> >>> >> >>> >> I'm trying to explore the possibilities of extending ASan to be >>> >> >>> >> able to >>> >> >>> >> continue execution after an error is found and a report printed >>> >> >>> >> out. I >>> >> >>> >> understand that the fact that ASan is currently >>> >> >>> >> aborting/exiting on >>> >> >>> >> a >>> >> >>> >> report >>> >> >>> >> is totally intentional and that there are some good reasons for >>> >> >>> >> it, >>> >> >>> >> e.g. >>> >> >>> >> that it's not safe to continue because the memory is corrupted, >>> >> >>> >> or >>> >> >>> >> that >>> >> >>> >> the >>> >> >>> >> UnreachableInst/doesNotReturn play an important role for >>> >> >>> >> optimizations. >>> >> >>> >> >>> >> >>> >> However, I believe that there may be some valid reasons to >>> >> >>> >> allow >>> >> >>> >> continuing >>> >> >>> >> program execution, like when there's a bug in a system library. >>> >> >>> >> This >>> >> >>> >> can >>> >> >>> >> easily happen even when this library itself is not >>> >> >>> >> instrumented, >>> >> >>> >> due to >>> >> >>> >> wrappers/interceptors affecting system libraries as well. So >>> >> >>> >> doing >>> >> >>> >> something >>> >> >>> >> like... >>> >> >>> >> >>> >> >>> >> a = malloc(15); >>> >> >>> >> memset(a, 0, 16); >>> >> >>> >> >>> >> >>> >> ...in a system library would get caught by ASan, and it's >>> >> >>> >> definitely a >>> >> >>> >> bug. >>> >> >>> >> On the other hand, in this specific case, without ASan, this >>> >> >>> >> alone >>> >> >>> >> would >>> >> >>> >> (almost certainly) never crash or cause *real* memory >>> >> >>> >> corruption, >>> >> >>> >> since >>> >> >>> >> malloc allocates 16 bytes anyway. We want to learn about the >>> >> >>> >> bug >>> >> >>> >> (to be >>> >> >>> >> able >>> >> >>> >> to fix it), but I think we also want to be able to continue >>> >> >>> >> using >>> >> >>> >> ASan >>> >> >>> >> before a new version of the library is shipped with an OS >>> >> >>> >> update. >>> >> >>> >> >>> >> >>> >> I am mainly interested in wrappers/interceptors only, because >>> >> >>> >> the >>> >> >>> >> reports >>> >> >>> >> invoked by instrumentation cannot happen in a library function >>> >> >>> >> (since >>> >> >>> >> it's >>> >> >>> >> not instrumented) and if a bug in a library triggers a report >>> >> >>> >> to be >>> >> >>> >> produced >>> >> >>> >> in user's instrumented code, he can blacklist that function or >>> >> >>> >> use >>> >> >>> >> __attribute__((no_sanitize_address)). It seems to me it should >>> >> >>> >> be >>> >> >>> >> possible >>> >> >>> >> to modify the error reporting (in the wrappers only) not to be >>> >> >>> >> fatal, >>> >> >>> >> and if >>> >> >>> >> that decision whether to abort or not (let's say via a >>> >> >>> >> suppression >>> >> >>> >> list) is >>> >> >>> >> done only in the case when a poisoned memory access is >>> >> >>> >> detected, it >>> >> >>> >> shouldn't have any significant performance hit. >>> >> >>> >> >>> >> >>> >> I noticed that there is an issue suppression mechanism in >>> >> >>> >> ThreadSanitizer >>> >> >>> >> and I'm aware that the circumstances for this feature in TSan >>> >> >>> >> are >>> >> >>> >> different. >>> >> >>> >> However, I'd still like to discuss the possibilities and >>> >> >>> >> opinions >>> >> >>> >> on >>> >> >>> >> this >>> >> >>> >> topic. >>> >> >>> >> >>> >> >>> >> Thank you for any feedback! >>> >> >>> >> >>> >> >>> >> Kuba >>> >> >>> >> >>> >> >>> >> -- >>> >> >>> >> You received this message because you are subscribed to the >>> >> >>> >> Google >>> >> >>> >> Groups >>> >> >>> >> "address-sanitizer" group. >>> >> >>> >> To unsubscribe from this group and stop receiving emails from >>> >> >>> >> it, >>> >> >>> >> send >>> >> >>> >> an >>> >> >>> >> email to address-sanitizer+unsubscr...@googlegroups.com. >>> >> >>> >> For more options, visit https://groups.google.com/d/optout. >>> >> >>> > >>> >> >>> > -- >>> >> >>> > You received this message because you are subscribed to the >>> >> >>> > Google >>> >> >>> > Groups "address-sanitizer" group. >>> >> >>> > To unsubscribe from this group and stop receiving emails from >>> >> >>> > it, >>> >> >>> > send >>> >> >>> > an email to address-sanitizer+unsubscr...@googlegroups.com. >>> >> >>> > For more options, visit https://groups.google.com/d/optout. >>> >> >>> >>> >> >>> -- >>> >> >>> You received this message because you are subscribed to the Google >>> >> >>> Groups >>> >> >>> "address-sanitizer" group. >>> >> >>> To unsubscribe from this group and stop receiving emails from it, >>> >> >>> send >>> >> >>> an >>> >> >>> email to address-sanitizer+unsubscr...@googlegroups.com. >>> >> >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> -- >>> >> >> Alexey Samsonov, Mountain View, CA >>> >> >> >>> >> >> -- >>> >> >> You received this message because you are subscribed to the Google >>> >> >> Groups >>> >> >> "address-sanitizer" group. >>> >> >> To unsubscribe from this group and stop receiving emails from it, >>> >> >> send >>> >> >> an >>> >> >> email to address-sanitizer+unsubscr...@googlegroups.com. >>> >> >> For more options, visit https://groups.google.com/d/optout. >>> >> > >>> >> > >>> >> > >>> >> > -- >>> >> > Alexander Potapenko >>> >> > Software Engineer >>> >> > Google Moscow >>> >> > >>> >> > -- >>> >> > You received this message because you are subscribed to the Google >>> >> > Groups "address-sanitizer" group. >>> >> > To unsubscribe from this group and stop receiving emails from it, >>> >> > send >>> >> > an email to address-sanitizer+unsubscr...@googlegroups.com. >>> >> > For more options, visit https://groups.google.com/d/optout. >>> >> >>> >> -- >>> >> You received this message because you are subscribed to the Google >>> >> Groups >>> >> "address-sanitizer" group. >>> >> To unsubscribe from this group and stop receiving emails from it, send >>> >> an >>> >> email to address-sanitizer+unsubscr...@googlegroups.com. >>> >> For more options, visit https://groups.google.com/d/optout. >>> > >>> > >>> > >>> > >>> > -- >>> > Alexey Samsonov, Mountain View, CA >>> > >>> > -- >>> > You received this message because you are subscribed to the Google >>> > Groups >>> > "address-sanitizer" group. >>> > To unsubscribe from this group and stop receiving emails from it, send >>> > an >>> > email to address-sanitizer+unsubscr...@googlegroups.com. >>> > For more options, visit https://groups.google.com/d/optout. >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "address-sanitizer" group. >>> To unsubscribe from this group and stop receiving emails from it, send an >>> email to address-sanitizer+unsubscr...@googlegroups.com. >>> For more options, visit https://groups.google.com/d/optout. >> >> >> >> >> -- >> Alexey Samsonov, Mountain View, CA >> >> -- >> You received this message because you are subscribed to the Google Groups >> "address-sanitizer" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to address-sanitizer+unsubscr...@googlegroups.com. >> For more options, visit https://groups.google.com/d/optout. > > -- > You received this message because you are subscribed to the Google Groups > "address-sanitizer" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to address-sanitizer+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "address-sanitizer" group. To unsubscribe from this group and stop receiving emails from it, send an email to address-sanitizer+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.