summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJason Evans <je@fb.com>2013-02-01 00:53:58 (GMT)
committerJason Evans <je@fb.com>2013-02-01 00:53:58 (GMT)
commita7a28c334e5526ba716bf6046eab8d60598183eb (patch)
tree104603607d9fd1940ca8a0a3d1db738639266a12 /src
parentd0e942e4669b8600b0bd7e5ae132ae26d10a40ed (diff)
downloadjemalloc-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.c1
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;