This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH,RFA] Ensure check_may_shrink_heap always returns the final value
- From: Rich Felker <dalias at aerifal dot cx>
- To: Andreas Schwab <schwab at suse dot de>
- Cc: Alexandre Oliva <aoliva at redhat dot com>, libc-alpha at sourceware dot org
- Date: Wed, 18 Sep 2013 06:10:42 -0400
- Subject: Re: [PATCH,RFA] Ensure check_may_shrink_heap always returns the final value
- Authentication-results: sourceware.org; auth=none
- References: <or1u4n5aig dot fsf at livre dot home> <mvmvc1y8uyw dot fsf at hawking dot suse dot de>
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