1a4bd5210SJason EvansFollowing are change highlights associated with official releases. Important 2a4bd5210SJason Evansbug fixes are all mentioned, but internal enhancements are omitted here for 3a4bd5210SJason Evansbrevity (even though they are more fun to write about). Much more detail can be 4a4bd5210SJason Evansfound in the git revision history: 5a4bd5210SJason Evans 6a4bd5210SJason Evans http://www.canonware.com/cgi-bin/gitweb.cgi?p=jemalloc.git 7a4bd5210SJason Evans git://canonware.com/jemalloc.git 8a4bd5210SJason Evans 9*f921d10fSJason Evans* 3.5.0 (January 22, 2014) 10*f921d10fSJason Evans 11*f921d10fSJason Evans This version focuses on refactoring and automated testing, though it also 12*f921d10fSJason Evans includes some non-trivial heap profiling optimizations not mentioned below. 13*f921d10fSJason Evans 14*f921d10fSJason Evans New features: 15*f921d10fSJason Evans - Add the *allocx() API, which is a successor to the experimental *allocm() 16*f921d10fSJason Evans API. The *allocx() functions are slightly simpler to use because they have 17*f921d10fSJason Evans fewer parameters, they directly return the results of primary interest, and 18*f921d10fSJason Evans mallocx()/rallocx() avoid the strict aliasing pitfall that 19*f921d10fSJason Evans allocm()/rallocx() share with posix_memalign(). Note that *allocm() is 20*f921d10fSJason Evans slated for removal in the next non-bugfix release. 21*f921d10fSJason Evans - Add support for LinuxThreads. 22*f921d10fSJason Evans 23*f921d10fSJason Evans Bug fixes: 24*f921d10fSJason Evans - Unless heap profiling is enabled, disable floating point code and don't link 25*f921d10fSJason Evans with libm. This, in combination with e.g. EXTRA_CFLAGS=-mno-sse on x64 26*f921d10fSJason Evans systems, makes it possible to completely disable floating point register 27*f921d10fSJason Evans use. Some versions of glibc neglect to save/restore caller-saved floating 28*f921d10fSJason Evans point registers during dynamic lazy symbol loading, and the symbol loading 29*f921d10fSJason Evans code uses whatever malloc the application happens to have linked/loaded 30*f921d10fSJason Evans with, the result being potential floating point register corruption. 31*f921d10fSJason Evans - Report ENOMEM rather than EINVAL if an OOM occurs during heap profiling 32*f921d10fSJason Evans backtrace creation in imemalign(). This bug impacted posix_memalign() and 33*f921d10fSJason Evans aligned_alloc(). 34*f921d10fSJason Evans - Fix a file descriptor leak in a prof_dump_maps() error path. 35*f921d10fSJason Evans - Fix prof_dump() to close the dump file descriptor for all relevant error 36*f921d10fSJason Evans paths. 37*f921d10fSJason Evans - Fix rallocm() to use the arena specified by the ALLOCM_ARENA(s) flag for 38*f921d10fSJason Evans allocation, not just deallocation. 39*f921d10fSJason Evans - Fix a data race for large allocation stats counters. 40*f921d10fSJason Evans - Fix a potential infinite loop during thread exit. This bug occurred on 41*f921d10fSJason Evans Solaris, and could affect other platforms with similar pthreads TSD 42*f921d10fSJason Evans implementations. 43*f921d10fSJason Evans - Don't junk-fill reallocations unless usable size changes. This fixes a 44*f921d10fSJason Evans violation of the *allocx()/*allocm() semantics. 45*f921d10fSJason Evans - Fix growing large reallocation to junk fill new space. 46*f921d10fSJason Evans - Fix huge deallocation to junk fill when munmap is disabled. 47*f921d10fSJason Evans - Change the default private namespace prefix from empty to je_, and change 48*f921d10fSJason Evans --with-private-namespace-prefix so that it prepends an additional prefix 49*f921d10fSJason Evans rather than replacing je_. This reduces the likelihood of applications 50*f921d10fSJason Evans which statically link jemalloc experiencing symbol name collisions. 51*f921d10fSJason Evans - Add missing private namespace mangling (relevant when 52*f921d10fSJason Evans --with-private-namespace is specified). 53*f921d10fSJason Evans - Add and use JEMALLOC_INLINE_C so that static inline functions are marked as 54*f921d10fSJason Evans static even for debug builds. 55*f921d10fSJason Evans - Add a missing mutex unlock in a malloc_init_hard() error path. In practice 56*f921d10fSJason Evans this error path is never executed. 57*f921d10fSJason Evans - Fix numerous bugs in malloc_strotumax() error handling/reporting. These 58*f921d10fSJason Evans bugs had no impact except for malformed inputs. 59*f921d10fSJason Evans - Fix numerous bugs in malloc_snprintf(). These bugs were not exercised by 60*f921d10fSJason Evans existing calls, so they had no impact. 61*f921d10fSJason Evans 622b06b201SJason Evans* 3.4.1 (October 20, 2013) 632b06b201SJason Evans 642b06b201SJason Evans Bug fixes: 652b06b201SJason Evans - Fix a race in the "arenas.extend" mallctl that could cause memory corruption 662b06b201SJason Evans of internal data structures and subsequent crashes. 672b06b201SJason Evans - Fix Valgrind integration flaws that caused Valgrind warnings about reads of 682b06b201SJason Evans uninitialized memory in: 692b06b201SJason Evans + arena chunk headers 702b06b201SJason Evans + internal zero-initialized data structures (relevant to tcache and prof 712b06b201SJason Evans code) 722b06b201SJason Evans - Preserve errno during the first allocation. A readlink(2) call during 732b06b201SJason Evans initialization fails unless /etc/malloc.conf exists, so errno was typically 742b06b201SJason Evans set during the first allocation prior to this fix. 752b06b201SJason Evans - Fix compilation warnings reported by gcc 4.8.1. 762b06b201SJason Evans 77f8ca2db1SJason Evans* 3.4.0 (June 2, 2013) 78f8ca2db1SJason Evans 79f8ca2db1SJason Evans This version is essentially a small bugfix release, but the addition of 80f8ca2db1SJason Evans aarch64 support requires that the minor version be incremented. 81f8ca2db1SJason Evans 82f8ca2db1SJason Evans Bug fixes: 83f8ca2db1SJason Evans - Fix race-triggered deadlocks in chunk_record(). These deadlocks were 84f8ca2db1SJason Evans typically triggered by multiple threads concurrently deallocating huge 85f8ca2db1SJason Evans objects. 86f8ca2db1SJason Evans 87f8ca2db1SJason Evans New features: 88f8ca2db1SJason Evans - Add support for the aarch64 architecture. 89f8ca2db1SJason Evans 90f8ca2db1SJason Evans* 3.3.1 (March 6, 2013) 91f8ca2db1SJason Evans 92f8ca2db1SJason Evans This version fixes bugs that are typically encountered only when utilizing 93f8ca2db1SJason Evans custom run-time options. 94f8ca2db1SJason Evans 95f8ca2db1SJason Evans Bug fixes: 96f8ca2db1SJason Evans - Fix a locking order bug that could cause deadlock during fork if heap 97f8ca2db1SJason Evans profiling were enabled. 98f8ca2db1SJason Evans - Fix a chunk recycling bug that could cause the allocator to lose track of 99f8ca2db1SJason Evans whether a chunk was zeroed. On FreeBSD, NetBSD, and OS X, it could cause 100f8ca2db1SJason Evans corruption if allocating via sbrk(2) (unlikely unless running with the 101f8ca2db1SJason Evans "dss:primary" option specified). This was completely harmless on Linux 102f8ca2db1SJason Evans unless using mlockall(2) (and unlikely even then, unless the 103f8ca2db1SJason Evans --disable-munmap configure option or the "dss:primary" option was 104f8ca2db1SJason Evans specified). This regression was introduced in 3.1.0 by the 105f8ca2db1SJason Evans mlockall(2)/madvise(2) interaction fix. 106f8ca2db1SJason Evans - Fix TLS-related memory corruption that could occur during thread exit if the 107f8ca2db1SJason Evans thread never allocated memory. Only the quarantine and prof facilities were 108f8ca2db1SJason Evans susceptible. 109f8ca2db1SJason Evans - Fix two quarantine bugs: 110f8ca2db1SJason Evans + Internal reallocation of the quarantined object array leaked the old 111f8ca2db1SJason Evans array. 112f8ca2db1SJason Evans + Reallocation failure for internal reallocation of the quarantined object 113f8ca2db1SJason Evans array (very unlikely) resulted in memory corruption. 114f8ca2db1SJason Evans - Fix Valgrind integration to annotate all internally allocated memory in a 115f8ca2db1SJason Evans way that keeps Valgrind happy about internal data structure access. 116f8ca2db1SJason Evans - Fix building for s390 systems. 117f8ca2db1SJason Evans 11888ad2f8dSJason Evans* 3.3.0 (January 23, 2013) 11988ad2f8dSJason Evans 12088ad2f8dSJason Evans This version includes a few minor performance improvements in addition to the 12188ad2f8dSJason Evans listed new features and bug fixes. 12288ad2f8dSJason Evans 12388ad2f8dSJason Evans New features: 12488ad2f8dSJason Evans - Add clipping support to lg_chunk option processing. 12588ad2f8dSJason Evans - Add the --enable-ivsalloc option. 12688ad2f8dSJason Evans - Add the --without-export option. 12788ad2f8dSJason Evans - Add the --disable-zone-allocator option. 12888ad2f8dSJason Evans 12988ad2f8dSJason Evans Bug fixes: 13088ad2f8dSJason Evans - Fix "arenas.extend" mallctl to output the number of arenas. 1312b06b201SJason Evans - Fix chunk_recycle() to unconditionally inform Valgrind that returned memory 13288ad2f8dSJason Evans is undefined. 13388ad2f8dSJason Evans - Fix build break on FreeBSD related to alloca.h. 13488ad2f8dSJason Evans 13582872ac0SJason Evans* 3.2.0 (November 9, 2012) 13682872ac0SJason Evans 13782872ac0SJason Evans In addition to a couple of bug fixes, this version modifies page run 13882872ac0SJason Evans allocation and dirty page purging algorithms in order to better control 13982872ac0SJason Evans page-level virtual memory fragmentation. 14082872ac0SJason Evans 14182872ac0SJason Evans Incompatible changes: 14282872ac0SJason Evans - Change the "opt.lg_dirty_mult" default from 5 to 3 (32:1 to 8:1). 14382872ac0SJason Evans 14482872ac0SJason Evans Bug fixes: 14582872ac0SJason Evans - Fix dss/mmap allocation precedence code to use recyclable mmap memory only 14682872ac0SJason Evans after primary dss allocation fails. 14782872ac0SJason Evans - Fix deadlock in the "arenas.purge" mallctl. This regression was introduced 14882872ac0SJason Evans in 3.1.0 by the addition of the "arena.<i>.purge" mallctl. 14982872ac0SJason Evans 15082872ac0SJason Evans* 3.1.0 (October 16, 2012) 15182872ac0SJason Evans 15282872ac0SJason Evans New features: 15382872ac0SJason Evans - Auto-detect whether running inside Valgrind, thus removing the need to 15482872ac0SJason Evans manually specify MALLOC_CONF=valgrind:true. 15582872ac0SJason Evans - Add the "arenas.extend" mallctl, which allows applications to create 15682872ac0SJason Evans manually managed arenas. 15782872ac0SJason Evans - Add the ALLOCM_ARENA() flag for {,r,d}allocm(). 15882872ac0SJason Evans - Add the "opt.dss", "arena.<i>.dss", and "stats.arenas.<i>.dss" mallctls, 15982872ac0SJason Evans which provide control over dss/mmap precedence. 16082872ac0SJason Evans - Add the "arena.<i>.purge" mallctl, which obsoletes "arenas.purge". 16182872ac0SJason Evans - Define LG_QUANTUM for hppa. 16282872ac0SJason Evans 16382872ac0SJason Evans Incompatible changes: 16482872ac0SJason Evans - Disable tcache by default if running inside Valgrind, in order to avoid 16582872ac0SJason Evans making unallocated objects appear reachable to Valgrind. 16682872ac0SJason Evans - Drop const from malloc_usable_size() argument on Linux. 16782872ac0SJason Evans 16882872ac0SJason Evans Bug fixes: 16982872ac0SJason Evans - Fix heap profiling crash if sampled object is freed via realloc(p, 0). 17082872ac0SJason Evans - Remove const from __*_hook variable declarations, so that glibc can modify 17182872ac0SJason Evans them during process forking. 17282872ac0SJason Evans - Fix mlockall(2)/madvise(2) interaction. 17382872ac0SJason Evans - Fix fork(2)-related deadlocks. 17482872ac0SJason Evans - Fix error return value for "thread.tcache.enabled" mallctl. 17582872ac0SJason Evans 17635dad073SJason Evans* 3.0.0 (May 11, 2012) 177a4bd5210SJason Evans 178a4bd5210SJason Evans Although this version adds some major new features, the primary focus is on 179a4bd5210SJason Evans internal code cleanup that facilitates maintainability and portability, most 180a4bd5210SJason Evans of which is not reflected in the ChangeLog. This is the first release to 181a4bd5210SJason Evans incorporate substantial contributions from numerous other developers, and the 182a4bd5210SJason Evans result is a more broadly useful allocator (see the git revision history for 183a4bd5210SJason Evans contribution details). Note that the license has been unified, thanks to 184a4bd5210SJason Evans Facebook granting a license under the same terms as the other copyright 185a4bd5210SJason Evans holders (see COPYING). 186a4bd5210SJason Evans 187a4bd5210SJason Evans New features: 188a4bd5210SJason Evans - Implement Valgrind support, redzones, and quarantine. 189e722f8f8SJason Evans - Add support for additional platforms: 190a4bd5210SJason Evans + FreeBSD 191a4bd5210SJason Evans + Mac OS X Lion 192e722f8f8SJason Evans + MinGW 19335dad073SJason Evans + Windows (no support yet for replacing the system malloc) 194a4bd5210SJason Evans - Add support for additional architectures: 195a4bd5210SJason Evans + MIPS 196a4bd5210SJason Evans + SH4 197a4bd5210SJason Evans + Tilera 198a4bd5210SJason Evans - Add support for cross compiling. 199a4bd5210SJason Evans - Add nallocm(), which rounds a request size up to the nearest size class 200a4bd5210SJason Evans without actually allocating. 201a4bd5210SJason Evans - Implement aligned_alloc() (blame C11). 202a4bd5210SJason Evans - Add the "thread.tcache.enabled" mallctl. 2038ed34ab0SJason Evans - Add the "opt.prof_final" mallctl. 2048ed34ab0SJason Evans - Update pprof (from gperftools 2.0). 20535dad073SJason Evans - Add the --with-mangling option. 20635dad073SJason Evans - Add the --disable-experimental option. 20735dad073SJason Evans - Add the --disable-munmap option, and make it the default on Linux. 20835dad073SJason Evans - Add the --enable-mremap option, which disables use of mremap(2) by default. 209a4bd5210SJason Evans 210a4bd5210SJason Evans Incompatible changes: 211a4bd5210SJason Evans - Enable stats by default. 212a4bd5210SJason Evans - Enable fill by default. 213a4bd5210SJason Evans - Disable lazy locking by default. 214a4bd5210SJason Evans - Rename the "tcache.flush" mallctl to "thread.tcache.flush". 215a4bd5210SJason Evans - Rename the "arenas.pagesize" mallctl to "arenas.page". 2168ed34ab0SJason Evans - Change the "opt.lg_prof_sample" default from 0 to 19 (1 B to 512 KiB). 2178ed34ab0SJason Evans - Change the "opt.prof_accum" default from true to false. 218a4bd5210SJason Evans 219a4bd5210SJason Evans Removed features: 220a4bd5210SJason Evans - Remove the swap feature, including the "config.swap", "swap.avail", 221a4bd5210SJason Evans "swap.prezeroed", "swap.nfds", and "swap.fds" mallctls. 222a4bd5210SJason Evans - Remove highruns statistics, including the 223a4bd5210SJason Evans "stats.arenas.<i>.bins.<j>.highruns" and 224a4bd5210SJason Evans "stats.arenas.<i>.lruns.<j>.highruns" mallctls. 225a4bd5210SJason Evans - As part of small size class refactoring, remove the "opt.lg_[qc]space_max", 226a4bd5210SJason Evans "arenas.cacheline", "arenas.subpage", "arenas.[tqcs]space_{min,max}", and 227a4bd5210SJason Evans "arenas.[tqcs]bins" mallctls. 228a4bd5210SJason Evans - Remove the "arenas.chunksize" mallctl. 229a4bd5210SJason Evans - Remove the "opt.lg_prof_tcmax" option. 230a4bd5210SJason Evans - Remove the "opt.lg_prof_bt_max" option. 231a4bd5210SJason Evans - Remove the "opt.lg_tcache_gc_sweep" option. 232a4bd5210SJason Evans - Remove the --disable-tiny option, including the "config.tiny" mallctl. 233a4bd5210SJason Evans - Remove the --enable-dynamic-page-shift configure option. 234a4bd5210SJason Evans - Remove the --enable-sysv configure option. 235a4bd5210SJason Evans 236a4bd5210SJason Evans Bug fixes: 237a4bd5210SJason Evans - Fix a statistics-related bug in the "thread.arena" mallctl that could cause 238a4bd5210SJason Evans invalid statistics and crashes. 239e722f8f8SJason Evans - Work around TLS deallocation via free() on Linux. This bug could cause 240a4bd5210SJason Evans write-after-free memory corruption. 241e722f8f8SJason Evans - Fix a potential deadlock that could occur during interval- and 242e722f8f8SJason Evans growth-triggered heap profile dumps. 24335dad073SJason Evans - Fix large calloc() zeroing bugs due to dropping chunk map unzeroed flags. 2444bcb1430SJason Evans - Fix chunk_alloc_dss() to stop claiming memory is zeroed. This bug could 2454bcb1430SJason Evans cause memory corruption and crashes with --enable-dss specified. 246e722f8f8SJason Evans - Fix fork-related bugs that could cause deadlock in children between fork 247e722f8f8SJason Evans and exec. 248a4bd5210SJason Evans - Fix malloc_stats_print() to honor 'b' and 'l' in the opts parameter. 249a4bd5210SJason Evans - Fix realloc(p, 0) to act like free(p). 250a4bd5210SJason Evans - Do not enforce minimum alignment in memalign(). 251a4bd5210SJason Evans - Check for NULL pointer in malloc_usable_size(). 252e722f8f8SJason Evans - Fix an off-by-one heap profile statistics bug that could be observed in 253e722f8f8SJason Evans interval- and growth-triggered heap profiles. 254e722f8f8SJason Evans - Fix the "epoch" mallctl to update cached stats even if the passed in epoch 255e722f8f8SJason Evans is 0. 256a4bd5210SJason Evans - Fix bin->runcur management to fix a layout policy bug. This bug did not 257a4bd5210SJason Evans affect correctness. 258a4bd5210SJason Evans - Fix a bug in choose_arena_hard() that potentially caused more arenas to be 259a4bd5210SJason Evans initialized than necessary. 260a4bd5210SJason Evans - Add missing "opt.lg_tcache_max" mallctl implementation. 261a4bd5210SJason Evans - Use glibc allocator hooks to make mixed allocator usage less likely. 262a4bd5210SJason Evans - Fix build issues for --disable-tcache. 2638ed34ab0SJason Evans - Don't mangle pthread_create() when --with-private-namespace is specified. 264a4bd5210SJason Evans 265a4bd5210SJason Evans* 2.2.5 (November 14, 2011) 266a4bd5210SJason Evans 267a4bd5210SJason Evans Bug fixes: 268a4bd5210SJason Evans - Fix huge_ralloc() race when using mremap(2). This is a serious bug that 269a4bd5210SJason Evans could cause memory corruption and/or crashes. 270a4bd5210SJason Evans - Fix huge_ralloc() to maintain chunk statistics. 271a4bd5210SJason Evans - Fix malloc_stats_print(..., "a") output. 272a4bd5210SJason Evans 273a4bd5210SJason Evans* 2.2.4 (November 5, 2011) 274a4bd5210SJason Evans 275a4bd5210SJason Evans Bug fixes: 276a4bd5210SJason Evans - Initialize arenas_tsd before using it. This bug existed for 2.2.[0-3], as 277a4bd5210SJason Evans well as for --disable-tls builds in earlier releases. 278a4bd5210SJason Evans - Do not assume a 4 KiB page size in test/rallocm.c. 279a4bd5210SJason Evans 280a4bd5210SJason Evans* 2.2.3 (August 31, 2011) 281a4bd5210SJason Evans 282a4bd5210SJason Evans This version fixes numerous bugs related to heap profiling. 283a4bd5210SJason Evans 284a4bd5210SJason Evans Bug fixes: 285a4bd5210SJason Evans - Fix a prof-related race condition. This bug could cause memory corruption, 286a4bd5210SJason Evans but only occurred in non-default configurations (prof_accum:false). 287a4bd5210SJason Evans - Fix off-by-one backtracing issues (make sure that prof_alloc_prep() is 288a4bd5210SJason Evans excluded from backtraces). 289a4bd5210SJason Evans - Fix a prof-related bug in realloc() (only triggered by OOM errors). 290a4bd5210SJason Evans - Fix prof-related bugs in allocm() and rallocm(). 291a4bd5210SJason Evans - Fix prof_tdata_cleanup() for --disable-tls builds. 292a4bd5210SJason Evans - Fix a relative include path, to fix objdir builds. 293a4bd5210SJason Evans 294a4bd5210SJason Evans* 2.2.2 (July 30, 2011) 295a4bd5210SJason Evans 296a4bd5210SJason Evans Bug fixes: 297a4bd5210SJason Evans - Fix a build error for --disable-tcache. 298a4bd5210SJason Evans - Fix assertions in arena_purge() (for real this time). 299a4bd5210SJason Evans - Add the --with-private-namespace option. This is a workaround for symbol 300a4bd5210SJason Evans conflicts that can inadvertently arise when using static libraries. 301a4bd5210SJason Evans 302a4bd5210SJason Evans* 2.2.1 (March 30, 2011) 303a4bd5210SJason Evans 304a4bd5210SJason Evans Bug fixes: 305a4bd5210SJason Evans - Implement atomic operations for x86/x64. This fixes compilation failures 306a4bd5210SJason Evans for versions of gcc that are still in wide use. 307a4bd5210SJason Evans - Fix an assertion in arena_purge(). 308a4bd5210SJason Evans 309a4bd5210SJason Evans* 2.2.0 (March 22, 2011) 310a4bd5210SJason Evans 311a4bd5210SJason Evans This version incorporates several improvements to algorithms and data 312a4bd5210SJason Evans structures that tend to reduce fragmentation and increase speed. 313a4bd5210SJason Evans 314a4bd5210SJason Evans New features: 315a4bd5210SJason Evans - Add the "stats.cactive" mallctl. 316a4bd5210SJason Evans - Update pprof (from google-perftools 1.7). 317a4bd5210SJason Evans - Improve backtracing-related configuration logic, and add the 318a4bd5210SJason Evans --disable-prof-libgcc option. 319a4bd5210SJason Evans 320a4bd5210SJason Evans Bug fixes: 321a4bd5210SJason Evans - Change default symbol visibility from "internal", to "hidden", which 322a4bd5210SJason Evans decreases the overhead of library-internal function calls. 323a4bd5210SJason Evans - Fix symbol visibility so that it is also set on OS X. 324a4bd5210SJason Evans - Fix a build dependency regression caused by the introduction of the .pic.o 325a4bd5210SJason Evans suffix for PIC object files. 326a4bd5210SJason Evans - Add missing checks for mutex initialization failures. 327a4bd5210SJason Evans - Don't use libgcc-based backtracing except on x64, where it is known to work. 328a4bd5210SJason Evans - Fix deadlocks on OS X that were due to memory allocation in 329a4bd5210SJason Evans pthread_mutex_lock(). 330a4bd5210SJason Evans - Heap profiling-specific fixes: 331a4bd5210SJason Evans + Fix memory corruption due to integer overflow in small region index 332a4bd5210SJason Evans computation, when using a small enough sample interval that profiling 333a4bd5210SJason Evans context pointers are stored in small run headers. 334a4bd5210SJason Evans + Fix a bootstrap ordering bug that only occurred with TLS disabled. 335a4bd5210SJason Evans + Fix a rallocm() rsize bug. 336a4bd5210SJason Evans + Fix error detection bugs for aligned memory allocation. 337a4bd5210SJason Evans 338a4bd5210SJason Evans* 2.1.3 (March 14, 2011) 339a4bd5210SJason Evans 340a4bd5210SJason Evans Bug fixes: 341a4bd5210SJason Evans - Fix a cpp logic regression (due to the "thread.{de,}allocatedp" mallctl fix 342a4bd5210SJason Evans for OS X in 2.1.2). 343a4bd5210SJason Evans - Fix a "thread.arena" mallctl bug. 344a4bd5210SJason Evans - Fix a thread cache stats merging bug. 345a4bd5210SJason Evans 346a4bd5210SJason Evans* 2.1.2 (March 2, 2011) 347a4bd5210SJason Evans 348a4bd5210SJason Evans Bug fixes: 349a4bd5210SJason Evans - Fix "thread.{de,}allocatedp" mallctl for OS X. 350a4bd5210SJason Evans - Add missing jemalloc.a to build system. 351a4bd5210SJason Evans 352a4bd5210SJason Evans* 2.1.1 (January 31, 2011) 353a4bd5210SJason Evans 354a4bd5210SJason Evans Bug fixes: 355a4bd5210SJason Evans - Fix aligned huge reallocation (affected allocm()). 356a4bd5210SJason Evans - Fix the ALLOCM_LG_ALIGN macro definition. 357a4bd5210SJason Evans - Fix a heap dumping deadlock. 358a4bd5210SJason Evans - Fix a "thread.arena" mallctl bug. 359a4bd5210SJason Evans 360a4bd5210SJason Evans* 2.1.0 (December 3, 2010) 361a4bd5210SJason Evans 362a4bd5210SJason Evans This version incorporates some optimizations that can't quite be considered 363a4bd5210SJason Evans bug fixes. 364a4bd5210SJason Evans 365a4bd5210SJason Evans New features: 366a4bd5210SJason Evans - Use Linux's mremap(2) for huge object reallocation when possible. 367a4bd5210SJason Evans - Avoid locking in mallctl*() when possible. 368a4bd5210SJason Evans - Add the "thread.[de]allocatedp" mallctl's. 369a4bd5210SJason Evans - Convert the manual page source from roff to DocBook, and generate both roff 370a4bd5210SJason Evans and HTML manuals. 371a4bd5210SJason Evans 372a4bd5210SJason Evans Bug fixes: 373a4bd5210SJason Evans - Fix a crash due to incorrect bootstrap ordering. This only impacted 374a4bd5210SJason Evans --enable-debug --enable-dss configurations. 375a4bd5210SJason Evans - Fix a minor statistics bug for mallctl("swap.avail", ...). 376a4bd5210SJason Evans 377a4bd5210SJason Evans* 2.0.1 (October 29, 2010) 378a4bd5210SJason Evans 379a4bd5210SJason Evans Bug fixes: 380a4bd5210SJason Evans - Fix a race condition in heap profiling that could cause undefined behavior 381a4bd5210SJason Evans if "opt.prof_accum" were disabled. 382a4bd5210SJason Evans - Add missing mutex unlocks for some OOM error paths in the heap profiling 383a4bd5210SJason Evans code. 384a4bd5210SJason Evans - Fix a compilation error for non-C99 builds. 385a4bd5210SJason Evans 386a4bd5210SJason Evans* 2.0.0 (October 24, 2010) 387a4bd5210SJason Evans 388a4bd5210SJason Evans This version focuses on the experimental *allocm() API, and on improved 389a4bd5210SJason Evans run-time configuration/introspection. Nonetheless, numerous performance 390a4bd5210SJason Evans improvements are also included. 391a4bd5210SJason Evans 392a4bd5210SJason Evans New features: 393a4bd5210SJason Evans - Implement the experimental {,r,s,d}allocm() API, which provides a superset 394a4bd5210SJason Evans of the functionality available via malloc(), calloc(), posix_memalign(), 395a4bd5210SJason Evans realloc(), malloc_usable_size(), and free(). These functions can be used to 396a4bd5210SJason Evans allocate/reallocate aligned zeroed memory, ask for optional extra memory 397a4bd5210SJason Evans during reallocation, prevent object movement during reallocation, etc. 398a4bd5210SJason Evans - Replace JEMALLOC_OPTIONS/JEMALLOC_PROF_PREFIX with MALLOC_CONF, which is 399a4bd5210SJason Evans more human-readable, and more flexible. For example: 400a4bd5210SJason Evans JEMALLOC_OPTIONS=AJP 401a4bd5210SJason Evans is now: 402a4bd5210SJason Evans MALLOC_CONF=abort:true,fill:true,stats_print:true 403a4bd5210SJason Evans - Port to Apple OS X. Sponsored by Mozilla. 404a4bd5210SJason Evans - Make it possible for the application to control thread-->arena mappings via 405a4bd5210SJason Evans the "thread.arena" mallctl. 406a4bd5210SJason Evans - Add compile-time support for all TLS-related functionality via pthreads TSD. 407a4bd5210SJason Evans This is mainly of interest for OS X, which does not support TLS, but has a 408a4bd5210SJason Evans TSD implementation with similar performance. 409a4bd5210SJason Evans - Override memalign() and valloc() if they are provided by the system. 410a4bd5210SJason Evans - Add the "arenas.purge" mallctl, which can be used to synchronously purge all 411a4bd5210SJason Evans dirty unused pages. 412a4bd5210SJason Evans - Make cumulative heap profiling data optional, so that it is possible to 413a4bd5210SJason Evans limit the amount of memory consumed by heap profiling data structures. 414a4bd5210SJason Evans - Add per thread allocation counters that can be accessed via the 415a4bd5210SJason Evans "thread.allocated" and "thread.deallocated" mallctls. 416a4bd5210SJason Evans 417a4bd5210SJason Evans Incompatible changes: 418a4bd5210SJason Evans - Remove JEMALLOC_OPTIONS and malloc_options (see MALLOC_CONF above). 419a4bd5210SJason Evans - Increase default backtrace depth from 4 to 128 for heap profiling. 420a4bd5210SJason Evans - Disable interval-based profile dumps by default. 421a4bd5210SJason Evans 422a4bd5210SJason Evans Bug fixes: 423a4bd5210SJason Evans - Remove bad assertions in fork handler functions. These assertions could 424a4bd5210SJason Evans cause aborts for some combinations of configure settings. 425a4bd5210SJason Evans - Fix strerror_r() usage to deal with non-standard semantics in GNU libc. 426a4bd5210SJason Evans - Fix leak context reporting. This bug tended to cause the number of contexts 427a4bd5210SJason Evans to be underreported (though the reported number of objects and bytes were 428a4bd5210SJason Evans correct). 429a4bd5210SJason Evans - Fix a realloc() bug for large in-place growing reallocation. This bug could 430a4bd5210SJason Evans cause memory corruption, but it was hard to trigger. 431a4bd5210SJason Evans - Fix an allocation bug for small allocations that could be triggered if 432a4bd5210SJason Evans multiple threads raced to create a new run of backing pages. 433a4bd5210SJason Evans - Enhance the heap profiler to trigger samples based on usable size, rather 434a4bd5210SJason Evans than request size. 435a4bd5210SJason Evans - Fix a heap profiling bug due to sometimes losing track of requested object 436a4bd5210SJason Evans size for sampled objects. 437a4bd5210SJason Evans 438a4bd5210SJason Evans* 1.0.3 (August 12, 2010) 439a4bd5210SJason Evans 440a4bd5210SJason Evans Bug fixes: 441a4bd5210SJason Evans - Fix the libunwind-based implementation of stack backtracing (used for heap 442a4bd5210SJason Evans profiling). This bug could cause zero-length backtraces to be reported. 443a4bd5210SJason Evans - Add a missing mutex unlock in library initialization code. If multiple 444a4bd5210SJason Evans threads raced to initialize malloc, some of them could end up permanently 445a4bd5210SJason Evans blocked. 446a4bd5210SJason Evans 447a4bd5210SJason Evans* 1.0.2 (May 11, 2010) 448a4bd5210SJason Evans 449a4bd5210SJason Evans Bug fixes: 450a4bd5210SJason Evans - Fix junk filling of large objects, which could cause memory corruption. 451a4bd5210SJason Evans - Add MAP_NORESERVE support for chunk mapping, because otherwise virtual 452a4bd5210SJason Evans memory limits could cause swap file configuration to fail. Contributed by 453a4bd5210SJason Evans Jordan DeLong. 454a4bd5210SJason Evans 455a4bd5210SJason Evans* 1.0.1 (April 14, 2010) 456a4bd5210SJason Evans 457a4bd5210SJason Evans Bug fixes: 458a4bd5210SJason Evans - Fix compilation when --enable-fill is specified. 459a4bd5210SJason Evans - Fix threads-related profiling bugs that affected accuracy and caused memory 460a4bd5210SJason Evans to be leaked during thread exit. 461a4bd5210SJason Evans - Fix dirty page purging race conditions that could cause crashes. 462a4bd5210SJason Evans - Fix crash in tcache flushing code during thread destruction. 463a4bd5210SJason Evans 464a4bd5210SJason Evans* 1.0.0 (April 11, 2010) 465a4bd5210SJason Evans 466a4bd5210SJason Evans This release focuses on speed and run-time introspection. Numerous 467a4bd5210SJason Evans algorithmic improvements make this release substantially faster than its 468a4bd5210SJason Evans predecessors. 469a4bd5210SJason Evans 470a4bd5210SJason Evans New features: 471a4bd5210SJason Evans - Implement autoconf-based configuration system. 472a4bd5210SJason Evans - Add mallctl*(), for the purposes of introspection and run-time 473a4bd5210SJason Evans configuration. 474a4bd5210SJason Evans - Make it possible for the application to manually flush a thread's cache, via 475a4bd5210SJason Evans the "tcache.flush" mallctl. 476a4bd5210SJason Evans - Base maximum dirty page count on proportion of active memory. 477a4bd5210SJason Evans - Compute various addtional run-time statistics, including per size class 478a4bd5210SJason Evans statistics for large objects. 479a4bd5210SJason Evans - Expose malloc_stats_print(), which can be called repeatedly by the 480a4bd5210SJason Evans application. 481a4bd5210SJason Evans - Simplify the malloc_message() signature to only take one string argument, 482a4bd5210SJason Evans and incorporate an opaque data pointer argument for use by the application 483a4bd5210SJason Evans in combination with malloc_stats_print(). 484a4bd5210SJason Evans - Add support for allocation backed by one or more swap files, and allow the 485a4bd5210SJason Evans application to disable over-commit if swap files are in use. 486a4bd5210SJason Evans - Implement allocation profiling and leak checking. 487a4bd5210SJason Evans 488a4bd5210SJason Evans Removed features: 489a4bd5210SJason Evans - Remove the dynamic arena rebalancing code, since thread-specific caching 490a4bd5210SJason Evans reduces its utility. 491a4bd5210SJason Evans 492a4bd5210SJason Evans Bug fixes: 493a4bd5210SJason Evans - Modify chunk allocation to work when address space layout randomization 494a4bd5210SJason Evans (ASLR) is in use. 495a4bd5210SJason Evans - Fix thread cleanup bugs related to TLS destruction. 496a4bd5210SJason Evans - Handle 0-size allocation requests in posix_memalign(). 497a4bd5210SJason Evans - Fix a chunk leak. The leaked chunks were never touched, so this impacted 498a4bd5210SJason Evans virtual memory usage, but not physical memory usage. 499a4bd5210SJason Evans 500a4bd5210SJason Evans* linux_2008082[78]a (August 27/28, 2008) 501a4bd5210SJason Evans 502a4bd5210SJason Evans These snapshot releases are the simple result of incorporating Linux-specific 503a4bd5210SJason Evans support into the FreeBSD malloc sources. 504a4bd5210SJason Evans 505a4bd5210SJason Evans-------------------------------------------------------------------------------- 506a4bd5210SJason Evansvim:filetype=text:textwidth=80 507