This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc 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]

Re: [PATCH,RFA] Ensure check_may_shrink_heap always returns the final value


On Wed, Sep 18, 2013 at 09:11:51AM +0200, Andreas Schwab wrote:
> Alexandre Oliva <aoliva@redhat.com> writes:
> 
> > diff --git a/sysdeps/unix/sysv/linux/malloc-sysdep.h b/sysdeps/unix/sysv/linux/malloc-sysdep.h
> > index 737ca0e..346c93c 100644
> > --- a/sysdeps/unix/sysv/linux/malloc-sysdep.h
> > +++ b/sysdeps/unix/sysv/linux/malloc-sysdep.h
> > @@ -33,7 +33,8 @@
> >  static inline bool
> >  check_may_shrink_heap (void)
> >  {
> > -  static int may_shrink_heap = -1;
> > +  static int global_may_shrink_heap = -1;
> > +  int may_shrink_heap = global_may_shrink_heap;
> 
> I don't think this will suffice, the compiler may still fall back to
> reload the value from the static.  You can use force_reg to disassociate
> the two variables.

If there are synchronization issues here then proper synchronization
methods are needed: either a lock or proper atomic read/write
operations with barriers. Not hacks.

Rich


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