git: pthreads - Use mmap() for thread->specific data
Matthew Dillon
dillon at crater.dragonflybsd.org
Mon Jul 1 17:16:55 PDT 2019
commit 8356845aa7f8204ed31a0d91faea4d58a1cb93a0
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Mon Jul 1 10:15:41 2019 -0700
pthreads - Use mmap() for thread->specific data
* Any application which tries to replace malloc() can wind up causing
pthreads to implode due to its use of malloc() in the early thread
initialization code.
* Change pthread_setspecific() to use mmap() instead of malloc()
to allocate the per-thread keys array, allowing applications
which replace malloc() to use pthread_setspecific() to initialize
per-thread malloc data if so desired.
The use of pthread_setspecific() predates TLS (per-thread) variable
declarations, aka the __thread storage qualifier, which is the
better way to implement per-thread data, but it is still a reasonable
choice so make it work.
* For DragonFlyBSD this is not expected to improve chrome because
our chrome build uses our base malloc() and does not try to replace
it with tcmalloc(). However, this change might help a limited
number of other applications that do.
Reported-by: sephe, tuxillo
Summary of changes:
lib/libthread_xu/thread/thr_private.h | 1 +
lib/libthread_xu/thread/thr_spec.c | 44 ++++++++++++++++++++++++-----------
2 files changed, 31 insertions(+), 14 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/8356845aa7f8204ed31a0d91faea4d58a1cb93a0
--
DragonFly BSD source repository
More information about the Commits
mailing list