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 #18 from Martin LiÅka <marxin at gcc dot gnu.org> ---
(In reply to Martin LiÅka from comment #16)
> (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

Another update: looks the desired feature is already implemented by
MemorySanitizer:
https://github.com/google/sanitizers/wiki/MemorySanitizer

Thus, writing just code emission on side of the GCC compiler should enable the
functionality. I'll take a look.

Martin

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