Remove a stray memset(), and fix a junk filling test regression.
This commit is contained in:
parent
f02fec8839
commit
04942c3d90
@ -19,8 +19,11 @@ void *large_ralloc(tsdn_t *tsdn, arena_t *arena, extent_t *extent,
|
|||||||
#ifdef JEMALLOC_JET
|
#ifdef JEMALLOC_JET
|
||||||
typedef void (large_dalloc_junk_t)(void *, size_t);
|
typedef void (large_dalloc_junk_t)(void *, size_t);
|
||||||
extern large_dalloc_junk_t *large_dalloc_junk;
|
extern large_dalloc_junk_t *large_dalloc_junk;
|
||||||
|
typedef void (large_dalloc_maybe_junk_t)(tsdn_t *, void *, size_t);
|
||||||
|
extern large_dalloc_maybe_junk_t *large_dalloc_maybe_junk;
|
||||||
#else
|
#else
|
||||||
void large_dalloc_junk(void *ptr, size_t usize);
|
void large_dalloc_junk(void *ptr, size_t usize);
|
||||||
|
void large_dalloc_maybe_junk(tsdn_t *tsdn, void *ptr, size_t usize);
|
||||||
#endif
|
#endif
|
||||||
void large_dalloc_junked_locked(tsdn_t *tsdn, extent_t *extent);
|
void large_dalloc_junked_locked(tsdn_t *tsdn, extent_t *extent);
|
||||||
void large_dalloc(tsdn_t *tsdn, extent_t *extent);
|
void large_dalloc(tsdn_t *tsdn, extent_t *extent);
|
||||||
|
@ -250,6 +250,7 @@ jemalloc_prefork
|
|||||||
large_dalloc
|
large_dalloc
|
||||||
large_dalloc_junk
|
large_dalloc_junk
|
||||||
large_dalloc_junked_locked
|
large_dalloc_junked_locked
|
||||||
|
large_dalloc_maybe_junk
|
||||||
large_malloc
|
large_malloc
|
||||||
large_palloc
|
large_palloc
|
||||||
large_prof_tctx_get
|
large_prof_tctx_get
|
||||||
|
13
src/large.c
13
src/large.c
@ -76,7 +76,11 @@ large_dalloc_junk(void *ptr, size_t usize)
|
|||||||
large_dalloc_junk_t *large_dalloc_junk = JEMALLOC_N(n_large_dalloc_junk);
|
large_dalloc_junk_t *large_dalloc_junk = JEMALLOC_N(n_large_dalloc_junk);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void
|
#ifdef JEMALLOC_JET
|
||||||
|
#undef large_dalloc_maybe_junk
|
||||||
|
#define large_dalloc_maybe_junk JEMALLOC_N(n_large_dalloc_maybe_junk)
|
||||||
|
#endif
|
||||||
|
void
|
||||||
large_dalloc_maybe_junk(tsdn_t *tsdn, void *ptr, size_t usize)
|
large_dalloc_maybe_junk(tsdn_t *tsdn, void *ptr, size_t usize)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -87,9 +91,14 @@ large_dalloc_maybe_junk(tsdn_t *tsdn, void *ptr, size_t usize)
|
|||||||
*/
|
*/
|
||||||
if (!config_munmap || (have_dss && extent_in_dss(tsdn, ptr)))
|
if (!config_munmap || (have_dss && extent_in_dss(tsdn, ptr)))
|
||||||
large_dalloc_junk(ptr, usize);
|
large_dalloc_junk(ptr, usize);
|
||||||
memset(ptr, JEMALLOC_FREE_JUNK, usize);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#ifdef JEMALLOC_JET
|
||||||
|
#undef large_dalloc_maybe_junk
|
||||||
|
#define large_dalloc_maybe_junk JEMALLOC_N(large_dalloc_maybe_junk)
|
||||||
|
large_dalloc_maybe_junk_t *large_dalloc_maybe_junk =
|
||||||
|
JEMALLOC_N(n_large_dalloc_maybe_junk);
|
||||||
|
#endif
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
large_ralloc_no_move_shrink(tsdn_t *tsdn, extent_t *extent, size_t usize)
|
large_ralloc_no_move_shrink(tsdn_t *tsdn, extent_t *extent, size_t usize)
|
||||||
|
@ -10,6 +10,7 @@ const char *malloc_conf =
|
|||||||
|
|
||||||
static arena_dalloc_junk_small_t *arena_dalloc_junk_small_orig;
|
static arena_dalloc_junk_small_t *arena_dalloc_junk_small_orig;
|
||||||
static large_dalloc_junk_t *large_dalloc_junk_orig;
|
static large_dalloc_junk_t *large_dalloc_junk_orig;
|
||||||
|
static large_dalloc_maybe_junk_t *large_dalloc_maybe_junk_orig;
|
||||||
static void *watch_for_junking;
|
static void *watch_for_junking;
|
||||||
static bool saw_junking;
|
static bool saw_junking;
|
||||||
|
|
||||||
@ -39,13 +40,23 @@ arena_dalloc_junk_small_intercept(void *ptr, const arena_bin_info_t *bin_info)
|
|||||||
static void
|
static void
|
||||||
large_dalloc_junk_intercept(void *ptr, size_t usize)
|
large_dalloc_junk_intercept(void *ptr, size_t usize)
|
||||||
{
|
{
|
||||||
|
size_t i;
|
||||||
|
|
||||||
large_dalloc_junk_orig(ptr, usize);
|
large_dalloc_junk_orig(ptr, usize);
|
||||||
/*
|
for (i = 0; i < usize; i++) {
|
||||||
* The conditions under which junk filling actually occurs are nuanced
|
assert_u_eq(((uint8_t *)ptr)[i], JEMALLOC_FREE_JUNK,
|
||||||
* enough that it doesn't make sense to duplicate the decision logic in
|
"Missing junk fill for byte %zu/%zu of deallocated region",
|
||||||
* test code, so don't actually check that the region is junk-filled.
|
i, usize);
|
||||||
*/
|
}
|
||||||
|
if (ptr == watch_for_junking)
|
||||||
|
saw_junking = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
large_dalloc_maybe_junk_intercept(tsdn_t *tsdn, void *ptr, size_t usize)
|
||||||
|
{
|
||||||
|
|
||||||
|
large_dalloc_maybe_junk_orig(tsdn, ptr, usize);
|
||||||
if (ptr == watch_for_junking)
|
if (ptr == watch_for_junking)
|
||||||
saw_junking = true;
|
saw_junking = true;
|
||||||
}
|
}
|
||||||
@ -61,6 +72,8 @@ test_junk(size_t sz_min, size_t sz_max)
|
|||||||
arena_dalloc_junk_small = arena_dalloc_junk_small_intercept;
|
arena_dalloc_junk_small = arena_dalloc_junk_small_intercept;
|
||||||
large_dalloc_junk_orig = large_dalloc_junk;
|
large_dalloc_junk_orig = large_dalloc_junk;
|
||||||
large_dalloc_junk = large_dalloc_junk_intercept;
|
large_dalloc_junk = large_dalloc_junk_intercept;
|
||||||
|
large_dalloc_maybe_junk_orig = large_dalloc_maybe_junk;
|
||||||
|
large_dalloc_maybe_junk = large_dalloc_maybe_junk_intercept;
|
||||||
}
|
}
|
||||||
|
|
||||||
sz_prev = 0;
|
sz_prev = 0;
|
||||||
@ -111,6 +124,7 @@ test_junk(size_t sz_min, size_t sz_max)
|
|||||||
if (opt_junk_free) {
|
if (opt_junk_free) {
|
||||||
arena_dalloc_junk_small = arena_dalloc_junk_small_orig;
|
arena_dalloc_junk_small = arena_dalloc_junk_small_orig;
|
||||||
large_dalloc_junk = large_dalloc_junk_orig;
|
large_dalloc_junk = large_dalloc_junk_orig;
|
||||||
|
large_dalloc_maybe_junk = large_dalloc_maybe_junk_orig;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user