diff options
author | Jason Evans <je@fb.com> | 2011-03-24 03:39:02 (GMT) |
---|---|---|
committer | Jason Evans <je@fb.com> | 2011-03-24 03:39:02 (GMT) |
commit | af8ad3ec6abe9840bd503535a604a6173ce73515 (patch) | |
tree | 83786c59b7b3a5df2e8cf04339e5846556a31635 /jemalloc | |
parent | adc675c8ef55b59bb2facf795a3c26411cfbf3ed (diff) | |
download | jemalloc-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.c | 9 |
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) { |