[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