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

Rich Felker dalias@aerifal.cx
Wed Sep 18 10:10:00 GMT 2013


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



More information about the Libc-alpha mailing list