| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | |
| |
| |
| |
| |
| | |
Add test/jemalloc_test.h.in, which is processed to include
jemalloc/jemalloc@install_suffix@.h, so that test programs can include
it without worrying about the install suffix.
|
| | |
| |
| |
| |
| | |
Move a loop variable declaration out of for(usigned i = 0; ...) in order
to avoid the need for C99 compilation.
|
| | |
| |
| |
| |
| | |
Increase PRN 'a' and 'c' constants, so that high bits tend to cascade
more.
|
| | |
| |
| |
| |
| |
| | |
Fix a bug in leak context count reporting that tended to cause the
number of contexts to be underreported. The reported number of leaked
objects and bytes were not affected by this bug.
|
| | |
| |
| |
| |
| | |
Increase the default backtrace depth, because shallow backtraces tend to
result in confusing pprof output graphs.
|
| | |
| |
| |
| |
| |
| |
| |
| | |
Add the R option to control whether cumulative heap profile data
are maintained. Add the T option to control the size of per thread
backtrace caches, primarily because when the R option is specified,
backtraces that no longer have allocations associated with them are
discarded as soon as no thread caches refer to them.
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| | |
Remove malloc_swap_enable(), which was obsoleted by the "swap.fds"
mallctl. The prototype for malloc_swap_enable() was removed from
jemalloc/jemalloc.h, but the function itself was accidentally left in
place.
|
| | |
| |
| |
| |
| |
| | |
Import updated pprof from google-perftools 1.6, with a patch applied to
fix a division by zero error (see
http://code.google.com/p/google-perftools/issues/detail?id=235).
|
| | |
| |
| |
| |
| |
| | |
Base dynamic structure size on offsetof(), rather than subtracting the
size of the dynamic structure member. Results could differ on systems
with strict data structure alignment requirements.
|
| | |
| |
| |
| |
| |
| | |
Invert the chunk map bit that tracks whether a page is zeroed, so that
for zeroed arena chunks, the interior of the page map does not need to
be initialized (as it consists entirely of zero bytes).
|
| | |
| |
| |
| |
| |
| | |
Omit the first map_bias elements of the map in arena_chunk_t. This
avoids barely spilling over into an extra chunk header page for common
chunk sizes.
|
| | |
| |
| |
| |
| |
| |
| |
| | |
It is common to have to specify something like JEMALLOC_OPTIONS=F31i,
because interval-based dumps are often unuseful or too expensive.
Therefore, disable interval-based dumps by default. To get the previous
default behavior it is now necessary to specify 31I as part of the
options.
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| | |
Use INT_MAX instead of MAX_INT in ALLOCM_ALIGN(), and #include
<limits.h> in order to get its definition.
Modify prof code related to hash tables to avoid aliasing warnings from
gcc 4.1.2 (gcc 4.4.0 and 4.4.3 do not warn).
|
| | |
| |
| |
| |
| |
| | |
Add --enable-cc-silence, which can be used to silence harmless warnings.
Fix an aliasing bug in ckh_pointer_hash().
|
| | |
| |
| |
| |
| | |
If memalign() and/or valloc() are present on the system, override them
in order to avoid mixed allocator usage.
|
| | |
| |
| |
| |
| | |
Create the buferror() function, which wraps strerror_r(). This is
necessary because glibc provides a non-standard strerror_r().
|
| | |
| |
| |
| |
| |
| |
| | |
Remove assertions that malloc_{pre,post}fork() are only called if
threading is enabled. This was true of these functions in the context
of FreeBSD's libc, but now the functions are called unconditionally as a
result of registering them with pthread_atfork().
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| |
| | |
Add allocm(), rallocm(), sallocm(), and dallocm(), which are a
functional superset of malloc(), calloc(), posix_memalign(),
malloc_usable_size(), and free().
|
| | | |
|
| | |
| |
| |
| |
| | |
Fix new build failures and test failures on Linux that were introduced
by the port to OS X.
|
| | |
| |
| |
| |
| |
| |
| | |
Move the table of size classes from jemalloc.c to the manual page. When
manually formatting the manual page, it is now necessary to use:
nroff -man -t jemalloc.3
|
| | | |
|
| | |
| |
| |
| |
| | |
Add Mac OS X support, based in large part on the OS X support in
Mozilla's version of jemalloc.
|
| | |
| |
| |
| |
| |
| |
| | |
Make it possible for each thread to manage which arena it is associated
with.
Implement the 'tests' and 'check' build targets.
|
| |\ \
| |/ |
|
| | |
| |
| |
| |
| |
| | |
Move assert() calls up in arena_run_reg_alloc(), so that a corrupt
pointer will likely be caught by an assertion *before* it is
dereferenced.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If multiple threads race to initialize malloc, the loser(s) busy-wait
until initialization is complete. Add a missing mutex lock so that the
loser(s) properly release the initialization mutex. Under some
race conditions, this flaw could have caused one or more threads to
become permanently blocked.
Reported by Terrell Magee.
|
| | |
| |
| |
| |
| |
| | |
Fix the libunwind version of prof_backtrace() to set the backtrace depth
for all possible code paths. This fixes the zero-length backtrace
problem when using libunwind.
|
| |\ \
| |/ |
|
| | |
| |
| |
| |
| |
| | |
When heap profiling is enabled but deactivated, there is no need to call
isalloc(ptr) in prof_{malloc,realloc}(). Avoid these calls, so that
profiling overhead under such conditions is negligible.
|
| | |
| |
| |
| |
| |
| | |
If there is more than one arena, initialize next_arena so that the
first and second threads to allocate memory use arenas 0 and 1, rather
than both using arena 0.
|
| | |
| |
| |
| |
| | |
Add MAP_NORESERVE to the chunk_mmap() case being used by
chunk_swap_enable(), if the system supports it.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
Use the size argument to tcache_dalloc_large() to control the number of
bytes set to 0x5a when junk filling is enabled, rather than accessing a
non-existent arena bin. This bug was capable of corrupting an
arbitrarily large memory region, depending on what followed the arena
data structure in memory (typically zeroed memory, another arena_t, or a
red-black tree node for a huge object).
|
| |\ \
| |/ |
|
| | |
| |
| |
| |
| |
| |
| | |
Properly maintain tcache_bin_t's avail pointer such that it is NULL if
no objects are cached. This only caused problems during thread cache
destruction, since cache flushing otherwise never occurs on an empty
bin.
|
| | |
| |
| |
| |
| |
| |
| | |
Properly set the context associated with each allocated object, even
when the object is not sampled.
Remove debug print code that slipped in.
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
Fix arena_chunk_dealloc() to put the new spare in a consistent state before
dropping the arena mutex to deallocate the previous spare.
Fix arena_run_dalloc() to insert a newly dirtied chunk into the
chunks_dirty list before potentially deallocating the chunk, so that dirty
page accounting is self-consistent.
|
| | |
| |
| |
| |
| |
| |
| |
| | |
Initialize bt2cnt_tsd so that cleanup at thread exit actually happens.
Associate (prof_ctx_t *) with allocated objects, rather than
(prof_thr_cnt_t *). Each thread must always operate on its own
(prof_thr_cnt_t *), and an object may outlive the thread that allocated it.
|
| |/
|
|
|
| |
Fix a compilation error due to stale data structure access code in
tcache_dalloc_large() for junk filling.
|
| | |
|
| |
|
|
|
| |
Generalize ExtractSymbols to handle all cases of library address overlap
with the main binary.
|
| |
|
|
|
| |
Linux kernels have been capable of concurrent page table access since
2.6.27, so this hack is not necessary for modern kernels.
|
| |
|
|
|
|
| |
Now that JEMALLOC_OPTIONS=P isn't the only way to cause stats_print() to
be called, opt_stats_print must actually be checked when reporting the
state of the P/p option.
|
| |
|
|
|
|
| |
Don't build with -march=native by default, because the generated code
may perform especially poorly on ABI-compatible, but internally
different, systems.
|
| |
|
|
|
|
|
|
| |
Split library build rules up so that parallel building works.
Fix autoconf-related dependencies.
Remove obsolete JEMALLOC_VERSION definition.
|