Skip to content
  1. Aug 14, 2010
    • Jason Evans's avatar
      Add the thread.arena mallctl. · b267d0f8
      Jason Evans authored
      Make it possible for each thread to manage which arena it is associated
      with.
      
      Implement the 'tests' and 'check' build targets.
      b267d0f8
  2. Aug 05, 2010
  3. Jul 22, 2010
    • Jason Evans's avatar
      Add a missing mutex unlock in malloc_init_hard(). · 2541e1b0
      Jason Evans authored
      If multiple threads race to initialize malloc, the loser(s) busy-wait
      until initialization is complete.  Add a missing mutex lock so that the
      loser(s) properly release the initialization mutex.  Under some
      race conditions, this flaw could have caused one or more threads to
      become permanently blocked.
      
      Reported by Terrell Magee.
      2541e1b0
  4. Jun 05, 2010
  5. May 12, 2010
    • Jason Evans's avatar
      Avoid unnecessary isalloc() calls. · 7013d10a
      Jason Evans authored
      When heap profiling is enabled but deactivated, there is no need to call
      isalloc(ptr) in prof_{malloc,realloc}().  Avoid these calls, so that
      profiling overhead under such conditions is negligible.
      7013d10a
  6. May 11, 2010
    • Jason Evans's avatar
      Fix next_arena initialization. · ed3d152e
      Jason Evans authored
      If there is more than one arena, initialize next_arena so that the
      first and second threads to allocate memory use arenas 0 and 1, rather
      than both using arena 0.
      ed3d152e
    • Jordan DeLong's avatar
      Add MAP_NORESERVE support. · 2206e1ac
      Jordan DeLong authored
      Add MAP_NORESERVE to the chunk_mmap() case being used by
      chunk_swap_enable(), if the system supports it.
      2206e1ac
  7. Apr 28, 2010
    • Jason Evans's avatar
      Fix junk filling of cached large objects. · ecea0f61
      Jason Evans authored
      Use the size argument to tcache_dalloc_large() to control the number of
      bytes set to 0x5a when junk filling is enabled, rather than accessing a
      non-existent arena bin.  This bug was capable of corrupting an
      arbitrarily large memory region, depending on what followed the arena
      data structure in memory (typically zeroed memory, another arena_t, or a
      red-black tree node for a huge object).
      ecea0f61
  8. Apr 14, 2010
    • Jason Evans's avatar
      Fix tcache crash during thread cleanup. · 5055f451
      Jason Evans authored
      Properly maintain tcache_bin_t's avail pointer such that it is NULL if
      no objects are cached.  This only caused problems during thread cache
      destruction, since cache flushing otherwise never occurs on an empty
      bin.
      5055f451
    • Jason Evans's avatar
      Fix profiling regression caused by bugfix. · 38cda690
      Jason Evans authored
      Properly set the context associated with each allocated object, even
      when the object is not sampled.
      
      Remove debug print code that slipped in.
      38cda690
    • Jason Evans's avatar
      6d68ed64
    • Jason Evans's avatar
      Fix arena chunk purge/dealloc race conditions. · 8d4203c7
      Jason Evans authored
      Fix arena_chunk_dealloc() to put the new spare in a consistent state before
      dropping the arena mutex to deallocate the previous spare.
      
      Fix arena_run_dalloc() to insert a newly dirtied chunk into the
      chunks_dirty list before potentially deallocating the chunk, so that dirty
      page accounting is self-consistent.
      8d4203c7
    • Jason Evans's avatar
      Fix threads-related profiling bugs. · 5065156f
      Jason Evans authored
      Initialize bt2cnt_tsd so that cleanup at thread exit actually happens.
      
      Associate (prof_ctx_t *) with allocated objects, rather than
      (prof_thr_cnt_t *).  Each thread must always operate on its own
      (prof_thr_cnt_t *), and an object may outlive the thread that allocated it.
      5065156f
    • Jason Evans's avatar
      Update stale JEMALLOC_FILL code. · 1bb60212
      Jason Evans authored
      Fix a compilation error due to stale data structure access code in
      tcache_dalloc_large() for junk filling.
      1bb60212
  9. Apr 12, 2010
  10. Apr 09, 2010
  11. Apr 08, 2010
    • Jason Evans's avatar
      Don't build with -march=native. · 33958609
      Jason Evans authored
      Don't build with -march=native by default, because the generated code
      may perform especially poorly on ABI-compatible, but internally
      different, systems.
      33958609
    • Jason Evans's avatar
      Fix build system problems. · 0656ec0e
      Jason Evans authored
      Split library build rules up so that parallel building works.
      
      Fix autoconf-related dependencies.
      
      Remove obsolete JEMALLOC_VERSION definition.
      0656ec0e
    • Jason Evans's avatar
      Improve ExtractSymbols (pprof). · af366593
      Jason Evans authored
      Iterated downward through both libraries and PCs.  This allows PCs
      to resolve even when library address ranges overlap.
      af366593
  12. Apr 06, 2010
  13. Apr 03, 2010
  14. Apr 02, 2010
    • Jason Evans's avatar
      Import pprof from google-perftools, svn r91. · a91f2109
      Jason Evans authored
      Fix divide-by-zero error in pprof.  It is possible for sample contexts
      to currently have no associated objects, but the cumulative statistics
      are still useful, depending on how the user invokes pprof.  Since
      jemalloc intentionally does not filter such contexts, take care not to
      divide by 0 when re-scaling for v2 heap sampling.
      
      Install pprof as part of 'make install'.
      
      Update pprof documentation.
      a91f2109
    • Jason Evans's avatar
      Don't disable leak reporting due to sampling. · 18ad8234
      Jason Evans authored
      Leak reporting is useful even if sampling is enabled; some leaks may not
      be reported, but those reported are still genuine leaks.
      18ad8234
  15. Apr 01, 2010
    • Jason Evans's avatar
      Add sampling activation/deactivation control. · f18c9820
      Jason Evans authored
      Add the E/e options to control whether the application starts with
      sampling active/inactive (secondary control to F/f).  Add the
      prof.active mallctl so that the application can activate/deactivate
      sampling on the fly.
      f18c9820
    • Jason Evans's avatar
      Make interval-triggered profile dumping optional. · a02fc08e
      Jason Evans authored
      Make it possible to disable interval-triggered profile dumping, even if
      profiling is enabled.  This is useful if the user only wants a single
      dump at exit, or if the application manually triggers profile dumps.
      a02fc08e
    • Jason Evans's avatar
      Reduce statistical heap sampling memory overhead. · 0b270a99
      Jason Evans authored
      If the mean heap sampling interval is larger than one page, simulate
      sampled small objects with large objects.  This allows profiling context
      pointers to be omitted for small objects.  As a result, the memory
      overhead for sampling decreases as the sampling interval is increased.
      
      Fix a compilation error in the profiling code.
      0b270a99
  16. Mar 27, 2010
  17. Mar 22, 2010
    • Jason Evans's avatar
      Set/clear CHUNK_MAP_ZEROED in arena_chunk_purge(). · c03a63d6
      Jason Evans authored
      Properly set/clear CHUNK_MAP_ZEROED for all purged pages, according to
      whether the pages are (potentially) file-backed or anonymous.  This was
      merely a performance pessimization for the anonymous mapping case, but
      was a calloc()-related bug for the swap_enabled case.
      c03a63d6
  18. Mar 19, 2010
  19. Mar 18, 2010
    • Jason Evans's avatar
      Remove medium size classes. · dafde14e
      Jason Evans authored
      Remove medium size classes, because concurrent dirty page purging is
      no longer capable of purging inactive dirty pages inside active runs
      (due to recent arena/bin locking changes).
      
      Enhance tcache to support caching large objects, so that the same range
      of size classes is still cached, despite the removal of medium size
      class support.
      dafde14e
  20. Mar 16, 2010
    • Jason Evans's avatar
      Fix a run initialization race condition. · e69bee01
      Jason Evans authored
      Initialize small run header before dropping arena->lock,
      arena_chunk_purge() relies on valid small run headers during run
      iteration.
      
      Add some assertions.
      e69bee01
    • Jason Evans's avatar
      Add assertions. · f00bb7f1
      Jason Evans authored
      Check for interior pointers in arena_[ds]alloc().
      
      Check for corrupt pointers in tcache_alloc().
      f00bb7f1
  21. Mar 15, 2010