[Bug 217138] head (e.g.) -r314638 for arm64: sh vs. jemalloc asserts: include/jemalloc/internal/tsd.h:687: Failed assertion: "tsd_booted" once swapped in after being swapped out (comment 10)
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Fri Mar 17 20:13:58 UTC 2017
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=217138
--- Comment #21 from Mark Millard <markmi at dsl-only.net> ---
I my test program I reported:
#define region_size (4u*1024u+1u)
// Bad dyn_region pattern, parent and child
// processes:
// 256u, 2u*1024u, 4u*1024u, 8u*1024u,
// 9u*1024u, 12u*1024u, 14u*1024u
// (but see the partial_test_check() call
// notes above).
// Works:
// 14u*1024u+1u, 15u*1024u, 16u*1024u,
// 32u*1024u, 256u*1024u*1024u
It appears to turn out that the
14u*1024u vs. 14u*1024+1u boundary matches
up with jemalloc:
contrib/jemalloc/include/jemalloc/internal/size_classes.h :
. . . size == 1<<lg_grp + ndelta<<lg_delta
. . .\
* bin: 'yes' if a small bin size class, 'no' otherwise.
. . .
#if (LG_SIZEOF_PTR == 3 && LG_TINY_MIN == 3 && LG_QUANTUM == 3 && LG_PAGE ==
12)
#define SIZE_CLASSES \
/* index, lg_grp, lg_delta, ndelta, psz, bin, lg_delta_lookup */ \
. . .
SC( 38, 13, 11, 3, no, yes, no) \
SC( 39, 13, 11, 4, yes, no, no) \
. . .
#define SMALL_MAXCLASS ((((size_t)1) << 13) + (((size_t)3) << 11))
So SMALL_MAXCLASS==(14u*1024u).
The problem in the example program is tied to small bin size
handling in jemalloc.
--
You are receiving this mail because:
You are on the CC list for the bug.
More information about the freebsd-amd64
mailing list