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: Async-signal-safe access to __thread variables from dlopen()ed libraries?


On Fri, Sep 20, 2013 at 12:52:00AM -0400, Carlos O'Donell wrote:
> > On Wed, Jun 13, 2012 at 6:08 PM, Ian Lance Taylor <iant@google.com> wrote:
> > ...
> >> Perhaps another approach would be to change __tls_get_addr to not use
> >> malloc, but to use mmap as needed.  This of course assumes that mmap is
> >> in fact async signal safe although it is not on the approved list.
> > 
> > Andrew Hunter has proposed a Google-local glibc patch, that
> > 
> > - introduces async-signal-safe mmap-based allocator into elf/dl-misc.c, and
> > - updates the rest of the loader to use this allocator when getting space
> >   for non-static TLS.
> > 
> > The allocator is currently quite simple, but wastes space. It could be
> > made more space-efficient independently of other changes.
> >
How large are these allocations?
 
> > Is this something that has a chance of being acceptable into trunk?
> 
> This is an interesting approach. Avoiding malloc certainly solves the
> problem, and it's not like the allocation patterns are sufficiently
> complex as to require malloc. We use mmap in lots of places in the
> library where the allocations are simple enough to warrant such an
> optimization.
> 
> The biggest problem right now is gathering consensus on the correct
> solution.
> 
Possibly we could use a generic mmap used allocator for internal usage.
This would avoid problems of not being safe when custom allocator is
used.

This would also simplify a malloc implementation a bit as we would not
worry about malloc usage in loader.


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