memory/jemalloc/src/ChangeLog

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

michael@0 1 Following are change highlights associated with official releases. Important
michael@0 2 bug fixes are all mentioned, but internal enhancements are omitted here for
michael@0 3 brevity (even though they are more fun to write about). Much more detail can be
michael@0 4 found in the git revision history:
michael@0 5
michael@0 6 http://www.canonware.com/cgi-bin/gitweb.cgi?p=jemalloc.git
michael@0 7 git://canonware.com/jemalloc.git
michael@0 8
michael@0 9 * 3.x.x (Not yet released)
michael@0 10
michael@0 11 Bug fixes:
michael@0 12 - Fix "arenas.extend" mallctl to output the number of arenas.
michael@0 13
michael@0 14 * 3.2.0 (November 9, 2012)
michael@0 15
michael@0 16 In addition to a couple of bug fixes, this version modifies page run
michael@0 17 allocation and dirty page purging algorithms in order to better control
michael@0 18 page-level virtual memory fragmentation.
michael@0 19
michael@0 20 Incompatible changes:
michael@0 21 - Change the "opt.lg_dirty_mult" default from 5 to 3 (32:1 to 8:1).
michael@0 22
michael@0 23 Bug fixes:
michael@0 24 - Fix dss/mmap allocation precedence code to use recyclable mmap memory only
michael@0 25 after primary dss allocation fails.
michael@0 26 - Fix deadlock in the "arenas.purge" mallctl. This regression was introduced
michael@0 27 in 3.1.0 by the addition of the "arena.<i>.purge" mallctl.
michael@0 28
michael@0 29 * 3.1.0 (October 16, 2012)
michael@0 30
michael@0 31 New features:
michael@0 32 - Auto-detect whether running inside Valgrind, thus removing the need to
michael@0 33 manually specify MALLOC_CONF=valgrind:true.
michael@0 34 - Add the "arenas.extend" mallctl, which allows applications to create
michael@0 35 manually managed arenas.
michael@0 36 - Add the ALLOCM_ARENA() flag for {,r,d}allocm().
michael@0 37 - Add the "opt.dss", "arena.<i>.dss", and "stats.arenas.<i>.dss" mallctls,
michael@0 38 which provide control over dss/mmap precedence.
michael@0 39 - Add the "arena.<i>.purge" mallctl, which obsoletes "arenas.purge".
michael@0 40 - Define LG_QUANTUM for hppa.
michael@0 41
michael@0 42 Incompatible changes:
michael@0 43 - Disable tcache by default if running inside Valgrind, in order to avoid
michael@0 44 making unallocated objects appear reachable to Valgrind.
michael@0 45 - Drop const from malloc_usable_size() argument on Linux.
michael@0 46
michael@0 47 Bug fixes:
michael@0 48 - Fix heap profiling crash if sampled object is freed via realloc(p, 0).
michael@0 49 - Remove const from __*_hook variable declarations, so that glibc can modify
michael@0 50 them during process forking.
michael@0 51 - Fix mlockall(2)/madvise(2) interaction.
michael@0 52 - Fix fork(2)-related deadlocks.
michael@0 53 - Fix error return value for "thread.tcache.enabled" mallctl.
michael@0 54
michael@0 55 * 3.0.0 (May 11, 2012)
michael@0 56
michael@0 57 Although this version adds some major new features, the primary focus is on
michael@0 58 internal code cleanup that facilitates maintainability and portability, most
michael@0 59 of which is not reflected in the ChangeLog. This is the first release to
michael@0 60 incorporate substantial contributions from numerous other developers, and the
michael@0 61 result is a more broadly useful allocator (see the git revision history for
michael@0 62 contribution details). Note that the license has been unified, thanks to
michael@0 63 Facebook granting a license under the same terms as the other copyright
michael@0 64 holders (see COPYING).
michael@0 65
michael@0 66 New features:
michael@0 67 - Implement Valgrind support, redzones, and quarantine.
michael@0 68 - Add support for additional platforms:
michael@0 69 + FreeBSD
michael@0 70 + Mac OS X Lion
michael@0 71 + MinGW
michael@0 72 + Windows (no support yet for replacing the system malloc)
michael@0 73 - Add support for additional architectures:
michael@0 74 + MIPS
michael@0 75 + SH4
michael@0 76 + Tilera
michael@0 77 - Add support for cross compiling.
michael@0 78 - Add nallocm(), which rounds a request size up to the nearest size class
michael@0 79 without actually allocating.
michael@0 80 - Implement aligned_alloc() (blame C11).
michael@0 81 - Add the "thread.tcache.enabled" mallctl.
michael@0 82 - Add the "opt.prof_final" mallctl.
michael@0 83 - Update pprof (from gperftools 2.0).
michael@0 84 - Add the --with-mangling option.
michael@0 85 - Add the --disable-experimental option.
michael@0 86 - Add the --disable-munmap option, and make it the default on Linux.
michael@0 87 - Add the --enable-mremap option, which disables use of mremap(2) by default.
michael@0 88
michael@0 89 Incompatible changes:
michael@0 90 - Enable stats by default.
michael@0 91 - Enable fill by default.
michael@0 92 - Disable lazy locking by default.
michael@0 93 - Rename the "tcache.flush" mallctl to "thread.tcache.flush".
michael@0 94 - Rename the "arenas.pagesize" mallctl to "arenas.page".
michael@0 95 - Change the "opt.lg_prof_sample" default from 0 to 19 (1 B to 512 KiB).
michael@0 96 - Change the "opt.prof_accum" default from true to false.
michael@0 97
michael@0 98 Removed features:
michael@0 99 - Remove the swap feature, including the "config.swap", "swap.avail",
michael@0 100 "swap.prezeroed", "swap.nfds", and "swap.fds" mallctls.
michael@0 101 - Remove highruns statistics, including the
michael@0 102 "stats.arenas.<i>.bins.<j>.highruns" and
michael@0 103 "stats.arenas.<i>.lruns.<j>.highruns" mallctls.
michael@0 104 - As part of small size class refactoring, remove the "opt.lg_[qc]space_max",
michael@0 105 "arenas.cacheline", "arenas.subpage", "arenas.[tqcs]space_{min,max}", and
michael@0 106 "arenas.[tqcs]bins" mallctls.
michael@0 107 - Remove the "arenas.chunksize" mallctl.
michael@0 108 - Remove the "opt.lg_prof_tcmax" option.
michael@0 109 - Remove the "opt.lg_prof_bt_max" option.
michael@0 110 - Remove the "opt.lg_tcache_gc_sweep" option.
michael@0 111 - Remove the --disable-tiny option, including the "config.tiny" mallctl.
michael@0 112 - Remove the --enable-dynamic-page-shift configure option.
michael@0 113 - Remove the --enable-sysv configure option.
michael@0 114
michael@0 115 Bug fixes:
michael@0 116 - Fix a statistics-related bug in the "thread.arena" mallctl that could cause
michael@0 117 invalid statistics and crashes.
michael@0 118 - Work around TLS deallocation via free() on Linux. This bug could cause
michael@0 119 write-after-free memory corruption.
michael@0 120 - Fix a potential deadlock that could occur during interval- and
michael@0 121 growth-triggered heap profile dumps.
michael@0 122 - Fix large calloc() zeroing bugs due to dropping chunk map unzeroed flags.
michael@0 123 - Fix chunk_alloc_dss() to stop claiming memory is zeroed. This bug could
michael@0 124 cause memory corruption and crashes with --enable-dss specified.
michael@0 125 - Fix fork-related bugs that could cause deadlock in children between fork
michael@0 126 and exec.
michael@0 127 - Fix malloc_stats_print() to honor 'b' and 'l' in the opts parameter.
michael@0 128 - Fix realloc(p, 0) to act like free(p).
michael@0 129 - Do not enforce minimum alignment in memalign().
michael@0 130 - Check for NULL pointer in malloc_usable_size().
michael@0 131 - Fix an off-by-one heap profile statistics bug that could be observed in
michael@0 132 interval- and growth-triggered heap profiles.
michael@0 133 - Fix the "epoch" mallctl to update cached stats even if the passed in epoch
michael@0 134 is 0.
michael@0 135 - Fix bin->runcur management to fix a layout policy bug. This bug did not
michael@0 136 affect correctness.
michael@0 137 - Fix a bug in choose_arena_hard() that potentially caused more arenas to be
michael@0 138 initialized than necessary.
michael@0 139 - Add missing "opt.lg_tcache_max" mallctl implementation.
michael@0 140 - Use glibc allocator hooks to make mixed allocator usage less likely.
michael@0 141 - Fix build issues for --disable-tcache.
michael@0 142 - Don't mangle pthread_create() when --with-private-namespace is specified.
michael@0 143
michael@0 144 * 2.2.5 (November 14, 2011)
michael@0 145
michael@0 146 Bug fixes:
michael@0 147 - Fix huge_ralloc() race when using mremap(2). This is a serious bug that
michael@0 148 could cause memory corruption and/or crashes.
michael@0 149 - Fix huge_ralloc() to maintain chunk statistics.
michael@0 150 - Fix malloc_stats_print(..., "a") output.
michael@0 151
michael@0 152 * 2.2.4 (November 5, 2011)
michael@0 153
michael@0 154 Bug fixes:
michael@0 155 - Initialize arenas_tsd before using it. This bug existed for 2.2.[0-3], as
michael@0 156 well as for --disable-tls builds in earlier releases.
michael@0 157 - Do not assume a 4 KiB page size in test/rallocm.c.
michael@0 158
michael@0 159 * 2.2.3 (August 31, 2011)
michael@0 160
michael@0 161 This version fixes numerous bugs related to heap profiling.
michael@0 162
michael@0 163 Bug fixes:
michael@0 164 - Fix a prof-related race condition. This bug could cause memory corruption,
michael@0 165 but only occurred in non-default configurations (prof_accum:false).
michael@0 166 - Fix off-by-one backtracing issues (make sure that prof_alloc_prep() is
michael@0 167 excluded from backtraces).
michael@0 168 - Fix a prof-related bug in realloc() (only triggered by OOM errors).
michael@0 169 - Fix prof-related bugs in allocm() and rallocm().
michael@0 170 - Fix prof_tdata_cleanup() for --disable-tls builds.
michael@0 171 - Fix a relative include path, to fix objdir builds.
michael@0 172
michael@0 173 * 2.2.2 (July 30, 2011)
michael@0 174
michael@0 175 Bug fixes:
michael@0 176 - Fix a build error for --disable-tcache.
michael@0 177 - Fix assertions in arena_purge() (for real this time).
michael@0 178 - Add the --with-private-namespace option. This is a workaround for symbol
michael@0 179 conflicts that can inadvertently arise when using static libraries.
michael@0 180
michael@0 181 * 2.2.1 (March 30, 2011)
michael@0 182
michael@0 183 Bug fixes:
michael@0 184 - Implement atomic operations for x86/x64. This fixes compilation failures
michael@0 185 for versions of gcc that are still in wide use.
michael@0 186 - Fix an assertion in arena_purge().
michael@0 187
michael@0 188 * 2.2.0 (March 22, 2011)
michael@0 189
michael@0 190 This version incorporates several improvements to algorithms and data
michael@0 191 structures that tend to reduce fragmentation and increase speed.
michael@0 192
michael@0 193 New features:
michael@0 194 - Add the "stats.cactive" mallctl.
michael@0 195 - Update pprof (from google-perftools 1.7).
michael@0 196 - Improve backtracing-related configuration logic, and add the
michael@0 197 --disable-prof-libgcc option.
michael@0 198
michael@0 199 Bug fixes:
michael@0 200 - Change default symbol visibility from "internal", to "hidden", which
michael@0 201 decreases the overhead of library-internal function calls.
michael@0 202 - Fix symbol visibility so that it is also set on OS X.
michael@0 203 - Fix a build dependency regression caused by the introduction of the .pic.o
michael@0 204 suffix for PIC object files.
michael@0 205 - Add missing checks for mutex initialization failures.
michael@0 206 - Don't use libgcc-based backtracing except on x64, where it is known to work.
michael@0 207 - Fix deadlocks on OS X that were due to memory allocation in
michael@0 208 pthread_mutex_lock().
michael@0 209 - Heap profiling-specific fixes:
michael@0 210 + Fix memory corruption due to integer overflow in small region index
michael@0 211 computation, when using a small enough sample interval that profiling
michael@0 212 context pointers are stored in small run headers.
michael@0 213 + Fix a bootstrap ordering bug that only occurred with TLS disabled.
michael@0 214 + Fix a rallocm() rsize bug.
michael@0 215 + Fix error detection bugs for aligned memory allocation.
michael@0 216
michael@0 217 * 2.1.3 (March 14, 2011)
michael@0 218
michael@0 219 Bug fixes:
michael@0 220 - Fix a cpp logic regression (due to the "thread.{de,}allocatedp" mallctl fix
michael@0 221 for OS X in 2.1.2).
michael@0 222 - Fix a "thread.arena" mallctl bug.
michael@0 223 - Fix a thread cache stats merging bug.
michael@0 224
michael@0 225 * 2.1.2 (March 2, 2011)
michael@0 226
michael@0 227 Bug fixes:
michael@0 228 - Fix "thread.{de,}allocatedp" mallctl for OS X.
michael@0 229 - Add missing jemalloc.a to build system.
michael@0 230
michael@0 231 * 2.1.1 (January 31, 2011)
michael@0 232
michael@0 233 Bug fixes:
michael@0 234 - Fix aligned huge reallocation (affected allocm()).
michael@0 235 - Fix the ALLOCM_LG_ALIGN macro definition.
michael@0 236 - Fix a heap dumping deadlock.
michael@0 237 - Fix a "thread.arena" mallctl bug.
michael@0 238
michael@0 239 * 2.1.0 (December 3, 2010)
michael@0 240
michael@0 241 This version incorporates some optimizations that can't quite be considered
michael@0 242 bug fixes.
michael@0 243
michael@0 244 New features:
michael@0 245 - Use Linux's mremap(2) for huge object reallocation when possible.
michael@0 246 - Avoid locking in mallctl*() when possible.
michael@0 247 - Add the "thread.[de]allocatedp" mallctl's.
michael@0 248 - Convert the manual page source from roff to DocBook, and generate both roff
michael@0 249 and HTML manuals.
michael@0 250
michael@0 251 Bug fixes:
michael@0 252 - Fix a crash due to incorrect bootstrap ordering. This only impacted
michael@0 253 --enable-debug --enable-dss configurations.
michael@0 254 - Fix a minor statistics bug for mallctl("swap.avail", ...).
michael@0 255
michael@0 256 * 2.0.1 (October 29, 2010)
michael@0 257
michael@0 258 Bug fixes:
michael@0 259 - Fix a race condition in heap profiling that could cause undefined behavior
michael@0 260 if "opt.prof_accum" were disabled.
michael@0 261 - Add missing mutex unlocks for some OOM error paths in the heap profiling
michael@0 262 code.
michael@0 263 - Fix a compilation error for non-C99 builds.
michael@0 264
michael@0 265 * 2.0.0 (October 24, 2010)
michael@0 266
michael@0 267 This version focuses on the experimental *allocm() API, and on improved
michael@0 268 run-time configuration/introspection. Nonetheless, numerous performance
michael@0 269 improvements are also included.
michael@0 270
michael@0 271 New features:
michael@0 272 - Implement the experimental {,r,s,d}allocm() API, which provides a superset
michael@0 273 of the functionality available via malloc(), calloc(), posix_memalign(),
michael@0 274 realloc(), malloc_usable_size(), and free(). These functions can be used to
michael@0 275 allocate/reallocate aligned zeroed memory, ask for optional extra memory
michael@0 276 during reallocation, prevent object movement during reallocation, etc.
michael@0 277 - Replace JEMALLOC_OPTIONS/JEMALLOC_PROF_PREFIX with MALLOC_CONF, which is
michael@0 278 more human-readable, and more flexible. For example:
michael@0 279 JEMALLOC_OPTIONS=AJP
michael@0 280 is now:
michael@0 281 MALLOC_CONF=abort:true,fill:true,stats_print:true
michael@0 282 - Port to Apple OS X. Sponsored by Mozilla.
michael@0 283 - Make it possible for the application to control thread-->arena mappings via
michael@0 284 the "thread.arena" mallctl.
michael@0 285 - Add compile-time support for all TLS-related functionality via pthreads TSD.
michael@0 286 This is mainly of interest for OS X, which does not support TLS, but has a
michael@0 287 TSD implementation with similar performance.
michael@0 288 - Override memalign() and valloc() if they are provided by the system.
michael@0 289 - Add the "arenas.purge" mallctl, which can be used to synchronously purge all
michael@0 290 dirty unused pages.
michael@0 291 - Make cumulative heap profiling data optional, so that it is possible to
michael@0 292 limit the amount of memory consumed by heap profiling data structures.
michael@0 293 - Add per thread allocation counters that can be accessed via the
michael@0 294 "thread.allocated" and "thread.deallocated" mallctls.
michael@0 295
michael@0 296 Incompatible changes:
michael@0 297 - Remove JEMALLOC_OPTIONS and malloc_options (see MALLOC_CONF above).
michael@0 298 - Increase default backtrace depth from 4 to 128 for heap profiling.
michael@0 299 - Disable interval-based profile dumps by default.
michael@0 300
michael@0 301 Bug fixes:
michael@0 302 - Remove bad assertions in fork handler functions. These assertions could
michael@0 303 cause aborts for some combinations of configure settings.
michael@0 304 - Fix strerror_r() usage to deal with non-standard semantics in GNU libc.
michael@0 305 - Fix leak context reporting. This bug tended to cause the number of contexts
michael@0 306 to be underreported (though the reported number of objects and bytes were
michael@0 307 correct).
michael@0 308 - Fix a realloc() bug for large in-place growing reallocation. This bug could
michael@0 309 cause memory corruption, but it was hard to trigger.
michael@0 310 - Fix an allocation bug for small allocations that could be triggered if
michael@0 311 multiple threads raced to create a new run of backing pages.
michael@0 312 - Enhance the heap profiler to trigger samples based on usable size, rather
michael@0 313 than request size.
michael@0 314 - Fix a heap profiling bug due to sometimes losing track of requested object
michael@0 315 size for sampled objects.
michael@0 316
michael@0 317 * 1.0.3 (August 12, 2010)
michael@0 318
michael@0 319 Bug fixes:
michael@0 320 - Fix the libunwind-based implementation of stack backtracing (used for heap
michael@0 321 profiling). This bug could cause zero-length backtraces to be reported.
michael@0 322 - Add a missing mutex unlock in library initialization code. If multiple
michael@0 323 threads raced to initialize malloc, some of them could end up permanently
michael@0 324 blocked.
michael@0 325
michael@0 326 * 1.0.2 (May 11, 2010)
michael@0 327
michael@0 328 Bug fixes:
michael@0 329 - Fix junk filling of large objects, which could cause memory corruption.
michael@0 330 - Add MAP_NORESERVE support for chunk mapping, because otherwise virtual
michael@0 331 memory limits could cause swap file configuration to fail. Contributed by
michael@0 332 Jordan DeLong.
michael@0 333
michael@0 334 * 1.0.1 (April 14, 2010)
michael@0 335
michael@0 336 Bug fixes:
michael@0 337 - Fix compilation when --enable-fill is specified.
michael@0 338 - Fix threads-related profiling bugs that affected accuracy and caused memory
michael@0 339 to be leaked during thread exit.
michael@0 340 - Fix dirty page purging race conditions that could cause crashes.
michael@0 341 - Fix crash in tcache flushing code during thread destruction.
michael@0 342
michael@0 343 * 1.0.0 (April 11, 2010)
michael@0 344
michael@0 345 This release focuses on speed and run-time introspection. Numerous
michael@0 346 algorithmic improvements make this release substantially faster than its
michael@0 347 predecessors.
michael@0 348
michael@0 349 New features:
michael@0 350 - Implement autoconf-based configuration system.
michael@0 351 - Add mallctl*(), for the purposes of introspection and run-time
michael@0 352 configuration.
michael@0 353 - Make it possible for the application to manually flush a thread's cache, via
michael@0 354 the "tcache.flush" mallctl.
michael@0 355 - Base maximum dirty page count on proportion of active memory.
michael@0 356 - Compute various addtional run-time statistics, including per size class
michael@0 357 statistics for large objects.
michael@0 358 - Expose malloc_stats_print(), which can be called repeatedly by the
michael@0 359 application.
michael@0 360 - Simplify the malloc_message() signature to only take one string argument,
michael@0 361 and incorporate an opaque data pointer argument for use by the application
michael@0 362 in combination with malloc_stats_print().
michael@0 363 - Add support for allocation backed by one or more swap files, and allow the
michael@0 364 application to disable over-commit if swap files are in use.
michael@0 365 - Implement allocation profiling and leak checking.
michael@0 366
michael@0 367 Removed features:
michael@0 368 - Remove the dynamic arena rebalancing code, since thread-specific caching
michael@0 369 reduces its utility.
michael@0 370
michael@0 371 Bug fixes:
michael@0 372 - Modify chunk allocation to work when address space layout randomization
michael@0 373 (ASLR) is in use.
michael@0 374 - Fix thread cleanup bugs related to TLS destruction.
michael@0 375 - Handle 0-size allocation requests in posix_memalign().
michael@0 376 - Fix a chunk leak. The leaked chunks were never touched, so this impacted
michael@0 377 virtual memory usage, but not physical memory usage.
michael@0 378
michael@0 379 * linux_2008082[78]a (August 27/28, 2008)
michael@0 380
michael@0 381 These snapshot releases are the simple result of incorporating Linux-specific
michael@0 382 support into the FreeBSD malloc sources.
michael@0 383
michael@0 384 --------------------------------------------------------------------------------
michael@0 385 vim:filetype=text:textwidth=80

mercurial