Go to file
David Goldblatt 0a4f5a7eea Fix deadlock in multithreaded fork in OS X.
On OS X, we rely on the zone machinery to call our prefork and postfork
handlers.

In zone_force_unlock, we call jemalloc_postfork_child, reinitializing all our
mutexes regardless of state, since the mutex implementation will assert if the
tid of the unlocker is different from that of the locker.  This has the effect
of unlocking the mutexes, but also fails to wake any threads waiting on them in
the parent.

To fix this, we track whether or not we're the parent or child after the fork,
and unlock or reinit as appropriate.

This resolves #895.
2017-07-10 18:17:12 -07:00
bin Add jemalloc prefix to allocator functions pruned by jeprof. 2017-05-30 20:22:00 -07:00
build-aux Update config.{guess,sub} from upstream. 2016-11-10 15:08:32 -08:00
doc Not re-enable background thread after fork. 2017-06-12 08:56:14 -07:00
include Add extent_grow_mtx in pre_ / post_fork handlers. 2017-06-29 17:01:18 -07:00
m4 jemalloc cpp new/delete bindings 2016-12-12 18:36:06 -08:00
msvc Update MSVC project files. 2017-06-13 11:22:41 -07:00
scripts Test with background_thread:true. 2017-06-01 08:55:27 -07:00
src Fix deadlock in multithreaded fork in OS X. 2017-07-10 18:17:12 -07:00
test Set reentrancy when invoking customized extent hooks. 2017-06-23 13:27:53 -07:00
.appveyor.yml Do not build in parallel on AppVeyor. 2017-05-11 23:06:54 -07:00
.autom4te.cfg Disable autom4te cache. 2014-09-02 17:49:29 -07:00
.gitattributes fix git handling of newlines on windows 2014-05-07 18:48:39 -04:00
.gitignore Add /run_tests.out/ to .gitignore. 2017-05-31 10:37:48 -07:00
.travis.yml Test with background_thread:true. 2017-06-01 08:55:27 -07:00
autogen.sh Move repo contents in jemalloc/ to top level. 2011-03-31 20:36:17 -07:00
ChangeLog Fix a typo. 2017-07-02 21:05:23 -07:00
config.stamp.in Move repo contents in jemalloc/ to top level. 2011-03-31 20:36:17 -07:00
configure.ac Enforce minimum autoconf version (currently 2.68). 2017-06-29 16:23:35 -07:00
COPYING Update copyright dates. 2017-06-12 23:16:44 -07:00
INSTALL.md Add the --disable-thp option to support cross compiling. 2017-05-30 11:30:54 -07:00
jemalloc.pc.in Update project URL. 2016-09-12 11:56:24 -07:00
Makefile.in Header refactoring: Pull size helpers out of jemalloc module. 2017-05-31 13:08:45 -07:00
README Update project URL. 2016-09-12 11:56:24 -07:00
run_tests.sh Introduce scripts to run all possible tests 2017-01-30 17:51:57 -08:00

jemalloc is a general purpose malloc(3) implementation that emphasizes
fragmentation avoidance and scalable concurrency support.  jemalloc first came
into use as the FreeBSD libc allocator in 2005, and since then it has found its
way into numerous applications that rely on its predictable behavior.  In 2010
jemalloc development efforts broadened to include developer support features
such as heap profiling and extensive monitoring/tuning hooks.  Modern jemalloc
releases continue to be integrated back into FreeBSD, and therefore versatility
remains critical.  Ongoing development efforts trend toward making jemalloc
among the best allocators for a broad range of demanding applications, and
eliminating/mitigating weaknesses that have practical repercussions for real
world applications.

The COPYING file contains copyright and licensing information.

The INSTALL file contains information on how to configure, build, and install
jemalloc.

The ChangeLog file contains a brief summary of changes for each release.

URL: http://jemalloc.net/