memory/jemalloc/src/ChangeLog

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/memory/jemalloc/src/ChangeLog	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,385 @@
     1.4 +Following are change highlights associated with official releases.  Important
     1.5 +bug fixes are all mentioned, but internal enhancements are omitted here for
     1.6 +brevity (even though they are more fun to write about).  Much more detail can be
     1.7 +found in the git revision history:
     1.8 +
     1.9 +    http://www.canonware.com/cgi-bin/gitweb.cgi?p=jemalloc.git
    1.10 +    git://canonware.com/jemalloc.git
    1.11 +
    1.12 +* 3.x.x (Not yet released)
    1.13 +
    1.14 +  Bug fixes:
    1.15 +  - Fix "arenas.extend" mallctl to output the number of arenas.
    1.16 +
    1.17 +* 3.2.0 (November 9, 2012)
    1.18 +
    1.19 +  In addition to a couple of bug fixes, this version modifies page run
    1.20 +  allocation and dirty page purging algorithms in order to better control
    1.21 +  page-level virtual memory fragmentation.
    1.22 +
    1.23 +  Incompatible changes:
    1.24 +  - Change the "opt.lg_dirty_mult" default from 5 to 3 (32:1 to 8:1).
    1.25 +
    1.26 +  Bug fixes:
    1.27 +  - Fix dss/mmap allocation precedence code to use recyclable mmap memory only
    1.28 +    after primary dss allocation fails.
    1.29 +  - Fix deadlock in the "arenas.purge" mallctl.  This regression was introduced
    1.30 +    in 3.1.0 by the addition of the "arena.<i>.purge" mallctl.
    1.31 +
    1.32 +* 3.1.0 (October 16, 2012)
    1.33 +
    1.34 +  New features:
    1.35 +  - Auto-detect whether running inside Valgrind, thus removing the need to
    1.36 +    manually specify MALLOC_CONF=valgrind:true.
    1.37 +  - Add the "arenas.extend" mallctl, which allows applications to create
    1.38 +    manually managed arenas.
    1.39 +  - Add the ALLOCM_ARENA() flag for {,r,d}allocm().
    1.40 +  - Add the "opt.dss", "arena.<i>.dss", and "stats.arenas.<i>.dss" mallctls,
    1.41 +    which provide control over dss/mmap precedence.
    1.42 +  - Add the "arena.<i>.purge" mallctl, which obsoletes "arenas.purge".
    1.43 +  - Define LG_QUANTUM for hppa.
    1.44 +
    1.45 +  Incompatible changes:
    1.46 +  - Disable tcache by default if running inside Valgrind, in order to avoid
    1.47 +    making unallocated objects appear reachable to Valgrind.
    1.48 +  - Drop const from malloc_usable_size() argument on Linux.
    1.49 +
    1.50 +  Bug fixes:
    1.51 +  - Fix heap profiling crash if sampled object is freed via realloc(p, 0).
    1.52 +  - Remove const from __*_hook variable declarations, so that glibc can modify
    1.53 +    them during process forking.
    1.54 +  - Fix mlockall(2)/madvise(2) interaction.
    1.55 +  - Fix fork(2)-related deadlocks.
    1.56 +  - Fix error return value for "thread.tcache.enabled" mallctl.
    1.57 +
    1.58 +* 3.0.0 (May 11, 2012)
    1.59 +
    1.60 +  Although this version adds some major new features, the primary focus is on
    1.61 +  internal code cleanup that facilitates maintainability and portability, most
    1.62 +  of which is not reflected in the ChangeLog.  This is the first release to
    1.63 +  incorporate substantial contributions from numerous other developers, and the
    1.64 +  result is a more broadly useful allocator (see the git revision history for
    1.65 +  contribution details).  Note that the license has been unified, thanks to
    1.66 +  Facebook granting a license under the same terms as the other copyright
    1.67 +  holders (see COPYING).
    1.68 +
    1.69 +  New features:
    1.70 +  - Implement Valgrind support, redzones, and quarantine.
    1.71 +  - Add support for additional platforms:
    1.72 +    + FreeBSD
    1.73 +    + Mac OS X Lion
    1.74 +    + MinGW
    1.75 +    + Windows (no support yet for replacing the system malloc)
    1.76 +  - Add support for additional architectures:
    1.77 +    + MIPS
    1.78 +    + SH4
    1.79 +    + Tilera
    1.80 +  - Add support for cross compiling.
    1.81 +  - Add nallocm(), which rounds a request size up to the nearest size class
    1.82 +    without actually allocating.
    1.83 +  - Implement aligned_alloc() (blame C11).
    1.84 +  - Add the "thread.tcache.enabled" mallctl.
    1.85 +  - Add the "opt.prof_final" mallctl.
    1.86 +  - Update pprof (from gperftools 2.0).
    1.87 +  - Add the --with-mangling option.
    1.88 +  - Add the --disable-experimental option.
    1.89 +  - Add the --disable-munmap option, and make it the default on Linux.
    1.90 +  - Add the --enable-mremap option, which disables use of mremap(2) by default.
    1.91 +
    1.92 +  Incompatible changes:
    1.93 +  - Enable stats by default.
    1.94 +  - Enable fill by default.
    1.95 +  - Disable lazy locking by default.
    1.96 +  - Rename the "tcache.flush" mallctl to "thread.tcache.flush".
    1.97 +  - Rename the "arenas.pagesize" mallctl to "arenas.page".
    1.98 +  - Change the "opt.lg_prof_sample" default from 0 to 19 (1 B to 512 KiB).
    1.99 +  - Change the "opt.prof_accum" default from true to false.
   1.100 +
   1.101 +  Removed features:
   1.102 +  - Remove the swap feature, including the "config.swap", "swap.avail",
   1.103 +    "swap.prezeroed", "swap.nfds", and "swap.fds" mallctls.
   1.104 +  - Remove highruns statistics, including the
   1.105 +    "stats.arenas.<i>.bins.<j>.highruns" and
   1.106 +    "stats.arenas.<i>.lruns.<j>.highruns" mallctls.
   1.107 +  - As part of small size class refactoring, remove the "opt.lg_[qc]space_max",
   1.108 +    "arenas.cacheline", "arenas.subpage", "arenas.[tqcs]space_{min,max}", and
   1.109 +    "arenas.[tqcs]bins" mallctls.
   1.110 +  - Remove the "arenas.chunksize" mallctl.
   1.111 +  - Remove the "opt.lg_prof_tcmax" option.
   1.112 +  - Remove the "opt.lg_prof_bt_max" option.
   1.113 +  - Remove the "opt.lg_tcache_gc_sweep" option.
   1.114 +  - Remove the --disable-tiny option, including the "config.tiny" mallctl.
   1.115 +  - Remove the --enable-dynamic-page-shift configure option.
   1.116 +  - Remove the --enable-sysv configure option.
   1.117 +
   1.118 +  Bug fixes:
   1.119 +  - Fix a statistics-related bug in the "thread.arena" mallctl that could cause
   1.120 +    invalid statistics and crashes.
   1.121 +  - Work around TLS deallocation via free() on Linux.  This bug could cause
   1.122 +    write-after-free memory corruption.
   1.123 +  - Fix a potential deadlock that could occur during interval- and
   1.124 +    growth-triggered heap profile dumps.
   1.125 +  - Fix large calloc() zeroing bugs due to dropping chunk map unzeroed flags.
   1.126 +  - Fix chunk_alloc_dss() to stop claiming memory is zeroed.  This bug could
   1.127 +    cause memory corruption and crashes with --enable-dss specified.
   1.128 +  - Fix fork-related bugs that could cause deadlock in children between fork
   1.129 +    and exec.
   1.130 +  - Fix malloc_stats_print() to honor 'b' and 'l' in the opts parameter.
   1.131 +  - Fix realloc(p, 0) to act like free(p).
   1.132 +  - Do not enforce minimum alignment in memalign().
   1.133 +  - Check for NULL pointer in malloc_usable_size().
   1.134 +  - Fix an off-by-one heap profile statistics bug that could be observed in
   1.135 +    interval- and growth-triggered heap profiles.
   1.136 +  - Fix the "epoch" mallctl to update cached stats even if the passed in epoch
   1.137 +    is 0.
   1.138 +  - Fix bin->runcur management to fix a layout policy bug.  This bug did not
   1.139 +    affect correctness.
   1.140 +  - Fix a bug in choose_arena_hard() that potentially caused more arenas to be
   1.141 +    initialized than necessary.
   1.142 +  - Add missing "opt.lg_tcache_max" mallctl implementation.
   1.143 +  - Use glibc allocator hooks to make mixed allocator usage less likely.
   1.144 +  - Fix build issues for --disable-tcache.
   1.145 +  - Don't mangle pthread_create() when --with-private-namespace is specified.
   1.146 +
   1.147 +* 2.2.5 (November 14, 2011)
   1.148 +
   1.149 +  Bug fixes:
   1.150 +  - Fix huge_ralloc() race when using mremap(2).  This is a serious bug that
   1.151 +    could cause memory corruption and/or crashes.
   1.152 +  - Fix huge_ralloc() to maintain chunk statistics.
   1.153 +  - Fix malloc_stats_print(..., "a") output.
   1.154 +
   1.155 +* 2.2.4 (November 5, 2011)
   1.156 +
   1.157 +  Bug fixes:
   1.158 +  - Initialize arenas_tsd before using it.  This bug existed for 2.2.[0-3], as
   1.159 +    well as for --disable-tls builds in earlier releases.
   1.160 +  - Do not assume a 4 KiB page size in test/rallocm.c.
   1.161 +
   1.162 +* 2.2.3 (August 31, 2011)
   1.163 +
   1.164 +  This version fixes numerous bugs related to heap profiling.
   1.165 +
   1.166 +  Bug fixes:
   1.167 +  - Fix a prof-related race condition.  This bug could cause memory corruption,
   1.168 +    but only occurred in non-default configurations (prof_accum:false).
   1.169 +  - Fix off-by-one backtracing issues (make sure that prof_alloc_prep() is
   1.170 +    excluded from backtraces).
   1.171 +  - Fix a prof-related bug in realloc() (only triggered by OOM errors).
   1.172 +  - Fix prof-related bugs in allocm() and rallocm().
   1.173 +  - Fix prof_tdata_cleanup() for --disable-tls builds.
   1.174 +  - Fix a relative include path, to fix objdir builds.
   1.175 +
   1.176 +* 2.2.2 (July 30, 2011)
   1.177 +
   1.178 +  Bug fixes:
   1.179 +  - Fix a build error for --disable-tcache.
   1.180 +  - Fix assertions in arena_purge() (for real this time).
   1.181 +  - Add the --with-private-namespace option.  This is a workaround for symbol
   1.182 +    conflicts that can inadvertently arise when using static libraries.
   1.183 +
   1.184 +* 2.2.1 (March 30, 2011)
   1.185 +
   1.186 +  Bug fixes:
   1.187 +  - Implement atomic operations for x86/x64.  This fixes compilation failures
   1.188 +    for versions of gcc that are still in wide use.
   1.189 +  - Fix an assertion in arena_purge().
   1.190 +
   1.191 +* 2.2.0 (March 22, 2011)
   1.192 +
   1.193 +  This version incorporates several improvements to algorithms and data
   1.194 +  structures that tend to reduce fragmentation and increase speed.
   1.195 +
   1.196 +  New features:
   1.197 +  - Add the "stats.cactive" mallctl.
   1.198 +  - Update pprof (from google-perftools 1.7).
   1.199 +  - Improve backtracing-related configuration logic, and add the
   1.200 +    --disable-prof-libgcc option.
   1.201 +
   1.202 +  Bug fixes:
   1.203 +  - Change default symbol visibility from "internal", to "hidden", which
   1.204 +    decreases the overhead of library-internal function calls.
   1.205 +  - Fix symbol visibility so that it is also set on OS X.
   1.206 +  - Fix a build dependency regression caused by the introduction of the .pic.o
   1.207 +    suffix for PIC object files.
   1.208 +  - Add missing checks for mutex initialization failures.
   1.209 +  - Don't use libgcc-based backtracing except on x64, where it is known to work.
   1.210 +  - Fix deadlocks on OS X that were due to memory allocation in
   1.211 +    pthread_mutex_lock().
   1.212 +  - Heap profiling-specific fixes:
   1.213 +    + Fix memory corruption due to integer overflow in small region index
   1.214 +      computation, when using a small enough sample interval that profiling
   1.215 +      context pointers are stored in small run headers.
   1.216 +    + Fix a bootstrap ordering bug that only occurred with TLS disabled.
   1.217 +    + Fix a rallocm() rsize bug.
   1.218 +    + Fix error detection bugs for aligned memory allocation.
   1.219 +
   1.220 +* 2.1.3 (March 14, 2011)
   1.221 +
   1.222 +  Bug fixes:
   1.223 +  - Fix a cpp logic regression (due to the "thread.{de,}allocatedp" mallctl fix
   1.224 +    for OS X in 2.1.2).
   1.225 +  - Fix a "thread.arena" mallctl bug.
   1.226 +  - Fix a thread cache stats merging bug.
   1.227 +
   1.228 +* 2.1.2 (March 2, 2011)
   1.229 +
   1.230 +  Bug fixes:
   1.231 +  - Fix "thread.{de,}allocatedp" mallctl for OS X.
   1.232 +  - Add missing jemalloc.a to build system.
   1.233 +
   1.234 +* 2.1.1 (January 31, 2011)
   1.235 +
   1.236 +  Bug fixes:
   1.237 +  - Fix aligned huge reallocation (affected allocm()).
   1.238 +  - Fix the ALLOCM_LG_ALIGN macro definition.
   1.239 +  - Fix a heap dumping deadlock.
   1.240 +  - Fix a "thread.arena" mallctl bug.
   1.241 +
   1.242 +* 2.1.0 (December 3, 2010)
   1.243 +
   1.244 +  This version incorporates some optimizations that can't quite be considered
   1.245 +  bug fixes.
   1.246 +
   1.247 +  New features:
   1.248 +  - Use Linux's mremap(2) for huge object reallocation when possible.
   1.249 +  - Avoid locking in mallctl*() when possible.
   1.250 +  - Add the "thread.[de]allocatedp" mallctl's.
   1.251 +  - Convert the manual page source from roff to DocBook, and generate both roff
   1.252 +    and HTML manuals.
   1.253 +
   1.254 +  Bug fixes:
   1.255 +  - Fix a crash due to incorrect bootstrap ordering.  This only impacted
   1.256 +    --enable-debug --enable-dss configurations.
   1.257 +  - Fix a minor statistics bug for mallctl("swap.avail", ...).
   1.258 +
   1.259 +* 2.0.1 (October 29, 2010)
   1.260 +
   1.261 +  Bug fixes:
   1.262 +  - Fix a race condition in heap profiling that could cause undefined behavior
   1.263 +    if "opt.prof_accum" were disabled.
   1.264 +  - Add missing mutex unlocks for some OOM error paths in the heap profiling
   1.265 +    code.
   1.266 +  - Fix a compilation error for non-C99 builds.
   1.267 +
   1.268 +* 2.0.0 (October 24, 2010)
   1.269 +
   1.270 +  This version focuses on the experimental *allocm() API, and on improved
   1.271 +  run-time configuration/introspection.  Nonetheless, numerous performance
   1.272 +  improvements are also included.
   1.273 +
   1.274 +  New features:
   1.275 +  - Implement the experimental {,r,s,d}allocm() API, which provides a superset
   1.276 +    of the functionality available via malloc(), calloc(), posix_memalign(),
   1.277 +    realloc(), malloc_usable_size(), and free().  These functions can be used to
   1.278 +    allocate/reallocate aligned zeroed memory, ask for optional extra memory
   1.279 +    during reallocation, prevent object movement during reallocation, etc.
   1.280 +  - Replace JEMALLOC_OPTIONS/JEMALLOC_PROF_PREFIX with MALLOC_CONF, which is
   1.281 +    more human-readable, and more flexible.  For example:
   1.282 +      JEMALLOC_OPTIONS=AJP
   1.283 +    is now:
   1.284 +      MALLOC_CONF=abort:true,fill:true,stats_print:true
   1.285 +  - Port to Apple OS X.  Sponsored by Mozilla.
   1.286 +  - Make it possible for the application to control thread-->arena mappings via
   1.287 +    the "thread.arena" mallctl.
   1.288 +  - Add compile-time support for all TLS-related functionality via pthreads TSD.
   1.289 +    This is mainly of interest for OS X, which does not support TLS, but has a
   1.290 +    TSD implementation with similar performance.
   1.291 +  - Override memalign() and valloc() if they are provided by the system.
   1.292 +  - Add the "arenas.purge" mallctl, which can be used to synchronously purge all
   1.293 +    dirty unused pages.
   1.294 +  - Make cumulative heap profiling data optional, so that it is possible to
   1.295 +    limit the amount of memory consumed by heap profiling data structures.
   1.296 +  - Add per thread allocation counters that can be accessed via the
   1.297 +    "thread.allocated" and "thread.deallocated" mallctls.
   1.298 +
   1.299 +  Incompatible changes:
   1.300 +  - Remove JEMALLOC_OPTIONS and malloc_options (see MALLOC_CONF above).
   1.301 +  - Increase default backtrace depth from 4 to 128 for heap profiling.
   1.302 +  - Disable interval-based profile dumps by default.
   1.303 +
   1.304 +  Bug fixes:
   1.305 +  - Remove bad assertions in fork handler functions.  These assertions could
   1.306 +    cause aborts for some combinations of configure settings.
   1.307 +  - Fix strerror_r() usage to deal with non-standard semantics in GNU libc.
   1.308 +  - Fix leak context reporting.  This bug tended to cause the number of contexts
   1.309 +    to be underreported (though the reported number of objects and bytes were
   1.310 +    correct).
   1.311 +  - Fix a realloc() bug for large in-place growing reallocation.  This bug could
   1.312 +    cause memory corruption, but it was hard to trigger.
   1.313 +  - Fix an allocation bug for small allocations that could be triggered if
   1.314 +    multiple threads raced to create a new run of backing pages.
   1.315 +  - Enhance the heap profiler to trigger samples based on usable size, rather
   1.316 +    than request size.
   1.317 +  - Fix a heap profiling bug due to sometimes losing track of requested object
   1.318 +    size for sampled objects.
   1.319 +
   1.320 +* 1.0.3 (August 12, 2010)
   1.321 +
   1.322 +  Bug fixes:
   1.323 +  - Fix the libunwind-based implementation of stack backtracing (used for heap
   1.324 +    profiling).  This bug could cause zero-length backtraces to be reported.
   1.325 +  - Add a missing mutex unlock in library initialization code.  If multiple
   1.326 +    threads raced to initialize malloc, some of them could end up permanently
   1.327 +    blocked.
   1.328 +
   1.329 +* 1.0.2 (May 11, 2010)
   1.330 +
   1.331 +  Bug fixes:
   1.332 +  - Fix junk filling of large objects, which could cause memory corruption.
   1.333 +  - Add MAP_NORESERVE support for chunk mapping, because otherwise virtual
   1.334 +    memory limits could cause swap file configuration to fail.  Contributed by
   1.335 +    Jordan DeLong.
   1.336 +
   1.337 +* 1.0.1 (April 14, 2010)
   1.338 +
   1.339 +  Bug fixes:
   1.340 +  - Fix compilation when --enable-fill is specified.
   1.341 +  - Fix threads-related profiling bugs that affected accuracy and caused memory
   1.342 +    to be leaked during thread exit.
   1.343 +  - Fix dirty page purging race conditions that could cause crashes.
   1.344 +  - Fix crash in tcache flushing code during thread destruction.
   1.345 +
   1.346 +* 1.0.0 (April 11, 2010)
   1.347 +
   1.348 +  This release focuses on speed and run-time introspection.  Numerous
   1.349 +  algorithmic improvements make this release substantially faster than its
   1.350 +  predecessors.
   1.351 +
   1.352 +  New features:
   1.353 +  - Implement autoconf-based configuration system.
   1.354 +  - Add mallctl*(), for the purposes of introspection and run-time
   1.355 +    configuration.
   1.356 +  - Make it possible for the application to manually flush a thread's cache, via
   1.357 +    the "tcache.flush" mallctl.
   1.358 +  - Base maximum dirty page count on proportion of active memory.
   1.359 +  - Compute various addtional run-time statistics, including per size class
   1.360 +    statistics for large objects.
   1.361 +  - Expose malloc_stats_print(), which can be called repeatedly by the
   1.362 +    application.
   1.363 +  - Simplify the malloc_message() signature to only take one string argument,
   1.364 +    and incorporate an opaque data pointer argument for use by the application
   1.365 +    in combination with malloc_stats_print().
   1.366 +  - Add support for allocation backed by one or more swap files, and allow the
   1.367 +    application to disable over-commit if swap files are in use.
   1.368 +  - Implement allocation profiling and leak checking.
   1.369 +
   1.370 +  Removed features:
   1.371 +  - Remove the dynamic arena rebalancing code, since thread-specific caching
   1.372 +    reduces its utility.
   1.373 +
   1.374 +  Bug fixes:
   1.375 +  - Modify chunk allocation to work when address space layout randomization
   1.376 +    (ASLR) is in use.
   1.377 +  - Fix thread cleanup bugs related to TLS destruction.
   1.378 +  - Handle 0-size allocation requests in posix_memalign().
   1.379 +  - Fix a chunk leak.  The leaked chunks were never touched, so this impacted
   1.380 +    virtual memory usage, but not physical memory usage.
   1.381 +
   1.382 +* linux_2008082[78]a (August 27/28, 2008)
   1.383 +
   1.384 +  These snapshot releases are the simple result of incorporating Linux-specific
   1.385 +  support into the FreeBSD malloc sources.
   1.386 +
   1.387 +--------------------------------------------------------------------------------
   1.388 +vim:filetype=text:textwidth=80

mercurial