summaryrefslogtreecommitdiffstats
path: root/jemalloc
diff options
context:
space:
mode:
authorJason Evans <je@fb.com>2011-03-24 03:39:02 (GMT)
committerJason Evans <je@fb.com>2011-03-24 03:39:02 (GMT)
commitaf8ad3ec6abe9840bd503535a604a6173ce73515 (patch)
tree83786c59b7b3a5df2e8cf04339e5846556a31635 /jemalloc
parentadc675c8ef55b59bb2facf795a3c26411cfbf3ed (diff)
downloadjemalloc-af8ad3ec6abe9840bd503535a604a6173ce73515.zip
jemalloc-af8ad3ec6abe9840bd503535a604a6173ce73515.tar.gz
jemalloc-af8ad3ec6abe9840bd503535a604a6173ce73515.tar.bz2
Fix an assertion in arena_purge().
arena_purge() may be called even when there are no dirty pages, so loosen an assertion accordingly.
Diffstat (limited to 'jemalloc')
-rw-r--r--jemalloc/src/arena.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/jemalloc/src/arena.c b/jemalloc/src/arena.c
index 1954da9..9aaf47f 100644
--- a/jemalloc/src/arena.c
+++ b/jemalloc/src/arena.c
@@ -868,9 +868,10 @@ arena_purge(arena_t *arena, bool all)
}
assert(ndirty == arena->ndirty);
#endif
- assert(arena->ndirty > arena->npurgatory);
+ assert(arena->ndirty > arena->npurgatory || all);
assert(arena->ndirty > chunk_npages || all);
- assert((arena->nactive >> opt_lg_dirty_mult) < arena->ndirty || all);
+ assert((arena->nactive >> opt_lg_dirty_mult) < (arena->ndirty -
+ npurgatory) || all);
#ifdef JEMALLOC_STATS
arena->stats.npurge++;
@@ -882,8 +883,10 @@ arena_purge(arena_t *arena, bool all)
* multiple threads from racing to reduce ndirty below the threshold.
*/
npurgatory = arena->ndirty - arena->npurgatory;
- if (all == false)
+ if (all == false) {
+ assert(npurgatory >= arena->nactive >> opt_lg_dirty_mult);
npurgatory -= arena->nactive >> opt_lg_dirty_mult;
+ }
arena->npurgatory += npurgatory;
while (npurgatory > 0) {