Skip to content
  1. Feb 28, 2016
    • Jason Evans's avatar
      Fix decay tests for --disable-tcache case. · 7d305543
      Jason Evans authored
      7d305543
    • Jason Evans's avatar
      Fix a potential tsd cleanup leak. · 39f58755
      Jason Evans authored
      Prior to 767d8506 (Refactor arenas array
      (fixes deadlock).), it was possible under some circumstances for
      arena_get() to trigger recreation of the arenas cache during tsd
      cleanup, and the arenas cache would then be leaked.  In principle a
      similar issue could still occur as a side effect of decay-based purging,
      which calls arena_tdata_get().  Fix arenas_tdata_cleanup() by setting
      tsd->arenas_tdata_bypass to true, so that arena_tdata_get() will
      gracefully fail (an expected behavior) rather than recreating
      tsd->arena_tdata.
      
      Reported by Christopher Ferris <cferris@google.com>.
      39f58755
    • Jason Evans's avatar
      Fix stats.arenas.<i>.[...] for --disable-stats case. · 3c07f803
      Jason Evans authored
      Add missing stats.arenas.<i>.{dss,lg_dirty_mult,decay_time}
      initialization.
      
      Fix stats.arenas.<i>.{pactive,pdirty} to read under the protection of
      the arena mutex.
      3c07f803
    • Jason Evans's avatar
      Fix decay tests for --disable-stats case. · fd485822
      Jason Evans authored
      fd485822
    • Jason Evans's avatar
      Add/alphabetize private symbols. · 69acd25a
      Jason Evans authored
      69acd25a
    • Jason Evans's avatar
      Fix stats.cactive accounting regression. · 40ee9aa9
      Jason Evans authored
      Fix stats.cactive accounting to always increase/decrease by multiples of
      the chunk size, even for huge size classes that are not multiples of the
      chunk size, e.g. {2.5, 3, 3.5, 5, 7} MiB with 2 MiB chunk size.  This
      regression was introduced by 155bfa7d
      (Normalize size classes.) and first released in 4.0.0.
      
      This resolves #336.
      40ee9aa9
  2. Feb 27, 2016
    • Jason Evans's avatar
      Update ChangeLog in preparation for 4.1.0. · 14be4a7c
      Jason Evans authored
      14be4a7c
    • Jason Evans's avatar
      Refactor arena_cactive_update() into arena_cactive_{add,sub}(). · 3763d3b5
      Jason Evans authored
      This removes an implicit conversion from size_t to ssize_t.  For cactive
      decreases, the size_t value was intentionally underflowed to generate
      "negative" values (actually positive values above the positive range of
      ssize_t), and the conversion to ssize_t was undefined according to C
      language semantics.
      
      This regression was perpetuated by
      1522937e (Fix the cactive statistic.)
      and first release in 4.0.0, which in retrospect only fixed one of two
      problems introduced by aa5113b1
      (Refactor overly large/complex functions) and first released in 3.5.0.
      3763d3b5
    • Jason Evans's avatar
      Remove invalid tests. · a62e94ca
      Jason Evans authored
      Remove invalid tests that were intended to be tests of (hugemax+1) OOM,
      for which tests already exist.
      a62e94ca
    • buchgr's avatar
      Move retaining out of default chunk hooks · d412624b
      buchgr authored
      This fixes chunk allocation to reuse retained memory even if an
      application-provided chunk allocation function is in use.
      
      This resolves #307.
      d412624b
  3. Feb 26, 2016
  4. Feb 25, 2016
    • Jason Evans's avatar
      Refactor arenas array (fixes deadlock). · 767d8506
      Jason Evans authored
      Refactor the arenas array, which contains pointers to all extant arenas,
      such that it starts out as a sparse array of maximum size, and use
      double-checked atomics-based reads as the basis for fast and simple
      arena_get().  Additionally, reduce arenas_lock's role such that it only
      protects against arena initalization races.  These changes remove the
      possibility for arena lookups to trigger locking, which resolves at
      least one known (fork-related) deadlock.
      
      This resolves #315.
      767d8506
    • Dave Watson's avatar
      Fix arena_size computation. · 38127291
      Dave Watson authored
      Fix arena_size arena_new() computation to incorporate
      runs_avail_nclasses elements for runs_avail, rather than
      (runs_avail_nclasses - 1) elements.  Since offsetof(arena_t, runs_avail)
      is used rather than sizeof(arena_t) for the first term of the
      computation, all of the runs_avail elements must be added into the
      second term.
      
      This bug was introduced (by Jason Evans) while merging pull request #330
      as 3417a304 (Separate arena_avail
      trees).
      38127291
    • Dave Watson's avatar
      Fix arena_run_first_best_fit · cd86c148
      Dave Watson authored
      Merge of 3417a304 looks like a small
      bug: first_best_fit doesn't scan through all the classes, since ind is
      offset from runs_avail_nclasses by run_avail_bias.
      cd86c148
    • Jason Evans's avatar
      Attempt mmap-based in-place huge reallocation. · c7a9a6c8
      Jason Evans authored
      Attempt mmap-based in-place huge reallocation by plumbing new_addr into
      chunk_alloc_mmap().  This can dramatically speed up incremental huge
      reallocation.
      
      This resolves #335.
      c7a9a6c8
    • Jason Evans's avatar
      Document the heap profile format. · 5ec703dd
      Jason Evans authored
      This resolves #258.
      5ec703dd
  5. Feb 24, 2016