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 6706d9bd1SJason Evans https://github.com/jemalloc/jemalloc 7706d9bd1SJason Evans 8*2fff27f8SJason Evans* 3.6.0 (March 31, 2014) 9*2fff27f8SJason Evans 10*2fff27f8SJason Evans This version contains a critical bug fix for a regression present in 3.5.0 and 11*2fff27f8SJason Evans 3.5.1. 12*2fff27f8SJason Evans 13*2fff27f8SJason Evans Bug fixes: 14*2fff27f8SJason Evans - Fix a regression in arena_chunk_alloc() that caused crashes during 15*2fff27f8SJason Evans small/large allocation if chunk allocation failed. In the absence of this 16*2fff27f8SJason Evans bug, chunk allocation failure would result in allocation failure, e.g. NULL 17*2fff27f8SJason Evans return from malloc(). This regression was introduced in 3.5.0. 18*2fff27f8SJason Evans - Fix backtracing for gcc intrinsics-based backtracing by specifying 19*2fff27f8SJason Evans -fno-omit-frame-pointer to gcc. Note that the application (and all the 20*2fff27f8SJason Evans libraries it links to) must also be compiled with this option for 21*2fff27f8SJason Evans backtracing to be reliable. 22*2fff27f8SJason Evans - Use dss allocation precedence for huge allocations as well as small/large 23*2fff27f8SJason Evans allocations. 24*2fff27f8SJason Evans - Fix test assertion failure message formatting. This bug did not manifect on 25*2fff27f8SJason Evans x86_64 systems because of implementation subtleties in va_list. 26*2fff27f8SJason Evans - Fix inconsequential test failures for hash and SFMT code. 27*2fff27f8SJason Evans 28*2fff27f8SJason Evans New features: 29*2fff27f8SJason Evans - Support heap profiling on FreeBSD. This feature depends on the proc 30*2fff27f8SJason Evans filesystem being mounted during heap profile dumping. 31*2fff27f8SJason Evans 32706d9bd1SJason Evans* 3.5.1 (February 25, 2014) 33706d9bd1SJason Evans 34706d9bd1SJason Evans This version primarily addresses minor bugs in test code. 35706d9bd1SJason Evans 36706d9bd1SJason Evans Bug fixes: 37706d9bd1SJason Evans - Configure Solaris/Illumos to use MADV_FREE. 38706d9bd1SJason Evans - Fix junk filling for mremap(2)-based huge reallocation. This is only 39706d9bd1SJason Evans relevant if configuring with the --enable-mremap option specified. 40706d9bd1SJason Evans - Avoid compilation failure if 'restrict' C99 keyword is not supported by the 41706d9bd1SJason Evans compiler. 42706d9bd1SJason Evans - Add a configure test for SSE2 rather than assuming it is usable on i686 43706d9bd1SJason Evans systems. This fixes test compilation errors, especially on 32-bit Linux 44706d9bd1SJason Evans systems. 45706d9bd1SJason Evans - Fix mallctl argument size mismatches (size_t vs. uint64_t) in the stats unit 46706d9bd1SJason Evans test. 47706d9bd1SJason Evans - Fix/remove flawed alignment-related overflow tests. 48706d9bd1SJason Evans - Prevent compiler optimizations that could change backtraces in the 49706d9bd1SJason Evans prof_accum unit test. 50a4bd5210SJason Evans 51f921d10fSJason Evans* 3.5.0 (January 22, 2014) 52f921d10fSJason Evans 53f921d10fSJason Evans This version focuses on refactoring and automated testing, though it also 54f921d10fSJason Evans includes some non-trivial heap profiling optimizations not mentioned below. 55f921d10fSJason Evans 56f921d10fSJason Evans New features: 57f921d10fSJason Evans - Add the *allocx() API, which is a successor to the experimental *allocm() 58f921d10fSJason Evans API. The *allocx() functions are slightly simpler to use because they have 59f921d10fSJason Evans fewer parameters, they directly return the results of primary interest, and 60f921d10fSJason Evans mallocx()/rallocx() avoid the strict aliasing pitfall that 61706d9bd1SJason Evans allocm()/rallocm() share with posix_memalign(). Note that *allocm() is 62f921d10fSJason Evans slated for removal in the next non-bugfix release. 63f921d10fSJason Evans - Add support for LinuxThreads. 64f921d10fSJason Evans 65f921d10fSJason Evans Bug fixes: 66f921d10fSJason Evans - Unless heap profiling is enabled, disable floating point code and don't link 67f921d10fSJason Evans with libm. This, in combination with e.g. EXTRA_CFLAGS=-mno-sse on x64 68f921d10fSJason Evans systems, makes it possible to completely disable floating point register 69f921d10fSJason Evans use. Some versions of glibc neglect to save/restore caller-saved floating 70f921d10fSJason Evans point registers during dynamic lazy symbol loading, and the symbol loading 71f921d10fSJason Evans code uses whatever malloc the application happens to have linked/loaded 72f921d10fSJason Evans with, the result being potential floating point register corruption. 73f921d10fSJason Evans - Report ENOMEM rather than EINVAL if an OOM occurs during heap profiling 74f921d10fSJason Evans backtrace creation in imemalign(). This bug impacted posix_memalign() and 75f921d10fSJason Evans aligned_alloc(). 76f921d10fSJason Evans - Fix a file descriptor leak in a prof_dump_maps() error path. 77f921d10fSJason Evans - Fix prof_dump() to close the dump file descriptor for all relevant error 78f921d10fSJason Evans paths. 79f921d10fSJason Evans - Fix rallocm() to use the arena specified by the ALLOCM_ARENA(s) flag for 80f921d10fSJason Evans allocation, not just deallocation. 81f921d10fSJason Evans - Fix a data race for large allocation stats counters. 82f921d10fSJason Evans - Fix a potential infinite loop during thread exit. This bug occurred on 83f921d10fSJason Evans Solaris, and could affect other platforms with similar pthreads TSD 84f921d10fSJason Evans implementations. 85f921d10fSJason Evans - Don't junk-fill reallocations unless usable size changes. This fixes a 86f921d10fSJason Evans violation of the *allocx()/*allocm() semantics. 87f921d10fSJason Evans - Fix growing large reallocation to junk fill new space. 88f921d10fSJason Evans - Fix huge deallocation to junk fill when munmap is disabled. 89f921d10fSJason Evans - Change the default private namespace prefix from empty to je_, and change 90f921d10fSJason Evans --with-private-namespace-prefix so that it prepends an additional prefix 91f921d10fSJason Evans rather than replacing je_. This reduces the likelihood of applications 92f921d10fSJason Evans which statically link jemalloc experiencing symbol name collisions. 93f921d10fSJason Evans - Add missing private namespace mangling (relevant when 94f921d10fSJason Evans --with-private-namespace is specified). 95f921d10fSJason Evans - Add and use JEMALLOC_INLINE_C so that static inline functions are marked as 96f921d10fSJason Evans static even for debug builds. 97f921d10fSJason Evans - Add a missing mutex unlock in a malloc_init_hard() error path. In practice 98f921d10fSJason Evans this error path is never executed. 99f921d10fSJason Evans - Fix numerous bugs in malloc_strotumax() error handling/reporting. These 100f921d10fSJason Evans bugs had no impact except for malformed inputs. 101f921d10fSJason Evans - Fix numerous bugs in malloc_snprintf(). These bugs were not exercised by 102f921d10fSJason Evans existing calls, so they had no impact. 103f921d10fSJason Evans 1042b06b201SJason Evans* 3.4.1 (October 20, 2013) 1052b06b201SJason Evans 1062b06b201SJason Evans Bug fixes: 1072b06b201SJason Evans - Fix a race in the "arenas.extend" mallctl that could cause memory corruption 1082b06b201SJason Evans of internal data structures and subsequent crashes. 1092b06b201SJason Evans - Fix Valgrind integration flaws that caused Valgrind warnings about reads of 1102b06b201SJason Evans uninitialized memory in: 1112b06b201SJason Evans + arena chunk headers 1122b06b201SJason Evans + internal zero-initialized data structures (relevant to tcache and prof 1132b06b201SJason Evans code) 1142b06b201SJason Evans - Preserve errno during the first allocation. A readlink(2) call during 1152b06b201SJason Evans initialization fails unless /etc/malloc.conf exists, so errno was typically 1162b06b201SJason Evans set during the first allocation prior to this fix. 1172b06b201SJason Evans - Fix compilation warnings reported by gcc 4.8.1. 1182b06b201SJason Evans 119f8ca2db1SJason Evans* 3.4.0 (June 2, 2013) 120f8ca2db1SJason Evans 121f8ca2db1SJason Evans This version is essentially a small bugfix release, but the addition of 122f8ca2db1SJason Evans aarch64 support requires that the minor version be incremented. 123f8ca2db1SJason Evans 124f8ca2db1SJason Evans Bug fixes: 125f8ca2db1SJason Evans - Fix race-triggered deadlocks in chunk_record(). These deadlocks were 126f8ca2db1SJason Evans typically triggered by multiple threads concurrently deallocating huge 127f8ca2db1SJason Evans objects. 128f8ca2db1SJason Evans 129f8ca2db1SJason Evans New features: 130f8ca2db1SJason Evans - Add support for the aarch64 architecture. 131f8ca2db1SJason Evans 132f8ca2db1SJason Evans* 3.3.1 (March 6, 2013) 133f8ca2db1SJason Evans 134f8ca2db1SJason Evans This version fixes bugs that are typically encountered only when utilizing 135f8ca2db1SJason Evans custom run-time options. 136f8ca2db1SJason Evans 137f8ca2db1SJason Evans Bug fixes: 138f8ca2db1SJason Evans - Fix a locking order bug that could cause deadlock during fork if heap 139f8ca2db1SJason Evans profiling were enabled. 140f8ca2db1SJason Evans - Fix a chunk recycling bug that could cause the allocator to lose track of 141f8ca2db1SJason Evans whether a chunk was zeroed. On FreeBSD, NetBSD, and OS X, it could cause 142f8ca2db1SJason Evans corruption if allocating via sbrk(2) (unlikely unless running with the 143f8ca2db1SJason Evans "dss:primary" option specified). This was completely harmless on Linux 144f8ca2db1SJason Evans unless using mlockall(2) (and unlikely even then, unless the 145f8ca2db1SJason Evans --disable-munmap configure option or the "dss:primary" option was 146f8ca2db1SJason Evans specified). This regression was introduced in 3.1.0 by the 147f8ca2db1SJason Evans mlockall(2)/madvise(2) interaction fix. 148f8ca2db1SJason Evans - Fix TLS-related memory corruption that could occur during thread exit if the 149f8ca2db1SJason Evans thread never allocated memory. Only the quarantine and prof facilities were 150f8ca2db1SJason Evans susceptible. 151f8ca2db1SJason Evans - Fix two quarantine bugs: 152f8ca2db1SJason Evans + Internal reallocation of the quarantined object array leaked the old 153f8ca2db1SJason Evans array. 154f8ca2db1SJason Evans + Reallocation failure for internal reallocation of the quarantined object 155f8ca2db1SJason Evans array (very unlikely) resulted in memory corruption. 156f8ca2db1SJason Evans - Fix Valgrind integration to annotate all internally allocated memory in a 157f8ca2db1SJason Evans way that keeps Valgrind happy about internal data structure access. 158f8ca2db1SJason Evans - Fix building for s390 systems. 159f8ca2db1SJason Evans 16088ad2f8dSJason Evans* 3.3.0 (January 23, 2013) 16188ad2f8dSJason Evans 16288ad2f8dSJason Evans This version includes a few minor performance improvements in addition to the 16388ad2f8dSJason Evans listed new features and bug fixes. 16488ad2f8dSJason Evans 16588ad2f8dSJason Evans New features: 16688ad2f8dSJason Evans - Add clipping support to lg_chunk option processing. 16788ad2f8dSJason Evans - Add the --enable-ivsalloc option. 16888ad2f8dSJason Evans - Add the --without-export option. 16988ad2f8dSJason Evans - Add the --disable-zone-allocator option. 17088ad2f8dSJason Evans 17188ad2f8dSJason Evans Bug fixes: 17288ad2f8dSJason Evans - Fix "arenas.extend" mallctl to output the number of arenas. 1732b06b201SJason Evans - Fix chunk_recycle() to unconditionally inform Valgrind that returned memory 17488ad2f8dSJason Evans is undefined. 17588ad2f8dSJason Evans - Fix build break on FreeBSD related to alloca.h. 17688ad2f8dSJason Evans 17782872ac0SJason Evans* 3.2.0 (November 9, 2012) 17882872ac0SJason Evans 17982872ac0SJason Evans In addition to a couple of bug fixes, this version modifies page run 18082872ac0SJason Evans allocation and dirty page purging algorithms in order to better control 18182872ac0SJason Evans page-level virtual memory fragmentation. 18282872ac0SJason Evans 18382872ac0SJason Evans Incompatible changes: 18482872ac0SJason Evans - Change the "opt.lg_dirty_mult" default from 5 to 3 (32:1 to 8:1). 18582872ac0SJason Evans 18682872ac0SJason Evans Bug fixes: 18782872ac0SJason Evans - Fix dss/mmap allocation precedence code to use recyclable mmap memory only 18882872ac0SJason Evans after primary dss allocation fails. 18982872ac0SJason Evans - Fix deadlock in the "arenas.purge" mallctl. This regression was introduced 19082872ac0SJason Evans in 3.1.0 by the addition of the "arena.<i>.purge" mallctl. 19182872ac0SJason Evans 19282872ac0SJason Evans* 3.1.0 (October 16, 2012) 19382872ac0SJason Evans 19482872ac0SJason Evans New features: 19582872ac0SJason Evans - Auto-detect whether running inside Valgrind, thus removing the need to 19682872ac0SJason Evans manually specify MALLOC_CONF=valgrind:true. 19782872ac0SJason Evans - Add the "arenas.extend" mallctl, which allows applications to create 19882872ac0SJason Evans manually managed arenas. 19982872ac0SJason Evans - Add the ALLOCM_ARENA() flag for {,r,d}allocm(). 20082872ac0SJason Evans - Add the "opt.dss", "arena.<i>.dss", and "stats.arenas.<i>.dss" mallctls, 20182872ac0SJason Evans which provide control over dss/mmap precedence. 20282872ac0SJason Evans - Add the "arena.<i>.purge" mallctl, which obsoletes "arenas.purge". 20382872ac0SJason Evans - Define LG_QUANTUM for hppa. 20482872ac0SJason Evans 20582872ac0SJason Evans Incompatible changes: 20682872ac0SJason Evans - Disable tcache by default if running inside Valgrind, in order to avoid 20782872ac0SJason Evans making unallocated objects appear reachable to Valgrind. 20882872ac0SJason Evans - Drop const from malloc_usable_size() argument on Linux. 20982872ac0SJason Evans 21082872ac0SJason Evans Bug fixes: 21182872ac0SJason Evans - Fix heap profiling crash if sampled object is freed via realloc(p, 0). 21282872ac0SJason Evans - Remove const from __*_hook variable declarations, so that glibc can modify 21382872ac0SJason Evans them during process forking. 21482872ac0SJason Evans - Fix mlockall(2)/madvise(2) interaction. 21582872ac0SJason Evans - Fix fork(2)-related deadlocks. 21682872ac0SJason Evans - Fix error return value for "thread.tcache.enabled" mallctl. 21782872ac0SJason Evans 21835dad073SJason Evans* 3.0.0 (May 11, 2012) 219a4bd5210SJason Evans 220a4bd5210SJason Evans Although this version adds some major new features, the primary focus is on 221a4bd5210SJason Evans internal code cleanup that facilitates maintainability and portability, most 222a4bd5210SJason Evans of which is not reflected in the ChangeLog. This is the first release to 223a4bd5210SJason Evans incorporate substantial contributions from numerous other developers, and the 224a4bd5210SJason Evans result is a more broadly useful allocator (see the git revision history for 225a4bd5210SJason Evans contribution details). Note that the license has been unified, thanks to 226a4bd5210SJason Evans Facebook granting a license under the same terms as the other copyright 227a4bd5210SJason Evans holders (see COPYING). 228a4bd5210SJason Evans 229a4bd5210SJason Evans New features: 230a4bd5210SJason Evans - Implement Valgrind support, redzones, and quarantine. 231e722f8f8SJason Evans - Add support for additional platforms: 232a4bd5210SJason Evans + FreeBSD 233a4bd5210SJason Evans + Mac OS X Lion 234e722f8f8SJason Evans + MinGW 23535dad073SJason Evans + Windows (no support yet for replacing the system malloc) 236a4bd5210SJason Evans - Add support for additional architectures: 237a4bd5210SJason Evans + MIPS 238a4bd5210SJason Evans + SH4 239a4bd5210SJason Evans + Tilera 240a4bd5210SJason Evans - Add support for cross compiling. 241a4bd5210SJason Evans - Add nallocm(), which rounds a request size up to the nearest size class 242a4bd5210SJason Evans without actually allocating. 243a4bd5210SJason Evans - Implement aligned_alloc() (blame C11). 244a4bd5210SJason Evans - Add the "thread.tcache.enabled" mallctl. 2458ed34ab0SJason Evans - Add the "opt.prof_final" mallctl. 2468ed34ab0SJason Evans - Update pprof (from gperftools 2.0). 24735dad073SJason Evans - Add the --with-mangling option. 24835dad073SJason Evans - Add the --disable-experimental option. 24935dad073SJason Evans - Add the --disable-munmap option, and make it the default on Linux. 25035dad073SJason Evans - Add the --enable-mremap option, which disables use of mremap(2) by default. 251a4bd5210SJason Evans 252a4bd5210SJason Evans Incompatible changes: 253a4bd5210SJason Evans - Enable stats by default. 254a4bd5210SJason Evans - Enable fill by default. 255a4bd5210SJason Evans - Disable lazy locking by default. 256a4bd5210SJason Evans - Rename the "tcache.flush" mallctl to "thread.tcache.flush". 257a4bd5210SJason Evans - Rename the "arenas.pagesize" mallctl to "arenas.page". 2588ed34ab0SJason Evans - Change the "opt.lg_prof_sample" default from 0 to 19 (1 B to 512 KiB). 2598ed34ab0SJason Evans - Change the "opt.prof_accum" default from true to false. 260a4bd5210SJason Evans 261a4bd5210SJason Evans Removed features: 262a4bd5210SJason Evans - Remove the swap feature, including the "config.swap", "swap.avail", 263a4bd5210SJason Evans "swap.prezeroed", "swap.nfds", and "swap.fds" mallctls. 264a4bd5210SJason Evans - Remove highruns statistics, including the 265a4bd5210SJason Evans "stats.arenas.<i>.bins.<j>.highruns" and 266a4bd5210SJason Evans "stats.arenas.<i>.lruns.<j>.highruns" mallctls. 267a4bd5210SJason Evans - As part of small size class refactoring, remove the "opt.lg_[qc]space_max", 268a4bd5210SJason Evans "arenas.cacheline", "arenas.subpage", "arenas.[tqcs]space_{min,max}", and 269a4bd5210SJason Evans "arenas.[tqcs]bins" mallctls. 270a4bd5210SJason Evans - Remove the "arenas.chunksize" mallctl. 271a4bd5210SJason Evans - Remove the "opt.lg_prof_tcmax" option. 272a4bd5210SJason Evans - Remove the "opt.lg_prof_bt_max" option. 273a4bd5210SJason Evans - Remove the "opt.lg_tcache_gc_sweep" option. 274a4bd5210SJason Evans - Remove the --disable-tiny option, including the "config.tiny" mallctl. 275a4bd5210SJason Evans - Remove the --enable-dynamic-page-shift configure option. 276a4bd5210SJason Evans - Remove the --enable-sysv configure option. 277a4bd5210SJason Evans 278a4bd5210SJason Evans Bug fixes: 279a4bd5210SJason Evans - Fix a statistics-related bug in the "thread.arena" mallctl that could cause 280a4bd5210SJason Evans invalid statistics and crashes. 281e722f8f8SJason Evans - Work around TLS deallocation via free() on Linux. This bug could cause 282a4bd5210SJason Evans write-after-free memory corruption. 283e722f8f8SJason Evans - Fix a potential deadlock that could occur during interval- and 284e722f8f8SJason Evans growth-triggered heap profile dumps. 28535dad073SJason Evans - Fix large calloc() zeroing bugs due to dropping chunk map unzeroed flags. 2864bcb1430SJason Evans - Fix chunk_alloc_dss() to stop claiming memory is zeroed. This bug could 2874bcb1430SJason Evans cause memory corruption and crashes with --enable-dss specified. 288e722f8f8SJason Evans - Fix fork-related bugs that could cause deadlock in children between fork 289e722f8f8SJason Evans and exec. 290a4bd5210SJason Evans - Fix malloc_stats_print() to honor 'b' and 'l' in the opts parameter. 291a4bd5210SJason Evans - Fix realloc(p, 0) to act like free(p). 292a4bd5210SJason Evans - Do not enforce minimum alignment in memalign(). 293a4bd5210SJason Evans - Check for NULL pointer in malloc_usable_size(). 294e722f8f8SJason Evans - Fix an off-by-one heap profile statistics bug that could be observed in 295e722f8f8SJason Evans interval- and growth-triggered heap profiles. 296e722f8f8SJason Evans - Fix the "epoch" mallctl to update cached stats even if the passed in epoch 297e722f8f8SJason Evans is 0. 298a4bd5210SJason Evans - Fix bin->runcur management to fix a layout policy bug. This bug did not 299a4bd5210SJason Evans affect correctness. 300a4bd5210SJason Evans - Fix a bug in choose_arena_hard() that potentially caused more arenas to be 301a4bd5210SJason Evans initialized than necessary. 302a4bd5210SJason Evans - Add missing "opt.lg_tcache_max" mallctl implementation. 303a4bd5210SJason Evans - Use glibc allocator hooks to make mixed allocator usage less likely. 304a4bd5210SJason Evans - Fix build issues for --disable-tcache. 3058ed34ab0SJason Evans - Don't mangle pthread_create() when --with-private-namespace is specified. 306a4bd5210SJason Evans 307a4bd5210SJason Evans* 2.2.5 (November 14, 2011) 308a4bd5210SJason Evans 309a4bd5210SJason Evans Bug fixes: 310a4bd5210SJason Evans - Fix huge_ralloc() race when using mremap(2). This is a serious bug that 311a4bd5210SJason Evans could cause memory corruption and/or crashes. 312a4bd5210SJason Evans - Fix huge_ralloc() to maintain chunk statistics. 313a4bd5210SJason Evans - Fix malloc_stats_print(..., "a") output. 314a4bd5210SJason Evans 315a4bd5210SJason Evans* 2.2.4 (November 5, 2011) 316a4bd5210SJason Evans 317a4bd5210SJason Evans Bug fixes: 318a4bd5210SJason Evans - Initialize arenas_tsd before using it. This bug existed for 2.2.[0-3], as 319a4bd5210SJason Evans well as for --disable-tls builds in earlier releases. 320a4bd5210SJason Evans - Do not assume a 4 KiB page size in test/rallocm.c. 321a4bd5210SJason Evans 322a4bd5210SJason Evans* 2.2.3 (August 31, 2011) 323a4bd5210SJason Evans 324a4bd5210SJason Evans This version fixes numerous bugs related to heap profiling. 325a4bd5210SJason Evans 326a4bd5210SJason Evans Bug fixes: 327a4bd5210SJason Evans - Fix a prof-related race condition. This bug could cause memory corruption, 328a4bd5210SJason Evans but only occurred in non-default configurations (prof_accum:false). 329a4bd5210SJason Evans - Fix off-by-one backtracing issues (make sure that prof_alloc_prep() is 330a4bd5210SJason Evans excluded from backtraces). 331a4bd5210SJason Evans - Fix a prof-related bug in realloc() (only triggered by OOM errors). 332a4bd5210SJason Evans - Fix prof-related bugs in allocm() and rallocm(). 333a4bd5210SJason Evans - Fix prof_tdata_cleanup() for --disable-tls builds. 334a4bd5210SJason Evans - Fix a relative include path, to fix objdir builds. 335a4bd5210SJason Evans 336a4bd5210SJason Evans* 2.2.2 (July 30, 2011) 337a4bd5210SJason Evans 338a4bd5210SJason Evans Bug fixes: 339a4bd5210SJason Evans - Fix a build error for --disable-tcache. 340a4bd5210SJason Evans - Fix assertions in arena_purge() (for real this time). 341a4bd5210SJason Evans - Add the --with-private-namespace option. This is a workaround for symbol 342a4bd5210SJason Evans conflicts that can inadvertently arise when using static libraries. 343a4bd5210SJason Evans 344a4bd5210SJason Evans* 2.2.1 (March 30, 2011) 345a4bd5210SJason Evans 346a4bd5210SJason Evans Bug fixes: 347a4bd5210SJason Evans - Implement atomic operations for x86/x64. This fixes compilation failures 348a4bd5210SJason Evans for versions of gcc that are still in wide use. 349a4bd5210SJason Evans - Fix an assertion in arena_purge(). 350a4bd5210SJason Evans 351a4bd5210SJason Evans* 2.2.0 (March 22, 2011) 352a4bd5210SJason Evans 353a4bd5210SJason Evans This version incorporates several improvements to algorithms and data 354a4bd5210SJason Evans structures that tend to reduce fragmentation and increase speed. 355a4bd5210SJason Evans 356a4bd5210SJason Evans New features: 357a4bd5210SJason Evans - Add the "stats.cactive" mallctl. 358a4bd5210SJason Evans - Update pprof (from google-perftools 1.7). 359a4bd5210SJason Evans - Improve backtracing-related configuration logic, and add the 360a4bd5210SJason Evans --disable-prof-libgcc option. 361a4bd5210SJason Evans 362a4bd5210SJason Evans Bug fixes: 363a4bd5210SJason Evans - Change default symbol visibility from "internal", to "hidden", which 364a4bd5210SJason Evans decreases the overhead of library-internal function calls. 365a4bd5210SJason Evans - Fix symbol visibility so that it is also set on OS X. 366a4bd5210SJason Evans - Fix a build dependency regression caused by the introduction of the .pic.o 367a4bd5210SJason Evans suffix for PIC object files. 368a4bd5210SJason Evans - Add missing checks for mutex initialization failures. 369a4bd5210SJason Evans - Don't use libgcc-based backtracing except on x64, where it is known to work. 370a4bd5210SJason Evans - Fix deadlocks on OS X that were due to memory allocation in 371a4bd5210SJason Evans pthread_mutex_lock(). 372a4bd5210SJason Evans - Heap profiling-specific fixes: 373a4bd5210SJason Evans + Fix memory corruption due to integer overflow in small region index 374a4bd5210SJason Evans computation, when using a small enough sample interval that profiling 375a4bd5210SJason Evans context pointers are stored in small run headers. 376a4bd5210SJason Evans + Fix a bootstrap ordering bug that only occurred with TLS disabled. 377a4bd5210SJason Evans + Fix a rallocm() rsize bug. 378a4bd5210SJason Evans + Fix error detection bugs for aligned memory allocation. 379a4bd5210SJason Evans 380a4bd5210SJason Evans* 2.1.3 (March 14, 2011) 381a4bd5210SJason Evans 382a4bd5210SJason Evans Bug fixes: 383a4bd5210SJason Evans - Fix a cpp logic regression (due to the "thread.{de,}allocatedp" mallctl fix 384a4bd5210SJason Evans for OS X in 2.1.2). 385a4bd5210SJason Evans - Fix a "thread.arena" mallctl bug. 386a4bd5210SJason Evans - Fix a thread cache stats merging bug. 387a4bd5210SJason Evans 388a4bd5210SJason Evans* 2.1.2 (March 2, 2011) 389a4bd5210SJason Evans 390a4bd5210SJason Evans Bug fixes: 391a4bd5210SJason Evans - Fix "thread.{de,}allocatedp" mallctl for OS X. 392a4bd5210SJason Evans - Add missing jemalloc.a to build system. 393a4bd5210SJason Evans 394a4bd5210SJason Evans* 2.1.1 (January 31, 2011) 395a4bd5210SJason Evans 396a4bd5210SJason Evans Bug fixes: 397a4bd5210SJason Evans - Fix aligned huge reallocation (affected allocm()). 398a4bd5210SJason Evans - Fix the ALLOCM_LG_ALIGN macro definition. 399a4bd5210SJason Evans - Fix a heap dumping deadlock. 400a4bd5210SJason Evans - Fix a "thread.arena" mallctl bug. 401a4bd5210SJason Evans 402a4bd5210SJason Evans* 2.1.0 (December 3, 2010) 403a4bd5210SJason Evans 404a4bd5210SJason Evans This version incorporates some optimizations that can't quite be considered 405a4bd5210SJason Evans bug fixes. 406a4bd5210SJason Evans 407a4bd5210SJason Evans New features: 408a4bd5210SJason Evans - Use Linux's mremap(2) for huge object reallocation when possible. 409a4bd5210SJason Evans - Avoid locking in mallctl*() when possible. 410a4bd5210SJason Evans - Add the "thread.[de]allocatedp" mallctl's. 411a4bd5210SJason Evans - Convert the manual page source from roff to DocBook, and generate both roff 412a4bd5210SJason Evans and HTML manuals. 413a4bd5210SJason Evans 414a4bd5210SJason Evans Bug fixes: 415a4bd5210SJason Evans - Fix a crash due to incorrect bootstrap ordering. This only impacted 416a4bd5210SJason Evans --enable-debug --enable-dss configurations. 417a4bd5210SJason Evans - Fix a minor statistics bug for mallctl("swap.avail", ...). 418a4bd5210SJason Evans 419a4bd5210SJason Evans* 2.0.1 (October 29, 2010) 420a4bd5210SJason Evans 421a4bd5210SJason Evans Bug fixes: 422a4bd5210SJason Evans - Fix a race condition in heap profiling that could cause undefined behavior 423a4bd5210SJason Evans if "opt.prof_accum" were disabled. 424a4bd5210SJason Evans - Add missing mutex unlocks for some OOM error paths in the heap profiling 425a4bd5210SJason Evans code. 426a4bd5210SJason Evans - Fix a compilation error for non-C99 builds. 427a4bd5210SJason Evans 428a4bd5210SJason Evans* 2.0.0 (October 24, 2010) 429a4bd5210SJason Evans 430a4bd5210SJason Evans This version focuses on the experimental *allocm() API, and on improved 431a4bd5210SJason Evans run-time configuration/introspection. Nonetheless, numerous performance 432a4bd5210SJason Evans improvements are also included. 433a4bd5210SJason Evans 434a4bd5210SJason Evans New features: 435a4bd5210SJason Evans - Implement the experimental {,r,s,d}allocm() API, which provides a superset 436a4bd5210SJason Evans of the functionality available via malloc(), calloc(), posix_memalign(), 437a4bd5210SJason Evans realloc(), malloc_usable_size(), and free(). These functions can be used to 438a4bd5210SJason Evans allocate/reallocate aligned zeroed memory, ask for optional extra memory 439a4bd5210SJason Evans during reallocation, prevent object movement during reallocation, etc. 440a4bd5210SJason Evans - Replace JEMALLOC_OPTIONS/JEMALLOC_PROF_PREFIX with MALLOC_CONF, which is 441a4bd5210SJason Evans more human-readable, and more flexible. For example: 442a4bd5210SJason Evans JEMALLOC_OPTIONS=AJP 443a4bd5210SJason Evans is now: 444a4bd5210SJason Evans MALLOC_CONF=abort:true,fill:true,stats_print:true 445a4bd5210SJason Evans - Port to Apple OS X. Sponsored by Mozilla. 446a4bd5210SJason Evans - Make it possible for the application to control thread-->arena mappings via 447a4bd5210SJason Evans the "thread.arena" mallctl. 448a4bd5210SJason Evans - Add compile-time support for all TLS-related functionality via pthreads TSD. 449a4bd5210SJason Evans This is mainly of interest for OS X, which does not support TLS, but has a 450a4bd5210SJason Evans TSD implementation with similar performance. 451a4bd5210SJason Evans - Override memalign() and valloc() if they are provided by the system. 452a4bd5210SJason Evans - Add the "arenas.purge" mallctl, which can be used to synchronously purge all 453a4bd5210SJason Evans dirty unused pages. 454a4bd5210SJason Evans - Make cumulative heap profiling data optional, so that it is possible to 455a4bd5210SJason Evans limit the amount of memory consumed by heap profiling data structures. 456a4bd5210SJason Evans - Add per thread allocation counters that can be accessed via the 457a4bd5210SJason Evans "thread.allocated" and "thread.deallocated" mallctls. 458a4bd5210SJason Evans 459a4bd5210SJason Evans Incompatible changes: 460a4bd5210SJason Evans - Remove JEMALLOC_OPTIONS and malloc_options (see MALLOC_CONF above). 461a4bd5210SJason Evans - Increase default backtrace depth from 4 to 128 for heap profiling. 462a4bd5210SJason Evans - Disable interval-based profile dumps by default. 463a4bd5210SJason Evans 464a4bd5210SJason Evans Bug fixes: 465a4bd5210SJason Evans - Remove bad assertions in fork handler functions. These assertions could 466a4bd5210SJason Evans cause aborts for some combinations of configure settings. 467a4bd5210SJason Evans - Fix strerror_r() usage to deal with non-standard semantics in GNU libc. 468a4bd5210SJason Evans - Fix leak context reporting. This bug tended to cause the number of contexts 469a4bd5210SJason Evans to be underreported (though the reported number of objects and bytes were 470a4bd5210SJason Evans correct). 471a4bd5210SJason Evans - Fix a realloc() bug for large in-place growing reallocation. This bug could 472a4bd5210SJason Evans cause memory corruption, but it was hard to trigger. 473a4bd5210SJason Evans - Fix an allocation bug for small allocations that could be triggered if 474a4bd5210SJason Evans multiple threads raced to create a new run of backing pages. 475a4bd5210SJason Evans - Enhance the heap profiler to trigger samples based on usable size, rather 476a4bd5210SJason Evans than request size. 477a4bd5210SJason Evans - Fix a heap profiling bug due to sometimes losing track of requested object 478a4bd5210SJason Evans size for sampled objects. 479a4bd5210SJason Evans 480a4bd5210SJason Evans* 1.0.3 (August 12, 2010) 481a4bd5210SJason Evans 482a4bd5210SJason Evans Bug fixes: 483a4bd5210SJason Evans - Fix the libunwind-based implementation of stack backtracing (used for heap 484a4bd5210SJason Evans profiling). This bug could cause zero-length backtraces to be reported. 485a4bd5210SJason Evans - Add a missing mutex unlock in library initialization code. If multiple 486a4bd5210SJason Evans threads raced to initialize malloc, some of them could end up permanently 487a4bd5210SJason Evans blocked. 488a4bd5210SJason Evans 489a4bd5210SJason Evans* 1.0.2 (May 11, 2010) 490a4bd5210SJason Evans 491a4bd5210SJason Evans Bug fixes: 492a4bd5210SJason Evans - Fix junk filling of large objects, which could cause memory corruption. 493a4bd5210SJason Evans - Add MAP_NORESERVE support for chunk mapping, because otherwise virtual 494a4bd5210SJason Evans memory limits could cause swap file configuration to fail. Contributed by 495a4bd5210SJason Evans Jordan DeLong. 496a4bd5210SJason Evans 497a4bd5210SJason Evans* 1.0.1 (April 14, 2010) 498a4bd5210SJason Evans 499a4bd5210SJason Evans Bug fixes: 500a4bd5210SJason Evans - Fix compilation when --enable-fill is specified. 501a4bd5210SJason Evans - Fix threads-related profiling bugs that affected accuracy and caused memory 502a4bd5210SJason Evans to be leaked during thread exit. 503a4bd5210SJason Evans - Fix dirty page purging race conditions that could cause crashes. 504a4bd5210SJason Evans - Fix crash in tcache flushing code during thread destruction. 505a4bd5210SJason Evans 506a4bd5210SJason Evans* 1.0.0 (April 11, 2010) 507a4bd5210SJason Evans 508a4bd5210SJason Evans This release focuses on speed and run-time introspection. Numerous 509a4bd5210SJason Evans algorithmic improvements make this release substantially faster than its 510a4bd5210SJason Evans predecessors. 511a4bd5210SJason Evans 512a4bd5210SJason Evans New features: 513a4bd5210SJason Evans - Implement autoconf-based configuration system. 514a4bd5210SJason Evans - Add mallctl*(), for the purposes of introspection and run-time 515a4bd5210SJason Evans configuration. 516a4bd5210SJason Evans - Make it possible for the application to manually flush a thread's cache, via 517a4bd5210SJason Evans the "tcache.flush" mallctl. 518a4bd5210SJason Evans - Base maximum dirty page count on proportion of active memory. 519a4bd5210SJason Evans - Compute various addtional run-time statistics, including per size class 520a4bd5210SJason Evans statistics for large objects. 521a4bd5210SJason Evans - Expose malloc_stats_print(), which can be called repeatedly by the 522a4bd5210SJason Evans application. 523a4bd5210SJason Evans - Simplify the malloc_message() signature to only take one string argument, 524a4bd5210SJason Evans and incorporate an opaque data pointer argument for use by the application 525a4bd5210SJason Evans in combination with malloc_stats_print(). 526a4bd5210SJason Evans - Add support for allocation backed by one or more swap files, and allow the 527a4bd5210SJason Evans application to disable over-commit if swap files are in use. 528a4bd5210SJason Evans - Implement allocation profiling and leak checking. 529a4bd5210SJason Evans 530a4bd5210SJason Evans Removed features: 531a4bd5210SJason Evans - Remove the dynamic arena rebalancing code, since thread-specific caching 532a4bd5210SJason Evans reduces its utility. 533a4bd5210SJason Evans 534a4bd5210SJason Evans Bug fixes: 535a4bd5210SJason Evans - Modify chunk allocation to work when address space layout randomization 536a4bd5210SJason Evans (ASLR) is in use. 537a4bd5210SJason Evans - Fix thread cleanup bugs related to TLS destruction. 538a4bd5210SJason Evans - Handle 0-size allocation requests in posix_memalign(). 539a4bd5210SJason Evans - Fix a chunk leak. The leaked chunks were never touched, so this impacted 540a4bd5210SJason Evans virtual memory usage, but not physical memory usage. 541a4bd5210SJason Evans 542a4bd5210SJason Evans* linux_2008082[78]a (August 27/28, 2008) 543a4bd5210SJason Evans 544a4bd5210SJason Evans These snapshot releases are the simple result of incorporating Linux-specific 545a4bd5210SJason Evans support into the FreeBSD malloc sources. 546a4bd5210SJason Evans 547a4bd5210SJason Evans-------------------------------------------------------------------------------- 548a4bd5210SJason Evansvim:filetype=text:textwidth=80 549