Applied. Thanks. -Arun
On Tue, Dec 1, 2009 at 1:34 PM, Paul Pluzhnikov <[email protected]>wrote: > Greetings, > > This is rather on the obvious side. > > While doing strace on an executable using libunwind, I noticed a > lot of: > > msync(0, 1, MS_SYNC) = -1 ENOMEM (Cannot allocate memory) > > Since we know that the first page isn't mapped (or at least doesn't > contain the data we are looking for), we can eliminate all such > msync calls. > > Tested on Linux/x86_64 with no regressions. > > Thanks, > -- > Paul Pluzhnikov > > diff --git a/src/x86/Ginit.c b/src/x86/Ginit.c > index e1b1dcf..2df94f0 100644 > --- a/src/x86/Ginit.c > +++ b/src/x86/Ginit.c > @@ -117,6 +117,9 @@ validate_mem (unw_word_t addr) > > addr = PAGE_START(addr); > > + if (addr == 0) > + return -1; > + > for (i = 0; i < NLGA; i++) > { > if (last_good_addr[i] && (addr == last_good_addr[i])) > diff --git a/src/x86_64/Ginit.c b/src/x86_64/Ginit.c > index 031deaa..51d77c2 100644 > --- a/src/x86_64/Ginit.c > +++ b/src/x86_64/Ginit.c > @@ -120,6 +120,9 @@ validate_mem (unw_word_t addr) > > addr = PAGE_START(addr); > > + if (addr == 0) > + return -1; > + > for (i = 0; i < NLGA; i++) > { > if (last_good_addr[i] && (addr == last_good_addr[i])) >
_______________________________________________ Libunwind-devel mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/libunwind-devel
