This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/66487] [6 Regression] Firefox segfault with LTO enabled


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66487

--- Comment #16 from Martin LiÅka <marxin at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #14)
> (In reply to Jason Merrill from comment #4)
> > Actually, I guess checking for this is more of a fit for an uninitialized
> > read detector such as MemorySanitizer or Valgrind memcheck.
> 
> Well, AddressSanitizer should be able to do that too with some extra work,
> what we need is know not just when the lifetime of a variable ends, but also
> when it starts, and instrument those two, plus disable reusing variable
> stack slots when instrumenting.  In the function prologue we'd then mark the
> variables as unavailable, not just their padding, and then when they get
> into scope (that is the first clobber these days), we'd mark them enabled
> and when they get out of scope (second clobber) mark them unavailable again.
> GCC7 material.

Hi Jakub.

I've already made a prototype implementation that can do that:
https://groups.google.com/forum/#!topic/address-sanitizer/WYdZIo6lnyA

It's quite limited to just heap allocation and memory sizes different from
multiples of 8B are not correctly handled, but I'm rewriting the patch to
prepare it as GCC 7 material.

Moreover, Honza suggested that we can use the scaffolding to do a run-time
memory aliasing sanitizer that will verify that a memory is accessed just from
compatible alias sets. Also GCC 7 material.

Martin

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]