diff options
author | Jason Evans <je@fb.com> | 2013-02-01 00:53:58 (GMT) |
---|---|---|
committer | Jason Evans <je@fb.com> | 2013-02-01 00:53:58 (GMT) |
commit | a7a28c334e5526ba716bf6046eab8d60598183eb (patch) | |
tree | 104603607d9fd1940ca8a0a3d1db738639266a12 /src | |
parent | d0e942e4669b8600b0bd7e5ae132ae26d10a40ed (diff) | |
download | jemalloc-a7a28c334e5526ba716bf6046eab8d60598183eb.zip jemalloc-a7a28c334e5526ba716bf6046eab8d60598183eb.tar.gz jemalloc-a7a28c334e5526ba716bf6046eab8d60598183eb.tar.bz2 |
Fix a chunk recycling bug.
Fix a chunk recycling bug that could cause the allocator to lose track
of whether a chunk was zeroed. On FreeBSD, NetBSD, and OS X, it could
cause corruption if allocating via sbrk(2) (unlikely unless running with
the "dss:primary" option specified). This was completely harmless on
Linux unless using mlockall(2) (and unlikely even then, unless the
--disable-munmap configure option or the "dss:primary" option was
specified). This regression was introduced in 3.1.0 by the
mlockall(2)/madvise(2) interaction fix.
Diffstat (limited to 'src')
-rw-r--r-- | src/chunk.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/chunk.c b/src/chunk.c index 46e387e..8cff240 100644 --- a/src/chunk.c +++ b/src/chunk.c @@ -111,6 +111,7 @@ chunk_recycle(extent_tree_t *chunks_szad, extent_tree_t *chunks_ad, size_t size, } node->addr = (void *)((uintptr_t)(ret) + size); node->size = trailsize; + node->zeroed = zeroed; extent_tree_szad_insert(chunks_szad, node); extent_tree_ad_insert(chunks_ad, node); node = NULL; |