Hex Artifact Content
Not logged in

Artifact 0c4008c226f9d9cddac0ba15e29cb5599ff931a3:


0000: 46 6f 6c 6c 6f 77 69 6e 67 20 61 72 65 20 63 68  Following are ch
0010: 61 6e 67 65 20 68 69 67 68 6c 69 67 68 74 73 20  ange highlights 
0020: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
0030: 6f 66 66 69 63 69 61 6c 20 72 65 6c 65 61 73 65  official release
0040: 73 2e 20 20 49 6d 70 6f 72 74 61 6e 74 0a 62 75  s.  Important.bu
0050: 67 20 66 69 78 65 73 20 61 72 65 20 61 6c 6c 20  g fixes are all 
0060: 6d 65 6e 74 69 6f 6e 65 64 2c 20 62 75 74 20 73  mentioned, but s
0070: 6f 6d 65 20 69 6e 74 65 72 6e 61 6c 20 65 6e 68  ome internal enh
0080: 61 6e 63 65 6d 65 6e 74 73 20 61 72 65 20 6f 6d  ancements are om
0090: 69 74 74 65 64 20 68 65 72 65 20 66 6f 72 0a 62  itted here for.b
00a0: 72 65 76 69 74 79 2e 20 20 4d 75 63 68 20 6d 6f  revity.  Much mo
00b0: 72 65 20 64 65 74 61 69 6c 20 63 61 6e 20 62 65  re detail can be
00c0: 20 66 6f 75 6e 64 20 69 6e 20 74 68 65 20 67 69   found in the gi
00d0: 74 20 72 65 76 69 73 69 6f 6e 20 68 69 73 74 6f  t revision histo
00e0: 72 79 3a 0a 0a 20 20 20 20 68 74 74 70 73 3a 2f  ry:..    https:/
00f0: 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6a 65 6d 61  /github.com/jema
0100: 6c 6c 6f 63 2f 6a 65 6d 61 6c 6c 6f 63 0a 0a 2a  lloc/jemalloc..*
0110: 20 34 2e 35 2e 30 20 28 46 65 62 72 75 61 72 79   4.5.0 (February
0120: 20 32 38 2c 20 32 30 31 37 29 0a 0a 20 20 54 68   28, 2017)..  Th
0130: 69 73 20 69 73 20 74 68 65 20 66 69 72 73 74 20  is is the first 
0140: 72 65 6c 65 61 73 65 20 74 6f 20 62 65 6e 65 66  release to benef
0150: 69 74 20 66 72 6f 6d 20 6d 75 63 68 20 62 72 6f  it from much bro
0160: 61 64 65 72 20 63 6f 6e 74 69 6e 75 6f 75 73 20  ader continuous 
0170: 69 6e 74 65 67 72 61 74 69 6f 6e 0a 20 20 74 65  integration.  te
0180: 73 74 69 6e 67 2c 20 74 68 61 6e 6b 73 20 74 6f  sting, thanks to
0190: 20 40 64 61 76 69 64 74 67 6f 6c 64 62 6c 61 74   @davidtgoldblat
01a0: 74 2e 20 20 48 61 64 20 77 65 20 68 61 64 20 74  t.  Had we had t
01b0: 68 69 73 20 74 65 73 74 69 6e 67 20 69 6e 66 72  his testing infr
01c0: 61 73 74 72 75 63 74 75 72 65 0a 20 20 69 6e 20  astructure.  in 
01d0: 70 6c 61 63 65 20 66 6f 72 20 70 72 69 6f 72 20  place for prior 
01e0: 72 65 6c 65 61 73 65 73 2c 20 69 74 20 77 6f 75  releases, it wou
01f0: 6c 64 20 68 61 76 65 20 63 61 75 67 68 74 20 61  ld have caught a
0200: 6c 6c 20 6f 66 20 74 68 65 20 6d 6f 73 74 20 73  ll of the most s
0210: 65 72 69 6f 75 73 0a 20 20 72 65 67 72 65 73 73  erious.  regress
0220: 69 6f 6e 73 20 66 69 78 65 64 20 62 79 20 74 68  ions fixed by th
0230: 69 73 20 72 65 6c 65 61 73 65 2e 0a 0a 20 20 4e  is release...  N
0240: 65 77 20 66 65 61 74 75 72 65 73 3a 0a 20 20 2d  ew features:.  -
0250: 20 41 64 64 20 2d 2d 64 69 73 61 62 6c 65 2d 74   Add --disable-t
0260: 68 70 20 61 6e 64 20 74 68 65 20 6f 70 74 2e 74  hp and the opt.t
0270: 68 70 20 74 6f 20 70 72 6f 76 69 64 65 20 6f 70  hp to provide op
0280: 74 2d 6f 75 74 20 6d 65 63 68 61 6e 69 73 6d 73  t-out mechanisms
0290: 20 66 6f 72 0a 20 20 20 20 74 72 61 6e 73 70 61   for.    transpa
02a0: 72 65 6e 74 20 68 75 67 65 20 70 61 67 65 20 69  rent huge page i
02b0: 6e 74 65 67 72 61 74 69 6f 6e 2e 20 20 28 40 6a  ntegration.  (@j
02c0: 61 73 6f 6e 65 29 0a 20 20 2d 20 55 70 64 61 74  asone).  - Updat
02d0: 65 20 7a 6f 6e 65 20 61 6c 6c 6f 63 61 74 6f 72  e zone allocator
02e0: 20 69 6e 74 65 67 72 61 74 69 6f 6e 20 74 6f 20   integration to 
02f0: 77 6f 72 6b 20 77 69 74 68 20 6d 61 63 4f 53 20  work with macOS 
0300: 31 30 2e 31 32 2e 20 20 28 40 67 6c 61 6e 64 69  10.12.  (@glandi
0310: 75 6d 29 0a 20 20 2d 20 52 65 73 74 72 75 63 74  um).  - Restruct
0320: 75 72 65 20 2a 43 46 4c 41 47 53 20 63 6f 6e 66  ure *CFLAGS conf
0330: 69 67 75 72 61 74 69 6f 6e 2c 20 73 6f 20 74 68  iguration, so th
0340: 61 74 20 43 46 4c 41 47 53 20 62 65 68 61 76 65  at CFLAGS behave
0350: 73 20 74 79 70 69 63 61 6c 6c 79 2c 20 61 6e 64  s typically, and
0360: 0a 20 20 20 20 45 58 54 52 41 5f 43 46 4c 41 47  .    EXTRA_CFLAG
0370: 53 20 70 72 6f 76 69 64 65 73 20 61 20 77 61 79  S provides a way
0380: 20 74 6f 20 73 70 65 63 69 66 79 20 65 2e 67 2e   to specify e.g.
0390: 20 2d 57 65 72 72 6f 72 20 64 75 72 69 6e 67 20   -Werror during 
03a0: 62 75 69 6c 64 69 6e 67 2c 20 62 75 74 20 6e 6f  building, but no
03b0: 74 0a 20 20 20 20 64 75 72 69 6e 67 20 63 6f 6e  t.    during con
03c0: 66 69 67 75 72 61 74 69 6f 6e 2e 20 20 28 40 6a  figuration.  (@j
03d0: 61 73 6f 6e 65 2c 20 40 72 6f 6e 61 77 68 6f 29  asone, @ronawho)
03e0: 0a 0a 20 20 42 75 67 20 66 69 78 65 73 3a 0a 20  ..  Bug fixes:. 
03f0: 20 2d 20 46 69 78 20 44 53 53 20 28 73 62 72 6b   - Fix DSS (sbrk
0400: 28 32 29 2d 62 61 73 65 64 29 20 61 6c 6c 6f 63  (2)-based) alloc
0410: 61 74 69 6f 6e 2e 20 20 54 68 69 73 20 72 65 67  ation.  This reg
0420: 72 65 73 73 69 6f 6e 20 77 61 73 20 66 69 72 73  ression was firs
0430: 74 20 72 65 6c 65 61 73 65 64 20 69 6e 0a 20 20  t released in.  
0440: 20 20 34 2e 33 2e 30 2e 20 20 28 40 6a 61 73 6f    4.3.0.  (@jaso
0450: 6e 65 29 0a 20 20 2d 20 48 61 6e 64 6c 65 20 72  ne).  - Handle r
0460: 61 63 65 20 69 6e 20 70 65 72 20 73 69 7a 65 20  ace in per size 
0470: 63 6c 61 73 73 20 75 74 69 6c 69 7a 61 74 69 6f  class utilizatio
0480: 6e 20 63 6f 6d 70 75 74 61 74 69 6f 6e 2e 20 20  n computation.  
0490: 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 61 6c 69  This functionali
04a0: 74 79 0a 20 20 20 20 77 61 73 20 66 69 72 73 74  ty.    was first
04b0: 20 72 65 6c 65 61 73 65 64 20 69 6e 20 34 2e 30   released in 4.0
04c0: 2e 30 2e 20 20 28 40 69 6e 74 65 72 77 71 29 0a  .0.  (@interwq).
04d0: 20 20 2d 20 46 69 78 20 6c 6f 63 6b 20 6f 72 64    - Fix lock ord
04e0: 65 72 20 72 65 76 65 72 73 61 6c 20 64 75 72 69  er reversal duri
04f0: 6e 67 20 67 64 75 6d 70 2e 20 20 28 40 6a 61 73  ng gdump.  (@jas
0500: 6f 6e 65 29 0a 20 20 2d 20 46 69 78 2d 72 65 66  one).  - Fix-ref
0510: 61 63 74 6f 72 20 74 63 61 63 68 65 20 73 79 6e  actor tcache syn
0520: 63 68 72 6f 6e 69 7a 61 74 69 6f 6e 2e 20 20 54  chronization.  T
0530: 68 69 73 20 72 65 67 72 65 73 73 69 6f 6e 20 77  his regression w
0540: 61 73 20 66 69 72 73 74 20 72 65 6c 65 61 73 65  as first release
0550: 64 20 69 6e 0a 20 20 20 20 34 2e 30 2e 30 2e 20  d in.    4.0.0. 
0560: 20 28 40 6a 61 73 6f 6e 65 29 0a 20 20 2d 20 46   (@jasone).  - F
0570: 69 78 20 76 61 72 69 6f 75 73 20 4a 53 4f 4e 2d  ix various JSON-
0580: 66 6f 72 6d 61 74 74 65 64 20 6d 61 6c 6c 6f 63  formatted malloc
0590: 5f 73 74 61 74 73 5f 70 72 69 6e 74 28 29 20 62  _stats_print() b
05a0: 75 67 73 2e 20 20 54 68 69 73 20 66 75 6e 63 74  ugs.  This funct
05b0: 69 6f 6e 61 6c 69 74 79 0a 20 20 20 20 77 61 73  ionality.    was
05c0: 20 66 69 72 73 74 20 72 65 6c 65 61 73 65 64 20   first released 
05d0: 69 6e 20 34 2e 33 2e 30 2e 20 20 28 40 6a 61 73  in 4.3.0.  (@jas
05e0: 6f 6e 65 29 0a 20 20 2d 20 46 69 78 20 68 75 67  one).  - Fix hug
05f0: 65 2d 61 6c 69 67 6e 65 64 20 61 6c 6c 6f 63 61  e-aligned alloca
0600: 74 69 6f 6e 2e 20 20 54 68 69 73 20 72 65 67 72  tion.  This regr
0610: 65 73 73 69 6f 6e 20 77 61 73 20 66 69 72 73 74  ession was first
0620: 20 72 65 6c 65 61 73 65 64 20 69 6e 20 34 2e 34   released in 4.4
0630: 2e 30 2e 0a 20 20 20 20 28 40 6a 61 73 6f 6e 65  .0..    (@jasone
0640: 29 0a 20 20 2d 20 57 68 65 6e 20 74 72 61 6e 73  ).  - When trans
0650: 70 61 72 65 6e 74 20 68 75 67 65 20 70 61 67 65  parent huge page
0660: 20 69 6e 74 65 67 72 61 74 69 6f 6e 20 69 73 20   integration is 
0670: 65 6e 61 62 6c 65 64 2c 20 64 65 74 65 63 74 20  enabled, detect 
0680: 77 68 61 74 20 73 74 61 74 65 20 70 61 67 65 73  what state pages
0690: 0a 20 20 20 20 73 74 61 72 74 20 69 6e 20 61 63  .    start in ac
06a0: 63 6f 72 64 69 6e 67 20 74 6f 20 74 68 65 20 6b  cording to the k
06b0: 65 72 6e 65 6c 27 73 20 63 75 72 72 65 6e 74 20  ernel's current 
06c0: 6f 70 65 72 61 74 69 6e 67 20 6d 6f 64 65 2c 20  operating mode, 
06d0: 61 6e 64 20 6f 6e 6c 79 20 63 6f 6e 76 65 72 74  and only convert
06e0: 0a 20 20 20 20 61 72 65 6e 61 20 63 68 75 6e 6b  .    arena chunk
06f0: 73 20 74 6f 20 6e 6f 6e 2d 68 75 67 65 20 64 75  s to non-huge du
0700: 72 69 6e 67 20 70 75 72 67 69 6e 67 20 69 66 20  ring purging if 
0710: 74 68 61 74 20 69 73 20 6e 6f 74 20 74 68 65 69  that is not thei
0720: 72 20 69 6e 69 74 69 61 6c 20 73 74 61 74 65 2e  r initial state.
0730: 0a 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69  .    This functi
0740: 6f 6e 61 6c 69 74 79 20 77 61 73 20 66 69 72 73  onality was firs
0750: 74 20 72 65 6c 65 61 73 65 64 20 69 6e 20 34 2e  t released in 4.
0760: 34 2e 30 2e 20 20 28 40 6a 61 73 6f 6e 65 29 0a  4.0.  (@jasone).
0770: 20 20 2d 20 46 69 78 20 6c 67 5f 63 68 75 6e 6b    - Fix lg_chunk
0780: 20 63 6c 61 6d 70 69 6e 67 20 66 6f 72 20 74 68   clamping for th
0790: 65 20 2d 2d 65 6e 61 62 6c 65 2d 63 61 63 68 65  e --enable-cache
07a0: 2d 6f 62 6c 69 76 69 6f 75 73 20 2d 2d 64 69 73  -oblivious --dis
07b0: 61 62 6c 65 2d 66 69 6c 6c 20 63 61 73 65 2e 0a  able-fill case..
07c0: 20 20 20 20 54 68 69 73 20 72 65 67 72 65 73 73      This regress
07d0: 69 6f 6e 20 77 61 73 20 66 69 72 73 74 20 72 65  ion was first re
07e0: 6c 65 61 73 65 64 20 69 6e 20 34 2e 30 2e 30 2e  leased in 4.0.0.
07f0: 20 20 28 40 6a 61 73 6f 6e 65 2c 20 40 34 32 38    (@jasone, @428
0800: 64 65 73 6d 6f 29 0a 20 20 2d 20 50 72 6f 70 65  desmo).  - Prope
0810: 72 6c 79 20 64 65 74 65 63 74 20 73 70 61 72 63  rly detect sparc
0820: 36 34 20 77 68 65 6e 20 62 75 69 6c 64 69 6e 67  64 when building
0830: 20 66 6f 72 20 4c 69 6e 75 78 2e 20 20 28 40 67   for Linux.  (@g
0840: 6c 61 75 62 69 74 7a 29 0a 0a 2a 20 34 2e 34 2e  laubitz)..* 4.4.
0850: 30 20 28 44 65 63 65 6d 62 65 72 20 33 2c 20 32  0 (December 3, 2
0860: 30 31 36 29 0a 0a 20 20 4e 65 77 20 66 65 61 74  016)..  New feat
0870: 75 72 65 73 3a 0a 20 20 2d 20 41 64 64 20 63 6f  ures:.  - Add co
0880: 6e 66 69 67 75 72 65 20 73 75 70 70 6f 72 74 20  nfigure support 
0890: 66 6f 72 20 2a 2d 2a 2d 6c 69 6e 75 78 2d 61 6e  for *-*-linux-an
08a0: 64 72 6f 69 64 2e 20 20 28 40 63 66 65 72 72 69  droid.  (@cferri
08b0: 73 31 30 30 30 2c 20 40 6a 61 73 6f 6e 65 29 0a  s1000, @jasone).
08c0: 20 20 2d 20 41 64 64 20 74 68 65 20 2d 2d 64 69    - Add the --di
08d0: 73 61 62 6c 65 2d 73 79 73 63 61 6c 6c 20 63 6f  sable-syscall co
08e0: 6e 66 69 67 75 72 65 20 6f 70 74 69 6f 6e 2c 20  nfigure option, 
08f0: 66 6f 72 20 75 73 65 20 6f 6e 20 73 79 73 74 65  for use on syste
0900: 6d 73 20 74 68 61 74 20 70 6c 61 63 65 0a 20 20  ms that place.  
0910: 20 20 73 65 63 75 72 69 74 79 2d 6d 6f 74 69 76    security-motiv
0920: 61 74 65 64 20 6c 69 6d 69 74 61 74 69 6f 6e 73  ated limitations
0930: 20 6f 6e 20 73 79 73 63 61 6c 6c 28 32 29 2e 20   on syscall(2). 
0940: 20 28 40 6a 61 73 6f 6e 65 29 0a 20 20 2d 20 41   (@jasone).  - A
0950: 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 44  dd support for D
0960: 65 62 69 61 6e 20 47 4e 55 2f 6b 46 72 65 65 42  ebian GNU/kFreeB
0970: 53 44 2e 20 20 28 40 74 68 65 73 61 6d 29 0a 0a  SD.  (@thesam)..
0980: 20 20 4f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 3a    Optimizations:
0990: 0a 20 20 2d 20 41 64 64 20 65 78 74 65 6e 74 20  .  - Add extent 
09a0: 73 65 72 69 61 6c 20 6e 75 6d 62 65 72 73 20 61  serial numbers a
09b0: 6e 64 20 75 73 65 20 74 68 65 6d 20 77 68 65 72  nd use them wher
09c0: 65 20 61 70 70 72 6f 70 72 69 61 74 65 20 61 73  e appropriate as
09d0: 20 61 20 73 6f 72 74 20 6b 65 79 20 74 68 61 74   a sort key that
09e0: 0a 20 20 20 20 69 73 20 68 69 67 68 65 72 20 70  .    is higher p
09f0: 72 69 6f 72 69 74 79 20 74 68 61 6e 20 61 64 64  riority than add
0a00: 72 65 73 73 2c 20 73 6f 20 74 68 61 74 20 74 68  ress, so that th
0a10: 65 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 70 6f 6c  e allocation pol
0a20: 69 63 79 20 70 72 65 66 65 72 73 20 6f 6c 64 65  icy prefers olde
0a30: 72 0a 20 20 20 20 65 78 74 65 6e 74 73 2e 20 20  r.    extents.  
0a40: 54 68 69 73 20 74 65 6e 64 73 20 74 6f 20 69 6d  This tends to im
0a50: 70 72 6f 76 65 20 6c 6f 63 61 6c 69 74 79 20 28  prove locality (
0a60: 64 65 63 72 65 61 73 65 20 66 72 61 67 6d 65 6e  decrease fragmen
0a70: 74 61 74 69 6f 6e 29 20 77 68 65 6e 0a 20 20 20  tation) when.   
0a80: 20 6d 65 6d 6f 72 79 20 67 72 6f 77 73 20 64 6f   memory grows do
0a90: 77 6e 77 61 72 64 2e 20 20 28 40 6a 61 73 6f 6e  wnward.  (@jason
0aa0: 65 29 0a 20 20 2d 20 52 65 66 61 63 74 6f 72 20  e).  - Refactor 
0ab0: 6d 61 64 76 69 73 65 28 32 29 20 63 6f 6e 66 69  madvise(2) confi
0ac0: 67 75 72 61 74 69 6f 6e 20 73 6f 20 74 68 61 74  guration so that
0ad0: 20 4d 41 44 56 5f 46 52 45 45 20 69 73 20 64 65   MADV_FREE is de
0ae0: 74 65 63 74 65 64 20 61 6e 64 20 75 74 69 6c 69  tected and utili
0af0: 7a 65 64 0a 20 20 20 20 6f 6e 20 4c 69 6e 75 78  zed.    on Linux
0b00: 20 34 2e 35 20 61 6e 64 20 6e 65 77 65 72 2e 20   4.5 and newer. 
0b10: 20 28 40 6a 61 73 6f 6e 65 29 0a 20 20 2d 20 4d   (@jasone).  - M
0b20: 61 72 6b 20 70 61 72 74 69 61 6c 6c 79 20 70 75  ark partially pu
0b30: 72 67 65 64 20 61 72 65 6e 61 20 63 68 75 6e 6b  rged arena chunk
0b40: 73 20 61 73 20 6e 6f 6e 2d 68 75 67 65 2d 70 61  s as non-huge-pa
0b50: 67 65 2e 20 20 54 68 69 73 20 69 6d 70 72 6f 76  ge.  This improv
0b60: 65 73 0a 20 20 20 20 69 6e 74 65 72 61 63 74 69  es.    interacti
0b70: 6f 6e 20 77 69 74 68 20 4c 69 6e 75 78 27 73 20  on with Linux's 
0b80: 74 72 61 6e 73 70 61 72 65 6e 74 20 68 75 67 65  transparent huge
0b90: 20 70 61 67 65 20 66 75 6e 63 74 69 6f 6e 61 6c   page functional
0ba0: 69 74 79 2e 20 20 28 40 6a 61 73 6f 6e 65 29 0a  ity.  (@jasone).
0bb0: 0a 20 20 42 75 67 20 66 69 78 65 73 3a 0a 20 20  .  Bug fixes:.  
0bc0: 2d 20 46 69 78 20 73 69 7a 65 20 63 6c 61 73 73  - Fix size class
0bd0: 20 63 6f 6d 70 75 74 61 74 69 6f 6e 73 20 66 6f   computations fo
0be0: 72 20 65 64 67 65 20 63 6f 6e 64 69 74 69 6f 6e  r edge condition
0bf0: 73 20 69 6e 76 6f 6c 76 69 6e 67 20 65 78 74 72  s involving extr
0c00: 65 6d 65 6c 79 20 6c 61 72 67 65 0a 20 20 20 20  emely large.    
0c10: 61 6c 6c 6f 63 61 74 69 6f 6e 73 2e 20 20 54 68  allocations.  Th
0c20: 69 73 20 72 65 67 72 65 73 73 69 6f 6e 20 77 61  is regression wa
0c30: 73 20 66 69 72 73 74 20 72 65 6c 65 61 73 65 64  s first released
0c40: 20 69 6e 20 34 2e 30 2e 30 2e 20 20 28 40 6a 61   in 4.0.0.  (@ja
0c50: 73 6f 6e 65 2c 0a 20 20 20 20 40 69 6e 67 76 61  sone,.    @ingva
0c60: 72 68 61 29 0a 20 20 2d 20 52 65 6d 6f 76 65 20  rha).  - Remove 
0c70: 6f 76 65 72 6c 79 20 72 65 73 74 72 69 63 74 69  overly restricti
0c80: 76 65 20 61 73 73 65 72 74 69 6f 6e 73 20 72 65  ve assertions re
0c90: 6c 61 74 65 64 20 74 6f 20 74 68 65 20 63 61 63  lated to the cac
0ca0: 74 69 76 65 20 73 74 61 74 69 73 74 69 63 2e 20  tive statistic. 
0cb0: 20 54 68 69 73 0a 20 20 20 20 72 65 67 72 65 73   This.    regres
0cc0: 73 69 6f 6e 20 77 61 73 20 66 69 72 73 74 20 72  sion was first r
0cd0: 65 6c 65 61 73 65 64 20 69 6e 20 34 2e 31 2e 30  eleased in 4.1.0
0ce0: 2e 20 20 28 40 6a 61 73 6f 6e 65 29 0a 20 20 2d  .  (@jasone).  -
0cf0: 20 49 6d 70 6c 65 6d 65 6e 74 20 61 20 6d 6f 72   Implement a mor
0d00: 65 20 72 65 6c 69 61 62 6c 65 20 64 65 74 65 63  e reliable detec
0d10: 74 69 6f 6e 20 73 63 68 65 6d 65 20 66 6f 72 20  tion scheme for 
0d20: 6f 73 5f 75 6e 66 61 69 72 5f 6c 6f 63 6b 20 6f  os_unfair_lock o
0d30: 6e 20 6d 61 63 4f 53 2e 0a 20 20 20 20 28 40 6a  n macOS..    (@j
0d40: 73 7a 61 6b 6d 65 69 73 74 65 72 29 0a 0a 2a 20  szakmeister)..* 
0d50: 34 2e 33 2e 31 20 28 4e 6f 76 65 6d 62 65 72 20  4.3.1 (November 
0d60: 37 2c 20 32 30 31 36 29 0a 0a 20 20 42 75 67 20  7, 2016)..  Bug 
0d70: 66 69 78 65 73 3a 0a 20 20 2d 20 46 69 78 20 61  fixes:.  - Fix a
0d80: 20 73 65 76 65 72 65 20 76 69 72 74 75 61 6c 20   severe virtual 
0d90: 6d 65 6d 6f 72 79 20 6c 65 61 6b 2e 20 20 54 68  memory leak.  Th
0da0: 69 73 20 72 65 67 72 65 73 73 69 6f 6e 20 77 61  is regression wa
0db0: 73 20 66 69 72 73 74 20 72 65 6c 65 61 73 65 64  s first released
0dc0: 20 69 6e 0a 20 20 20 20 34 2e 33 2e 30 2e 20 20   in.    4.3.0.  
0dd0: 28 40 69 6e 74 65 72 77 71 2c 20 40 6a 61 73 6f  (@interwq, @jaso
0de0: 6e 65 29 0a 20 20 2d 20 52 65 66 61 63 74 6f 72  ne).  - Refactor
0df0: 20 61 74 6f 6d 69 63 20 61 6e 64 20 70 72 6e 67   atomic and prng
0e00: 20 41 50 49 73 20 74 6f 20 72 65 73 74 6f 72 65   APIs to restore
0e10: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 33 32 2d   support for 32-
0e20: 62 69 74 20 70 6c 61 74 66 6f 72 6d 73 20 74 68  bit platforms th
0e30: 61 74 0a 20 20 20 20 75 73 65 20 70 72 65 2d 43  at.    use pre-C
0e40: 31 31 20 74 6f 6f 6c 63 68 61 69 6e 73 2c 20 65  11 toolchains, e
0e50: 2e 67 2e 20 46 72 65 65 42 53 44 27 73 20 6d 69  .g. FreeBSD's mi
0e60: 70 73 2e 20 20 28 40 6a 61 73 6f 6e 65 29 0a 0a  ps.  (@jasone)..
0e70: 2a 20 34 2e 33 2e 30 20 28 4e 6f 76 65 6d 62 65  * 4.3.0 (Novembe
0e80: 72 20 34 2c 20 32 30 31 36 29 0a 0a 20 20 54 68  r 4, 2016)..  Th
0e90: 69 73 20 69 73 20 74 68 65 20 66 69 72 73 74 20  is is the first 
0ea0: 72 65 6c 65 61 73 65 20 74 68 61 74 20 70 61 73  release that pas
0eb0: 73 65 73 20 74 68 65 20 74 65 73 74 20 73 75 69  ses the test sui
0ec0: 74 65 20 66 6f 72 20 6d 75 6c 74 69 70 6c 65 20  te for multiple 
0ed0: 57 69 6e 64 6f 77 73 0a 20 20 63 6f 6e 66 69 67  Windows.  config
0ee0: 75 72 61 74 69 6f 6e 73 2c 20 74 68 61 6e 6b 73  urations, thanks
0ef0: 20 69 6e 20 6c 61 72 67 65 20 70 61 72 74 20 74   in large part t
0f00: 6f 20 40 67 6c 61 6e 64 69 75 6d 20 73 65 74 74  o @glandium sett
0f10: 69 6e 67 20 75 70 20 63 6f 6e 74 69 6e 75 6f 75  ing up continuou
0f20: 73 0a 20 20 69 6e 74 65 67 72 61 74 69 6f 6e 20  s.  integration 
0f30: 76 69 61 20 41 70 70 56 65 79 6f 72 20 28 61 6e  via AppVeyor (an
0f40: 64 20 54 72 61 76 69 73 20 43 49 20 66 6f 72 20  d Travis CI for 
0f50: 4c 69 6e 75 78 20 61 6e 64 20 4f 53 20 58 29 2e  Linux and OS X).
0f60: 0a 0a 20 20 4e 65 77 20 66 65 61 74 75 72 65 73  ..  New features
0f70: 3a 0a 20 20 2d 20 41 64 64 20 22 4a 22 20 28 4a  :.  - Add "J" (J
0f80: 53 4f 4e 29 20 73 75 70 70 6f 72 74 20 74 6f 20  SON) support to 
0f90: 6d 61 6c 6c 6f 63 5f 73 74 61 74 73 5f 70 72 69  malloc_stats_pri
0fa0: 6e 74 28 29 2e 20 20 28 40 6a 61 73 6f 6e 65 29  nt().  (@jasone)
0fb0: 0a 20 20 2d 20 41 64 64 20 43 72 61 79 20 63 6f  .  - Add Cray co
0fc0: 6d 70 69 6c 65 72 20 73 75 70 70 6f 72 74 2e 20  mpiler support. 
0fd0: 20 28 40 72 6f 6e 61 77 68 6f 29 0a 0a 20 20 4f   (@ronawho)..  O
0fe0: 70 74 69 6d 69 7a 61 74 69 6f 6e 73 3a 0a 20 20  ptimizations:.  
0ff0: 2d 20 41 64 64 2f 75 73 65 20 61 64 61 70 74 69  - Add/use adapti
1000: 76 65 20 73 70 69 6e 6e 69 6e 67 20 66 6f 72 20  ve spinning for 
1010: 62 6f 6f 74 73 74 72 61 70 70 69 6e 67 20 61 6e  bootstrapping an
1020: 64 20 72 61 64 69 78 20 74 72 65 65 20 6e 6f 64  d radix tree nod
1030: 65 0a 20 20 20 20 69 6e 69 74 69 61 6c 69 7a 61  e.    initializa
1040: 74 69 6f 6e 2e 20 20 28 40 6a 61 73 6f 6e 65 29  tion.  (@jasone)
1050: 0a 0a 20 20 42 75 67 20 66 69 78 65 73 3a 0a 20  ..  Bug fixes:. 
1060: 20 2d 20 46 69 78 20 6c 61 72 67 65 20 61 6c 6c   - Fix large all
1070: 6f 63 61 74 69 6f 6e 20 74 6f 20 73 65 61 72 63  ocation to searc
1080: 68 20 73 74 61 72 74 69 6e 67 20 69 6e 20 74 68  h starting in th
1090: 65 20 6f 70 74 69 6d 61 6c 20 73 69 7a 65 20 63  e optimal size c
10a0: 6c 61 73 73 20 68 65 61 70 2c 0a 20 20 20 20 77  lass heap,.    w
10b0: 68 69 63 68 20 63 61 6e 20 73 75 62 73 74 61 6e  hich can substan
10c0: 74 69 61 6c 6c 79 20 72 65 64 75 63 65 20 76 69  tially reduce vi
10d0: 72 74 75 61 6c 20 6d 65 6d 6f 72 79 20 63 68 75  rtual memory chu
10e0: 72 6e 20 61 6e 64 20 66 72 61 67 6d 65 6e 74 61  rn and fragmenta
10f0: 74 69 6f 6e 2e 20 20 54 68 69 73 0a 20 20 20 20  tion.  This.    
1100: 72 65 67 72 65 73 73 69 6f 6e 20 77 61 73 20 66  regression was f
1110: 69 72 73 74 20 72 65 6c 65 61 73 65 64 20 69 6e  irst released in
1120: 20 34 2e 30 2e 30 2e 20 20 28 40 6d 6a 70 34 31   4.0.0.  (@mjp41
1130: 2c 20 40 6a 61 73 6f 6e 65 29 0a 20 20 2d 20 46  , @jasone).  - F
1140: 69 78 20 73 74 61 74 73 2e 61 72 65 6e 61 73 2e  ix stats.arenas.
1150: 3c 69 3e 2e 6e 74 68 72 65 61 64 73 20 61 63 63  <i>.nthreads acc
1160: 6f 75 6e 74 69 6e 67 2e 20 20 28 40 69 6e 74 65  ounting.  (@inte
1170: 72 77 71 29 0a 20 20 2d 20 46 69 78 20 61 6e 64  rwq).  - Fix and
1180: 20 73 69 6d 70 6c 69 66 79 20 64 65 63 61 79 2d   simplify decay-
1190: 62 61 73 65 64 20 70 75 72 67 69 6e 67 2e 20 20  based purging.  
11a0: 28 40 6a 61 73 6f 6e 65 29 0a 20 20 2d 20 4d 61  (@jasone).  - Ma
11b0: 6b 65 20 44 53 53 20 28 73 62 72 6b 28 32 29 2d  ke DSS (sbrk(2)-
11c0: 72 65 6c 61 74 65 64 29 20 6f 70 65 72 61 74 69  related) operati
11d0: 6f 6e 73 20 6c 6f 63 6b 6c 65 73 73 2c 20 77 68  ons lockless, wh
11e0: 69 63 68 20 72 65 73 6f 6c 76 65 73 20 70 6f 74  ich resolves pot
11f0: 65 6e 74 69 61 6c 0a 20 20 20 20 64 65 61 64 6c  ential.    deadl
1200: 6f 63 6b 73 20 64 75 72 69 6e 67 20 74 68 72 65  ocks during thre
1210: 61 64 20 65 78 69 74 2e 20 20 28 40 6a 61 73 6f  ad exit.  (@jaso
1220: 6e 65 29 0a 20 20 2d 20 46 69 78 20 6f 76 65 72  ne).  - Fix over
1230: 2d 73 69 7a 65 64 20 61 6c 6c 6f 63 61 74 69 6f  -sized allocatio
1240: 6e 20 6f 66 20 72 61 64 69 78 20 74 72 65 65 20  n of radix tree 
1250: 6c 65 61 66 20 6e 6f 64 65 73 2e 20 20 28 40 6d  leaf nodes.  (@m
1260: 6a 70 34 31 2c 20 40 6f 67 61 75 6e 2c 0a 20 20  jp41, @ogaun,.  
1270: 20 20 40 6a 61 73 6f 6e 65 29 0a 20 20 2d 20 46    @jasone).  - F
1280: 69 78 20 6f 76 65 72 2d 73 69 7a 65 64 20 61 6c  ix over-sized al
1290: 6c 6f 63 61 74 69 6f 6e 20 6f 66 20 61 72 65 6e  location of aren
12a0: 61 5f 74 20 28 70 6c 75 73 20 61 73 73 6f 63 69  a_t (plus associ
12b0: 61 74 65 64 20 73 74 61 74 73 29 20 64 61 74 61  ated stats) data
12c0: 0a 20 20 20 20 73 74 72 75 63 74 75 72 65 73 2e  .    structures.
12d0: 20 20 28 40 6a 61 73 6f 6e 65 2c 20 40 69 6e 74    (@jasone, @int
12e0: 65 72 77 71 29 0a 20 20 2d 20 46 69 78 20 45 58  erwq).  - Fix EX
12f0: 54 52 41 5f 43 46 4c 41 47 53 20 74 6f 20 6e 6f  TRA_CFLAGS to no
1300: 74 20 61 66 66 65 63 74 20 63 6f 6e 66 69 67 75  t affect configu
1310: 72 61 74 69 6f 6e 2e 20 20 28 40 6a 61 73 6f 6e  ration.  (@jason
1320: 65 29 0a 20 20 2d 20 46 69 78 20 61 20 56 61 6c  e).  - Fix a Val
1330: 67 72 69 6e 64 20 69 6e 74 65 67 72 61 74 69 6f  grind integratio
1340: 6e 20 62 75 67 2e 20 20 28 40 72 6f 6e 61 77 68  n bug.  (@ronawh
1350: 6f 29 0a 20 20 2d 20 44 69 73 61 6c 6c 6f 77 20  o).  - Disallow 
1360: 30 78 35 61 20 6a 75 6e 6b 20 66 69 6c 6c 69 6e  0x5a junk fillin
1370: 67 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 69  g when running i
1380: 6e 20 56 61 6c 67 72 69 6e 64 2e 20 20 28 40 6a  n Valgrind.  (@j
1390: 61 73 6f 6e 65 29 0a 20 20 2d 20 46 69 78 20 61  asone).  - Fix a
13a0: 20 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f 72   file descriptor
13b0: 20 6c 65 61 6b 20 6f 6e 20 4c 69 6e 75 78 2e 20   leak on Linux. 
13c0: 20 54 68 69 73 20 72 65 67 72 65 73 73 69 6f 6e   This regression
13d0: 20 77 61 73 20 66 69 72 73 74 20 72 65 6c 65 61   was first relea
13e0: 73 65 64 20 69 6e 0a 20 20 20 20 34 2e 32 2e 30  sed in.    4.2.0
13f0: 2e 20 20 28 40 76 73 61 72 75 6e 61 73 2c 20 40  .  (@vsarunas, @
1400: 6a 61 73 6f 6e 65 29 0a 20 20 2d 20 46 69 78 20  jasone).  - Fix 
1410: 73 74 61 74 69 63 20 6c 69 6e 6b 69 6e 67 20 6f  static linking o
1420: 66 20 6a 65 6d 61 6c 6c 6f 63 20 77 69 74 68 20  f jemalloc with 
1430: 67 6c 69 62 63 2e 20 20 28 40 64 6a 77 61 74 73  glibc.  (@djwats
1440: 6f 6e 29 0a 20 20 2d 20 55 73 65 20 73 79 73 63  on).  - Use sysc
1450: 61 6c 6c 28 32 29 20 72 61 74 68 65 72 20 74 68  all(2) rather th
1460: 61 6e 20 7b 6f 70 65 6e 2c 72 65 61 64 2c 63 6c  an {open,read,cl
1470: 6f 73 65 7d 28 32 29 20 64 75 72 69 6e 67 20 62  ose}(2) during b
1480: 6f 6f 74 20 6f 6e 20 4c 69 6e 75 78 2e 20 20 54  oot on Linux.  T
1490: 68 69 73 0a 20 20 20 20 77 6f 72 6b 73 20 61 72  his.    works ar
14a0: 6f 75 6e 64 20 6f 74 68 65 72 20 6c 69 62 72 61  ound other libra
14b0: 72 69 65 73 27 20 73 79 73 74 65 6d 20 63 61 6c  ries' system cal
14c0: 6c 20 77 72 61 70 70 65 72 73 20 70 65 72 66 6f  l wrappers perfo
14d0: 72 6d 69 6e 67 20 72 65 65 6e 74 72 61 6e 74 0a  rming reentrant.
14e0: 20 20 20 20 61 6c 6c 6f 63 61 74 69 6f 6e 2e 20      allocation. 
14f0: 20 28 40 6b 73 70 69 6e 6b 61 2c 20 40 57 68 69   (@kspinka, @Whi
1500: 73 73 69 2c 20 40 6a 61 73 6f 6e 65 29 0a 20 20  ssi, @jasone).  
1510: 2d 20 46 69 78 20 4f 53 20 58 20 64 65 66 61 75  - Fix OS X defau
1520: 6c 74 20 7a 6f 6e 65 20 72 65 70 6c 61 63 65 6d  lt zone replacem
1530: 65 6e 74 20 74 6f 20 77 6f 72 6b 20 77 69 74 68  ent to work with
1540: 20 4f 53 20 58 20 31 30 2e 31 32 2e 20 20 28 40   OS X 10.12.  (@
1550: 67 6c 61 6e 64 69 75 6d 2c 0a 20 20 20 20 40 6a  glandium,.    @j
1560: 61 73 6f 6e 65 29 0a 20 20 2d 20 46 69 78 20 63  asone).  - Fix c
1570: 61 63 68 65 64 20 6d 65 6d 6f 72 79 20 6d 61 6e  ached memory man
1580: 61 67 65 6d 65 6e 74 20 74 6f 20 61 76 6f 69 64  agement to avoid
1590: 20 6e 65 65 64 6c 65 73 73 20 63 6f 6d 6d 69 74   needless commit
15a0: 2f 64 65 63 6f 6d 6d 69 74 20 6f 70 65 72 61 74  /decommit operat
15b0: 69 6f 6e 73 0a 20 20 20 20 64 75 72 69 6e 67 20  ions.    during 
15c0: 70 75 72 67 69 6e 67 2c 20 77 68 69 63 68 20 72  purging, which r
15d0: 65 73 6f 6c 76 65 73 20 70 65 72 6d 61 6e 65 6e  esolves permanen
15e0: 74 20 76 69 72 74 75 61 6c 20 6d 65 6d 6f 72 79  t virtual memory
15f0: 20 6d 61 70 20 66 72 61 67 6d 65 6e 74 61 74 69   map fragmentati
1600: 6f 6e 0a 20 20 20 20 69 73 73 75 65 73 20 6f 6e  on.    issues on
1610: 20 57 69 6e 64 6f 77 73 2e 20 20 28 40 6d 6a 70   Windows.  (@mjp
1620: 34 31 2c 20 40 6a 61 73 6f 6e 65 29 0a 20 20 2d  41, @jasone).  -
1630: 20 46 69 78 20 54 53 44 20 66 65 74 63 68 65 73   Fix TSD fetches
1640: 20 74 6f 20 61 76 6f 69 64 20 28 72 65 63 75 72   to avoid (recur
1650: 73 69 76 65 29 20 61 6c 6c 6f 63 61 74 69 6f 6e  sive) allocation
1660: 2e 20 20 54 68 69 73 20 69 73 20 72 65 6c 65 76  .  This is relev
1670: 61 6e 74 20 74 6f 0a 20 20 20 20 6e 6f 6e 2d 54  ant to.    non-T
1680: 4c 53 20 61 6e 64 20 57 69 6e 64 6f 77 73 20 63  LS and Windows c
1690: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 73 2e 20 20  onfigurations.  
16a0: 28 40 6a 61 73 6f 6e 65 29 0a 20 20 2d 20 46 69  (@jasone).  - Fi
16b0: 78 20 6d 61 6c 6c 6f 63 5f 63 6f 6e 66 20 6f 76  x malloc_conf ov
16c0: 65 72 72 69 64 69 6e 67 20 74 6f 20 77 6f 72 6b  erriding to work
16d0: 20 6f 6e 20 57 69 6e 64 6f 77 73 2e 20 20 28 40   on Windows.  (@
16e0: 6a 61 73 6f 6e 65 29 0a 20 20 2d 20 46 6f 72 63  jasone).  - Forc
16f0: 69 62 6c 79 20 64 69 73 61 62 6c 65 20 6c 61 7a  ibly disable laz
1700: 79 2d 6c 6f 63 6b 20 6f 6e 20 57 69 6e 64 6f 77  y-lock on Window
1710: 73 20 28 77 61 73 20 66 6f 72 63 69 62 6c 79 20  s (was forcibly 
1720: 2a 65 6e 61 62 6c 65 64 2a 29 2e 20 20 28 40 6a  *enabled*).  (@j
1730: 61 73 6f 6e 65 29 0a 0a 2a 20 34 2e 32 2e 31 20  asone)..* 4.2.1 
1740: 28 4a 75 6e 65 20 38 2c 20 32 30 31 36 29 0a 0a  (June 8, 2016)..
1750: 20 20 42 75 67 20 66 69 78 65 73 3a 0a 20 20 2d    Bug fixes:.  -
1760: 20 46 69 78 20 62 6f 6f 74 73 74 72 61 70 70 69   Fix bootstrappi
1770: 6e 67 20 69 73 73 75 65 73 20 66 6f 72 20 63 6f  ng issues for co
1780: 6e 66 69 67 75 72 61 74 69 6f 6e 73 20 74 68 61  nfigurations tha
1790: 74 20 72 65 71 75 69 72 65 20 61 6c 6c 6f 63 61  t require alloca
17a0: 74 69 6f 6e 20 64 75 72 69 6e 67 0a 20 20 20 20  tion during.    
17b0: 74 73 64 20 69 6e 69 74 69 61 6c 69 7a 61 74 69  tsd initializati
17c0: 6f 6e 20 28 65 2e 67 2e 20 2d 2d 64 69 73 61 62  on (e.g. --disab
17d0: 6c 65 2d 74 6c 73 29 2e 20 20 28 40 63 66 65 72  le-tls).  (@cfer
17e0: 72 69 73 31 30 30 30 2c 20 40 6a 61 73 6f 6e 65  ris1000, @jasone
17f0: 29 0a 20 20 2d 20 46 69 78 20 67 65 74 74 69 6d  ).  - Fix gettim
1800: 65 6f 66 64 61 79 28 29 20 76 65 72 73 69 6f 6e  eofday() version
1810: 20 6f 66 20 6e 73 74 69 6d 65 5f 75 70 64 61 74   of nstime_updat
1820: 65 28 29 2e 20 20 28 40 72 6f 6e 61 77 68 6f 29  e().  (@ronawho)
1830: 0a 20 20 2d 20 46 69 78 20 56 61 6c 67 72 69 6e  .  - Fix Valgrin
1840: 64 20 72 65 67 72 65 73 73 69 6f 6e 73 20 69 6e  d regressions in
1850: 20 63 61 6c 6c 6f 63 28 29 20 61 6e 64 20 63 68   calloc() and ch
1860: 75 6e 6b 5f 61 6c 6c 6f 63 5f 77 72 61 70 70 65  unk_alloc_wrappe
1870: 72 28 29 2e 20 20 28 40 72 6f 6e 61 77 68 6f 29  r().  (@ronawho)
1880: 0a 20 20 2d 20 46 69 78 20 70 6f 74 65 6e 74 69  .  - Fix potenti
1890: 61 6c 20 56 4d 20 6d 61 70 20 66 72 61 67 6d 65  al VM map fragme
18a0: 6e 74 61 74 69 6f 6e 20 72 65 67 72 65 73 73 69  ntation regressi
18b0: 6f 6e 2e 20 20 28 40 6a 61 73 6f 6e 65 29 0a 20  on.  (@jasone). 
18c0: 20 2d 20 46 69 78 20 6f 70 74 5f 7a 65 72 6f 2d   - Fix opt_zero-
18d0: 74 72 69 67 67 65 72 65 64 20 69 6e 2d 70 6c 61  triggered in-pla
18e0: 63 65 20 68 75 67 65 20 72 65 61 6c 6c 6f 63 61  ce huge realloca
18f0: 74 69 6f 6e 20 7a 65 72 6f 69 6e 67 2e 20 20 28  tion zeroing.  (
1900: 40 6a 61 73 6f 6e 65 29 0a 20 20 2d 20 46 69 78  @jasone).  - Fix
1910: 20 68 65 61 70 20 70 72 6f 66 69 6c 69 6e 67 20   heap profiling 
1920: 63 6f 6e 74 65 78 74 20 6c 65 61 6b 73 20 69 6e  context leaks in
1930: 20 72 65 61 6c 6c 6f 63 61 74 69 6f 6e 20 65 64   reallocation ed
1940: 67 65 20 63 61 73 65 73 2e 20 20 28 40 6a 61 73  ge cases.  (@jas
1950: 6f 6e 65 29 0a 0a 2a 20 34 2e 32 2e 30 20 28 4d  one)..* 4.2.0 (M
1960: 61 79 20 31 32 2c 20 32 30 31 36 29 0a 0a 20 20  ay 12, 2016)..  
1970: 4e 65 77 20 66 65 61 74 75 72 65 73 3a 0a 20 20  New features:.  
1980: 2d 20 41 64 64 20 74 68 65 20 61 72 65 6e 61 2e  - Add the arena.
1990: 3c 69 3e 2e 72 65 73 65 74 20 6d 61 6c 6c 63 74  <i>.reset mallct
19a0: 6c 2c 20 77 68 69 63 68 20 6d 61 6b 65 73 20 69  l, which makes i
19b0: 74 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 64 69  t possible to di
19c0: 73 63 61 72 64 20 61 6c 6c 20 6f 66 0a 20 20 20  scard all of.   
19d0: 20 61 6e 20 61 72 65 6e 61 27 73 20 61 6c 6c 6f   an arena's allo
19e0: 63 61 74 69 6f 6e 73 20 69 6e 20 61 20 73 69 6e  cations in a sin
19f0: 67 6c 65 20 6f 70 65 72 61 74 69 6f 6e 2e 20 20  gle operation.  
1a00: 28 40 6a 61 73 6f 6e 65 29 0a 20 20 2d 20 41 64  (@jasone).  - Ad
1a10: 64 20 74 68 65 20 73 74 61 74 73 2e 72 65 74 61  d the stats.reta
1a20: 69 6e 65 64 20 61 6e 64 20 73 74 61 74 73 2e 61  ined and stats.a
1a30: 72 65 6e 61 73 2e 3c 69 3e 2e 72 65 74 61 69 6e  renas.<i>.retain
1a40: 65 64 20 73 74 61 74 69 73 74 69 63 73 2e 20 20  ed statistics.  
1a50: 28 40 6a 61 73 6f 6e 65 29 0a 20 20 2d 20 41 64  (@jasone).  - Ad
1a60: 64 20 74 68 65 20 2d 2d 77 69 74 68 2d 76 65 72  d the --with-ver
1a70: 73 69 6f 6e 20 63 6f 6e 66 69 67 75 72 65 20 6f  sion configure o
1a80: 70 74 69 6f 6e 2e 20 20 28 40 6a 61 73 6f 6e 65  ption.  (@jasone
1a90: 29 0a 20 20 2d 20 53 75 70 70 6f 72 74 20 2d 2d  ).  - Support --
1aa0: 77 69 74 68 2d 6c 67 2d 70 61 67 65 20 76 61 6c  with-lg-page val
1ab0: 75 65 73 20 6c 61 72 67 65 72 20 74 68 61 6e 20  ues larger than 
1ac0: 61 63 74 75 61 6c 20 70 61 67 65 20 73 69 7a 65  actual page size
1ad0: 2e 20 20 28 40 6a 61 73 6f 6e 65 29 0a 0a 20 20  .  (@jasone)..  
1ae0: 4f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 3a 0a 20  Optimizations:. 
1af0: 20 2d 20 55 73 65 20 70 61 69 72 69 6e 67 20 68   - Use pairing h
1b00: 65 61 70 73 20 72 61 74 68 65 72 20 74 68 61 6e  eaps rather than
1b10: 20 72 65 64 2d 62 6c 61 63 6b 20 74 72 65 65 73   red-black trees
1b20: 20 66 6f 72 20 76 61 72 69 6f 75 73 20 68 6f 74   for various hot
1b30: 20 64 61 74 61 0a 20 20 20 20 73 74 72 75 63 74   data.    struct
1b40: 75 72 65 73 2e 20 20 28 40 64 6a 77 61 74 73 6f  ures.  (@djwatso
1b50: 6e 2c 20 40 6a 61 73 6f 6e 65 29 0a 20 20 2d 20  n, @jasone).  - 
1b60: 53 74 72 65 61 6d 6c 69 6e 65 20 66 61 73 74 20  Streamline fast 
1b70: 70 61 74 68 73 20 6f 66 20 72 74 72 65 65 20 6f  paths of rtree o
1b80: 70 65 72 61 74 69 6f 6e 73 2e 20 20 28 40 6a 61  perations.  (@ja
1b90: 73 6f 6e 65 29 0a 20 20 2d 20 4f 70 74 69 6d 69  sone).  - Optimi
1ba0: 7a 65 20 74 68 65 20 66 61 73 74 20 70 61 74 68  ze the fast path
1bb0: 73 20 6f 66 20 63 61 6c 6c 6f 63 28 29 20 61 6e  s of calloc() an
1bc0: 64 20 5b 6d 2c 64 2c 73 64 5d 61 6c 6c 6f 63 78  d [m,d,sd]allocx
1bd0: 28 29 2e 20 20 28 40 6a 61 73 6f 6e 65 29 0a 20  ().  (@jasone). 
1be0: 20 2d 20 44 65 63 6f 6d 6d 69 74 20 75 6e 75 73   - Decommit unus
1bf0: 65 64 20 76 69 72 74 75 61 6c 20 6d 65 6d 6f 72  ed virtual memor
1c00: 79 20 69 66 20 74 68 65 20 4f 53 20 64 6f 65 73  y if the OS does
1c10: 20 6e 6f 74 20 6f 76 65 72 63 6f 6d 6d 69 74 2e   not overcommit.
1c20: 20 20 28 40 6a 61 73 6f 6e 65 29 0a 20 20 2d 20    (@jasone).  - 
1c30: 53 70 65 63 69 66 79 20 4d 41 50 5f 4e 4f 52 45  Specify MAP_NORE
1c40: 53 45 52 56 45 20 6f 6e 20 4c 69 6e 75 78 20 69  SERVE on Linux i
1c50: 66 20 5b 68 65 75 72 69 73 74 69 63 5d 20 6f 76  f [heuristic] ov
1c60: 65 72 63 6f 6d 6d 69 74 20 69 73 20 61 63 74 69  ercommit is acti
1c70: 76 65 2c 20 69 6e 20 6f 72 64 65 72 0a 20 20 20  ve, in order.   
1c80: 20 74 6f 20 61 76 6f 69 64 20 75 6e 66 6f 72 74   to avoid unfort
1c90: 75 6e 61 74 65 20 69 6e 74 65 72 61 63 74 69 6f  unate interactio
1ca0: 6e 73 20 64 75 72 69 6e 67 20 66 6f 72 6b 28 32  ns during fork(2
1cb0: 29 2e 20 20 28 40 6a 61 73 6f 6e 65 29 0a 0a 20  ).  (@jasone).. 
1cc0: 20 42 75 67 20 66 69 78 65 73 3a 0a 20 20 2d 20   Bug fixes:.  - 
1cd0: 46 69 78 20 63 68 75 6e 6b 20 61 63 63 6f 75 6e  Fix chunk accoun
1ce0: 74 69 6e 67 20 72 65 6c 61 74 65 64 20 74 6f 20  ting related to 
1cf0: 74 72 69 67 67 65 72 69 6e 67 20 67 64 75 6d 70  triggering gdump
1d00: 20 70 72 6f 66 69 6c 65 73 2e 20 20 28 40 6a 61   profiles.  (@ja
1d10: 73 6f 6e 65 29 0a 20 20 2d 20 4c 69 6e 6b 20 61  sone).  - Link a
1d20: 67 61 69 6e 73 74 20 6c 69 62 72 74 20 66 6f 72  gainst librt for
1d30: 20 63 6c 6f 63 6b 5f 67 65 74 74 69 6d 65 28 32   clock_gettime(2
1d40: 29 20 69 66 20 67 6c 69 62 63 20 3c 20 32 2e 31  ) if glibc < 2.1
1d50: 37 2e 20 20 28 40 6a 61 73 6f 6e 65 29 0a 20 20  7.  (@jasone).  
1d60: 2d 20 53 63 61 6c 65 20 6c 65 61 6b 20 72 65 70  - Scale leak rep
1d70: 6f 72 74 20 73 75 6d 6d 61 72 79 20 61 63 63 6f  ort summary acco
1d80: 72 64 69 6e 67 20 74 6f 20 73 61 6d 70 6c 69 6e  rding to samplin
1d90: 67 20 70 72 6f 62 61 62 69 6c 69 74 79 2e 20 20  g probability.  
1da0: 28 40 6a 61 73 6f 6e 65 29 0a 0a 2a 20 34 2e 31  (@jasone)..* 4.1
1db0: 2e 31 20 28 4d 61 79 20 33 2c 20 32 30 31 36 29  .1 (May 3, 2016)
1dc0: 0a 0a 20 20 54 68 69 73 20 62 75 67 66 69 78 20  ..  This bugfix 
1dd0: 72 65 6c 65 61 73 65 20 72 65 73 6f 6c 76 65 73  release resolves
1de0: 20 61 20 76 61 72 69 65 74 79 20 6f 66 20 6d 6f   a variety of mo
1df0: 73 74 6c 79 20 6d 69 6e 6f 72 20 69 73 73 75 65  stly minor issue
1e00: 73 2c 20 74 68 6f 75 67 68 20 74 68 65 0a 20 20  s, though the.  
1e10: 62 69 74 6d 61 70 20 66 69 78 20 69 73 20 63 72  bitmap fix is cr
1e20: 69 74 69 63 61 6c 20 66 6f 72 20 36 34 2d 62 69  itical for 64-bi
1e30: 74 20 57 69 6e 64 6f 77 73 2e 0a 0a 20 20 42 75  t Windows...  Bu
1e40: 67 20 66 69 78 65 73 3a 0a 20 20 2d 20 46 69 78  g fixes:.  - Fix
1e50: 20 74 68 65 20 6c 69 6e 65 61 72 20 73 63 61 6e   the linear scan
1e60: 20 76 65 72 73 69 6f 6e 20 6f 66 20 62 69 74 6d   version of bitm
1e70: 61 70 5f 73 66 75 28 29 20 74 6f 20 73 68 69 66  ap_sfu() to shif
1e80: 74 20 62 79 20 74 68 65 20 70 72 6f 70 65 72 20  t by the proper 
1e90: 61 6d 6f 75 6e 74 0a 20 20 20 20 65 76 65 6e 20  amount.    even 
1ea0: 77 68 65 6e 20 73 69 7a 65 6f 66 28 6c 6f 6e 67  when sizeof(long
1eb0: 29 20 69 73 20 6e 6f 74 20 74 68 65 20 73 61 6d  ) is not the sam
1ec0: 65 20 61 73 20 73 69 7a 65 6f 66 28 76 6f 69 64  e as sizeof(void
1ed0: 20 2a 29 2c 20 61 73 20 6f 6e 20 36 34 2d 62 69   *), as on 64-bi
1ee0: 74 0a 20 20 20 20 57 69 6e 64 6f 77 73 2e 20 20  t.    Windows.  
1ef0: 28 40 6a 61 73 6f 6e 65 29 0a 20 20 2d 20 46 69  (@jasone).  - Fi
1f00: 78 20 68 61 73 68 69 6e 67 20 66 75 6e 63 74 69  x hashing functi
1f10: 6f 6e 73 20 74 6f 20 61 76 6f 69 64 20 75 6e 61  ons to avoid una
1f20: 6c 69 67 6e 65 64 20 6d 65 6d 6f 72 79 20 61 63  ligned memory ac
1f30: 63 65 73 73 65 73 20 28 61 6e 64 20 72 65 73 75  cesses (and resu
1f40: 6c 74 69 6e 67 0a 20 20 20 20 63 72 61 73 68 65  lting.    crashe
1f50: 73 29 2e 20 20 54 68 69 73 20 69 73 20 72 65 6c  s).  This is rel
1f60: 65 76 61 6e 74 20 61 74 20 6c 65 61 73 74 20 74  evant at least t
1f70: 6f 20 73 6f 6d 65 20 41 52 4d 2d 62 61 73 65 64  o some ARM-based
1f80: 20 70 6c 61 74 66 6f 72 6d 73 2e 0a 20 20 20 20   platforms..    
1f90: 28 40 72 6b 6d 69 73 72 61 29 0a 20 20 2d 20 46  (@rkmisra).  - F
1fa0: 69 78 20 66 6f 72 6b 28 29 2d 72 65 6c 61 74 65  ix fork()-relate
1fb0: 64 20 6c 6f 63 6b 20 72 61 6e 6b 20 6f 72 64 65  d lock rank orde
1fc0: 72 69 6e 67 20 72 65 76 65 72 73 61 6c 73 2e 20  ring reversals. 
1fd0: 20 54 68 65 73 65 20 72 65 76 65 72 73 61 6c 73   These reversals
1fe0: 20 77 65 72 65 0a 20 20 20 20 75 6e 6c 69 6b 65   were.    unlike
1ff0: 6c 79 20 74 6f 20 63 61 75 73 65 20 64 65 61 64  ly to cause dead
2000: 6c 6f 63 6b 73 20 69 6e 20 70 72 61 63 74 69 63  locks in practic
2010: 65 20 65 78 63 65 70 74 20 77 68 65 6e 20 68 65  e except when he
2020: 61 70 20 70 72 6f 66 69 6c 69 6e 67 20 77 61 73  ap profiling was
2030: 0a 20 20 20 20 65 6e 61 62 6c 65 64 20 61 6e 64  .    enabled and
2040: 20 61 63 74 69 76 65 2e 20 20 28 40 6a 61 73 6f   active.  (@jaso
2050: 6e 65 29 0a 20 20 2d 20 46 69 78 20 76 61 72 69  ne).  - Fix vari
2060: 6f 75 73 20 63 68 75 6e 6b 20 6c 65 61 6b 73 20  ous chunk leaks 
2070: 69 6e 20 4f 4f 4d 20 63 6f 64 65 20 70 61 74 68  in OOM code path
2080: 73 2e 20 20 28 40 6a 61 73 6f 6e 65 29 0a 20 20  s.  (@jasone).  
2090: 2d 20 46 69 78 20 6d 61 6c 6c 6f 63 5f 73 74 61  - Fix malloc_sta
20a0: 74 73 5f 70 72 69 6e 74 28 29 20 74 6f 20 70 72  ts_print() to pr
20b0: 69 6e 74 20 6f 70 74 2e 6e 61 72 65 6e 61 73 20  int opt.narenas 
20c0: 63 6f 72 72 65 63 74 6c 79 2e 20 20 28 40 6a 61  correctly.  (@ja
20d0: 73 6f 6e 65 29 0a 20 20 2d 20 46 69 78 20 4d 53  sone).  - Fix MS
20e0: 56 43 2d 73 70 65 63 69 66 69 63 20 62 75 69 6c  VC-specific buil
20f0: 64 2f 74 65 73 74 20 69 73 73 75 65 73 2e 20 20  d/test issues.  
2100: 28 40 72 75 73 74 79 78 2c 20 40 79 75 73 6c 65  (@rustyx, @yusle
2110: 70 75 6b 68 69 6e 29 0a 20 20 2d 20 46 69 78 20  pukhin).  - Fix 
2120: 61 20 76 61 72 69 65 74 79 20 6f 66 20 74 65 73  a variety of tes
2130: 74 20 66 61 69 6c 75 72 65 73 20 74 68 61 74 20  t failures that 
2140: 77 65 72 65 20 64 75 65 20 74 6f 20 74 65 73 74  were due to test
2150: 20 66 72 61 67 69 6c 69 74 79 20 72 61 74 68 65   fragility rathe
2160: 72 20 74 68 61 6e 0a 20 20 20 20 63 6f 72 65 20  r than.    core 
2170: 62 75 67 73 2e 20 20 28 40 6a 61 73 6f 6e 65 29  bugs.  (@jasone)
2180: 0a 0a 2a 20 34 2e 31 2e 30 20 28 46 65 62 72 75  ..* 4.1.0 (Febru
2190: 61 72 79 20 32 38 2c 20 32 30 31 36 29 0a 0a 20  ary 28, 2016).. 
21a0: 20 54 68 69 73 20 72 65 6c 65 61 73 65 20 69 73   This release is
21b0: 20 70 72 69 6d 61 72 69 6c 79 20 61 62 6f 75 74   primarily about
21c0: 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 2c 20   optimizations, 
21d0: 62 75 74 20 69 74 20 61 6c 73 6f 20 69 6e 63 6f  but it also inco
21e0: 72 70 6f 72 61 74 65 73 20 61 20 6c 6f 74 0a 20  rporates a lot. 
21f0: 20 6f 66 20 70 6f 72 74 61 62 69 6c 69 74 79 2d   of portability-
2200: 6d 6f 74 69 76 61 74 65 64 20 72 65 66 61 63 74  motivated refact
2210: 6f 72 69 6e 67 20 61 6e 64 20 65 6e 68 61 6e 63  oring and enhanc
2220: 65 6d 65 6e 74 73 2e 20 20 4d 61 6e 79 20 70 65  ements.  Many pe
2230: 6f 70 6c 65 20 77 6f 72 6b 65 64 20 6f 6e 0a 20  ople worked on. 
2240: 20 74 68 69 73 20 72 65 6c 65 61 73 65 2c 20 74   this release, t
2250: 6f 20 61 6e 20 65 78 74 65 6e 74 20 74 68 61 74  o an extent that
2260: 20 65 76 65 6e 20 77 69 74 68 20 74 68 65 20 6f   even with the o
2270: 6d 69 73 73 69 6f 6e 20 68 65 72 65 20 6f 66 20  mission here of 
2280: 6d 69 6e 6f 72 20 63 68 61 6e 67 65 73 0a 20 20  minor changes.  
2290: 28 73 65 65 20 67 69 74 20 72 65 76 69 73 69 6f  (see git revisio
22a0: 6e 20 68 69 73 74 6f 72 79 29 2c 20 61 6e 64 20  n history), and 
22b0: 6f 66 20 74 68 65 20 70 65 6f 70 6c 65 20 77 68  of the people wh
22c0: 6f 20 72 65 70 6f 72 74 65 64 20 61 6e 64 20 64  o reported and d
22d0: 69 61 67 6e 6f 73 65 64 0a 20 20 69 73 73 75 65  iagnosed.  issue
22e0: 73 2c 20 73 6f 20 6d 75 63 68 20 6f 66 20 74 68  s, so much of th
22f0: 65 20 77 6f 72 6b 20 77 61 73 20 63 6f 6e 74 72  e work was contr
2300: 69 62 75 74 65 64 20 74 68 61 74 20 73 74 61 72  ibuted that star
2310: 74 69 6e 67 20 77 69 74 68 20 74 68 69 73 20 72  ting with this r
2320: 65 6c 65 61 73 65 2c 0a 20 20 63 68 61 6e 67 65  elease,.  change
2330: 73 20 61 72 65 20 61 6e 6e 6f 74 61 74 65 64 20  s are annotated 
2340: 77 69 74 68 20 61 75 74 68 6f 72 20 63 72 65 64  with author cred
2350: 69 74 73 20 74 6f 20 68 65 6c 70 20 72 65 66 6c  its to help refl
2360: 65 63 74 20 74 68 65 20 63 6f 6c 6c 61 62 6f 72  ect the collabor
2370: 61 74 69 76 65 0a 20 20 65 66 66 6f 72 74 20 69  ative.  effort i
2380: 6e 76 6f 6c 76 65 64 2e 0a 0a 20 20 4e 65 77 20  nvolved...  New 
2390: 66 65 61 74 75 72 65 73 3a 0a 20 20 2d 20 49 6d  features:.  - Im
23a0: 70 6c 65 6d 65 6e 74 20 64 65 63 61 79 2d 62 61  plement decay-ba
23b0: 73 65 64 20 75 6e 75 73 65 64 20 64 69 72 74 79  sed unused dirty
23c0: 20 70 61 67 65 20 70 75 72 67 69 6e 67 2c 20 61   page purging, a
23d0: 20 6d 61 6a 6f 72 20 6f 70 74 69 6d 69 7a 61 74   major optimizat
23e0: 69 6f 6e 20 77 69 74 68 0a 20 20 20 20 6d 61 6c  ion with.    mal
23f0: 6c 63 74 6c 20 41 50 49 20 69 6d 70 61 63 74 2e  lctl API impact.
2400: 20 20 54 68 69 73 20 69 73 20 61 6e 20 61 6c 74    This is an alt
2410: 65 72 6e 61 74 69 76 65 20 74 6f 20 74 68 65 20  ernative to the 
2420: 65 78 69 73 74 69 6e 67 20 72 61 74 69 6f 2d 62  existing ratio-b
2430: 61 73 65 64 0a 20 20 20 20 75 6e 75 73 65 64 20  ased.    unused 
2440: 64 69 72 74 79 20 70 61 67 65 20 70 75 72 67 69  dirty page purgi
2450: 6e 67 2c 20 61 6e 64 20 69 73 20 69 6e 74 65 6e  ng, and is inten
2460: 64 65 64 20 74 6f 20 65 76 65 6e 74 75 61 6c 6c  ded to eventuall
2470: 79 20 62 65 63 6f 6d 65 20 74 68 65 20 73 6f 6c  y become the sol
2480: 65 0a 20 20 20 20 70 75 72 67 69 6e 67 20 6d 65  e.    purging me
2490: 63 68 61 6e 69 73 6d 2e 20 20 4e 65 77 20 6d 61  chanism.  New ma
24a0: 6c 6c 63 74 6c 73 3a 0a 20 20 20 20 2b 20 6f 70  llctls:.    + op
24b0: 74 2e 70 75 72 67 65 0a 20 20 20 20 2b 20 6f 70  t.purge.    + op
24c0: 74 2e 64 65 63 61 79 5f 74 69 6d 65 0a 20 20 20  t.decay_time.   
24d0: 20 2b 20 61 72 65 6e 61 2e 3c 69 3e 2e 64 65 63   + arena.<i>.dec
24e0: 61 79 0a 20 20 20 20 2b 20 61 72 65 6e 61 2e 3c  ay.    + arena.<
24f0: 69 3e 2e 64 65 63 61 79 5f 74 69 6d 65 0a 20 20  i>.decay_time.  
2500: 20 20 2b 20 61 72 65 6e 61 73 2e 64 65 63 61 79    + arenas.decay
2510: 5f 74 69 6d 65 0a 20 20 20 20 2b 20 73 74 61 74  _time.    + stat
2520: 73 2e 61 72 65 6e 61 73 2e 3c 69 3e 2e 64 65 63  s.arenas.<i>.dec
2530: 61 79 5f 74 69 6d 65 0a 20 20 20 20 28 40 6a 61  ay_time.    (@ja
2540: 73 6f 6e 65 2c 20 40 63 65 76 61 6e 73 38 37 29  sone, @cevans87)
2550: 0a 20 20 2d 20 41 64 64 20 2d 2d 77 69 74 68 2d  .  - Add --with-
2560: 6d 61 6c 6c 6f 63 2d 63 6f 6e 66 2c 20 77 68 69  malloc-conf, whi
2570: 63 68 20 6d 61 6b 65 73 20 69 74 20 70 6f 73 73  ch makes it poss
2580: 69 62 6c 65 20 74 6f 20 65 6d 62 65 64 20 61 20  ible to embed a 
2590: 64 65 66 61 75 6c 74 0a 20 20 20 20 6f 70 74 69  default.    opti
25a0: 6f 6e 73 20 73 74 72 69 6e 67 20 64 75 72 69 6e  ons string durin
25b0: 67 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e  g configuration.
25c0: 20 20 54 68 69 73 20 77 61 73 20 6d 6f 74 69 76    This was motiv
25d0: 61 74 65 64 20 62 79 20 74 68 65 20 64 65 73 69  ated by the desi
25e0: 72 65 20 74 6f 0a 20 20 20 20 73 70 65 63 69 66  re to.    specif
25f0: 79 20 2d 2d 77 69 74 68 2d 6d 61 6c 6c 6f 63 2d  y --with-malloc-
2600: 63 6f 6e 66 3d 70 75 72 67 65 3a 64 65 63 61 79  conf=purge:decay
2610: 20 2c 20 73 69 6e 63 65 20 74 68 65 20 64 65 66   , since the def
2620: 61 75 6c 74 20 6d 75 73 74 20 72 65 6d 61 69 6e  ault must remain
2630: 0a 20 20 20 20 70 75 72 67 65 3a 72 61 74 69 6f  .    purge:ratio
2640: 20 75 6e 74 69 6c 20 74 68 65 20 35 2e 30 2e 30   until the 5.0.0
2650: 20 72 65 6c 65 61 73 65 2e 20 20 28 40 6a 61 73   release.  (@jas
2660: 6f 6e 65 29 0a 20 20 2d 20 41 64 64 20 4d 53 20  one).  - Add MS 
2670: 56 69 73 75 61 6c 20 53 74 75 64 69 6f 20 32 30  Visual Studio 20
2680: 31 35 20 73 75 70 70 6f 72 74 2e 20 20 28 40 72  15 support.  (@r
2690: 75 73 74 79 78 2c 20 40 79 75 73 6c 65 70 75 6b  ustyx, @yuslepuk
26a0: 68 69 6e 29 0a 20 20 2d 20 4d 61 6b 65 20 2a 61  hin).  - Make *a
26b0: 6c 6c 6f 63 78 28 29 20 73 69 7a 65 20 63 6c 61  llocx() size cla
26c0: 73 73 20 6f 76 65 72 66 6c 6f 77 20 62 65 68 61  ss overflow beha
26d0: 76 69 6f 72 20 64 65 66 69 6e 65 64 2e 20 20 54  vior defined.  T
26e0: 68 65 20 6d 61 78 69 6d 75 6d 0a 20 20 20 20 73  he maximum.    s
26f0: 69 7a 65 20 63 6c 61 73 73 20 69 73 20 6e 6f 77  ize class is now
2700: 20 6c 65 73 73 20 74 68 61 6e 20 50 54 52 44 49   less than PTRDI
2710: 46 46 5f 4d 41 58 20 74 6f 20 70 72 6f 74 65 63  FF_MAX to protec
2720: 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 61  t applications a
2730: 67 61 69 6e 73 74 0a 20 20 20 20 6e 75 6d 65 72  gainst.    numer
2740: 69 63 61 6c 20 6f 76 65 72 66 6c 6f 77 2c 20 61  ical overflow, a
2750: 6e 64 20 61 6c 6c 20 61 6c 6c 6f 63 61 74 69 6f  nd all allocatio
2760: 6e 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20  n functions are 
2770: 67 75 61 72 61 6e 74 65 65 64 20 74 6f 20 69 6e  guaranteed to in
2780: 64 69 63 61 74 65 0a 20 20 20 20 65 72 72 6f 72  dicate.    error
2790: 73 20 72 61 74 68 65 72 20 74 68 61 6e 20 70 6f  s rather than po
27a0: 74 65 6e 74 69 61 6c 6c 79 20 63 72 61 73 68 69  tentially crashi
27b0: 6e 67 20 69 66 20 74 68 65 20 72 65 71 75 65 73  ng if the reques
27c0: 74 20 73 69 7a 65 20 65 78 63 65 65 64 73 20 74  t size exceeds t
27d0: 68 65 0a 20 20 20 20 6d 61 78 69 6d 75 6d 20 73  he.    maximum s
27e0: 69 7a 65 20 63 6c 61 73 73 2e 20 20 28 40 6a 61  ize class.  (@ja
27f0: 73 6f 6e 65 29 0a 20 20 2d 20 6a 65 70 72 6f 66  sone).  - jeprof
2800: 3a 0a 20 20 20 20 2b 20 41 64 64 20 72 61 77 20  :.    + Add raw 
2810: 68 65 61 70 20 70 72 6f 66 69 6c 65 20 73 75 70  heap profile sup
2820: 70 6f 72 74 2e 20 20 28 40 6a 61 73 6f 6e 65 29  port.  (@jasone)
2830: 0a 20 20 20 20 2b 20 41 64 64 20 2d 2d 72 65 74  .    + Add --ret
2840: 61 69 6e 20 61 6e 64 20 2d 2d 65 78 63 6c 75 64  ain and --exclud
2850: 65 20 66 6f 72 20 62 61 63 6b 74 72 61 63 65 20  e for backtrace 
2860: 73 79 6d 62 6f 6c 20 66 69 6c 74 65 72 69 6e 67  symbol filtering
2870: 2e 20 20 28 40 6a 61 73 6f 6e 65 29 0a 0a 20 20  .  (@jasone)..  
2880: 4f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 3a 0a 20  Optimizations:. 
2890: 20 2d 20 4f 70 74 69 6d 69 7a 65 20 74 68 65 20   - Optimize the 
28a0: 66 61 73 74 20 70 61 74 68 20 74 6f 20 63 6f 6d  fast path to com
28b0: 62 69 6e 65 20 76 61 72 69 6f 75 73 20 62 6f 6f  bine various boo
28c0: 74 73 74 72 61 70 70 69 6e 67 20 61 6e 64 20 63  tstrapping and c
28d0: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 20 20 20  onfiguration.   
28e0: 20 63 68 65 63 6b 73 20 61 6e 64 20 65 78 65 63   checks and exec
28f0: 75 74 65 20 6d 6f 72 65 20 73 74 72 65 61 6d 6c  ute more streaml
2900: 69 6e 65 64 20 63 6f 64 65 20 69 6e 20 74 68 65  ined code in the
2910: 20 63 6f 6d 6d 6f 6e 20 63 61 73 65 2e 20 20 28   common case.  (
2920: 40 69 6e 74 65 72 77 71 29 0a 20 20 2d 20 55 73  @interwq).  - Us
2930: 65 20 6c 69 6e 65 61 72 20 73 63 61 6e 20 66 6f  e linear scan fo
2940: 72 20 73 6d 61 6c 6c 20 62 69 74 6d 61 70 73 20  r small bitmaps 
2950: 28 75 73 65 64 20 66 6f 72 20 73 6d 61 6c 6c 20  (used for small 
2960: 6f 62 6a 65 63 74 20 74 72 61 63 6b 69 6e 67 29  object tracking)
2970: 2e 20 20 49 6e 0a 20 20 20 20 61 64 64 69 74 69  .  In.    additi
2980: 6f 6e 20 74 6f 20 73 70 65 65 64 69 6e 67 20 75  on to speeding u
2990: 70 20 62 69 74 6d 61 70 20 6f 70 65 72 61 74 69  p bitmap operati
29a0: 6f 6e 73 20 6f 6e 20 36 34 2d 62 69 74 20 73 79  ons on 64-bit sy
29b0: 73 74 65 6d 73 2c 20 74 68 69 73 20 72 65 64 75  stems, this redu
29c0: 63 65 73 0a 20 20 20 20 61 6c 6c 6f 63 61 74 6f  ces.    allocato
29d0: 72 20 6d 65 74 61 64 61 74 61 20 6f 76 65 72 68  r metadata overh
29e0: 65 61 64 20 62 79 20 61 70 70 72 6f 78 69 6d 61  ead by approxima
29f0: 74 65 6c 79 20 30 2e 32 25 2e 20 20 28 40 64 6a  tely 0.2%.  (@dj
2a00: 77 61 74 73 6f 6e 29 0a 20 20 2d 20 53 65 70 61  watson).  - Sepa
2a10: 72 61 74 65 20 61 72 65 6e 61 5f 61 76 61 69 6c  rate arena_avail
2a20: 20 74 72 65 65 73 2c 20 77 68 69 63 68 20 73 75   trees, which su
2a30: 62 73 74 61 6e 74 69 61 6c 6c 79 20 73 70 65 65  bstantially spee
2a40: 64 73 20 75 70 20 72 75 6e 20 74 72 65 65 0a 20  ds up run tree. 
2a50: 20 20 20 6f 70 65 72 61 74 69 6f 6e 73 2e 20 20     operations.  
2a60: 28 40 64 6a 77 61 74 73 6f 6e 29 0a 20 20 2d 20  (@djwatson).  - 
2a70: 55 73 65 20 6d 65 6d 6f 69 7a 61 74 69 6f 6e 20  Use memoization 
2a80: 28 62 6f 6f 74 2d 74 69 6d 65 2d 63 6f 6d 70 75  (boot-time-compu
2a90: 74 65 64 20 74 61 62 6c 65 29 20 66 6f 72 20 72  ted table) for r
2aa0: 75 6e 20 71 75 61 6e 74 69 7a 61 74 69 6f 6e 2e  un quantization.
2ab0: 20 20 53 65 70 61 72 61 74 65 0a 20 20 20 20 61    Separate.    a
2ac0: 72 65 6e 61 5f 61 76 61 69 6c 20 74 72 65 65 73  rena_avail trees
2ad0: 20 72 65 64 75 63 65 64 20 74 68 65 20 69 6d 70   reduced the imp
2ae0: 6f 72 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  ortance of this 
2af0: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 2e 20 20 28  optimization.  (
2b00: 40 6a 61 73 6f 6e 65 29 0a 20 20 2d 20 41 74 74  @jasone).  - Att
2b10: 65 6d 70 74 20 6d 6d 61 70 2d 62 61 73 65 64 20  empt mmap-based 
2b20: 69 6e 2d 70 6c 61 63 65 20 68 75 67 65 20 72 65  in-place huge re
2b30: 61 6c 6c 6f 63 61 74 69 6f 6e 2e 20 20 54 68 69  allocation.  Thi
2b40: 73 20 63 61 6e 20 64 72 61 6d 61 74 69 63 61 6c  s can dramatical
2b50: 6c 79 20 73 70 65 65 64 0a 20 20 20 20 75 70 20  ly speed.    up 
2b60: 69 6e 63 72 65 6d 65 6e 74 61 6c 20 68 75 67 65  incremental huge
2b70: 20 72 65 61 6c 6c 6f 63 61 74 69 6f 6e 2e 20 20   reallocation.  
2b80: 28 40 6a 61 73 6f 6e 65 29 0a 0a 20 20 49 6e 63  (@jasone)..  Inc
2b90: 6f 6d 70 61 74 69 62 6c 65 20 63 68 61 6e 67 65  ompatible change
2ba0: 73 3a 0a 20 20 2d 20 4d 61 6b 65 20 6f 70 74 2e  s:.  - Make opt.
2bb0: 6e 61 72 65 6e 61 73 20 75 6e 73 69 67 6e 65 64  narenas unsigned
2bc0: 20 72 61 74 68 65 72 20 74 68 61 6e 20 73 69 7a   rather than siz
2bd0: 65 5f 74 2e 20 20 28 40 6a 61 73 6f 6e 65 29 0a  e_t.  (@jasone).
2be0: 0a 20 20 42 75 67 20 66 69 78 65 73 3a 0a 20 20  .  Bug fixes:.  
2bf0: 2d 20 46 69 78 20 73 74 61 74 73 2e 63 61 63 74  - Fix stats.cact
2c00: 69 76 65 20 61 63 63 6f 75 6e 74 69 6e 67 20 72  ive accounting r
2c10: 65 67 72 65 73 73 69 6f 6e 2e 20 20 28 40 72 75  egression.  (@ru
2c20: 73 74 79 78 2c 20 40 6a 61 73 6f 6e 65 29 0a 20  styx, @jasone). 
2c30: 20 2d 20 48 61 6e 64 6c 65 20 75 6e 61 6c 69 67   - Handle unalig
2c40: 6e 65 64 20 6b 65 79 73 20 69 6e 20 68 61 73 68  ned keys in hash
2c50: 28 29 2e 20 20 54 68 69 73 20 63 61 75 73 65 64  ().  This caused
2c60: 20 70 72 6f 62 6c 65 6d 73 20 66 6f 72 20 73 6f   problems for so
2c70: 6d 65 20 41 52 4d 20 73 79 73 74 65 6d 73 2e 0a  me ARM systems..
2c80: 20 20 20 20 28 40 6a 61 73 6f 6e 65 2c 20 40 63      (@jasone, @c
2c90: 66 65 72 72 69 73 31 30 30 30 29 0a 20 20 2d 20  ferris1000).  - 
2ca0: 52 65 66 61 63 74 6f 72 20 61 72 65 6e 61 73 20  Refactor arenas 
2cb0: 61 72 72 61 79 2e 20 20 49 6e 20 61 64 64 69 74  array.  In addit
2cc0: 69 6f 6e 20 74 6f 20 66 69 78 69 6e 67 20 61 20  ion to fixing a 
2cd0: 66 6f 72 6b 2d 72 65 6c 61 74 65 64 20 64 65 61  fork-related dea
2ce0: 64 6c 6f 63 6b 2c 20 74 68 69 73 0a 20 20 20 20  dlock, this.    
2cf0: 6d 61 6b 65 73 20 61 72 65 6e 61 20 6c 6f 6f 6b  makes arena look
2d00: 75 70 73 20 66 61 73 74 65 72 20 61 6e 64 20 73  ups faster and s
2d10: 69 6d 70 6c 65 72 2e 20 20 28 40 6a 61 73 6f 6e  impler.  (@jason
2d20: 65 29 0a 20 20 2d 20 4d 6f 76 65 20 72 65 74 61  e).  - Move reta
2d30: 69 6e 65 64 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  ined memory allo
2d40: 63 61 74 69 6f 6e 20 6f 75 74 20 6f 66 20 74 68  cation out of th
2d50: 65 20 64 65 66 61 75 6c 74 20 63 68 75 6e 6b 20  e default chunk 
2d60: 61 6c 6c 6f 63 61 74 69 6f 6e 0a 20 20 20 20 66  allocation.    f
2d70: 75 6e 63 74 69 6f 6e 2c 20 74 6f 20 61 20 6c 6f  unction, to a lo
2d80: 63 61 74 69 6f 6e 20 74 68 61 74 20 67 65 74 73  cation that gets
2d90: 20 65 78 65 63 75 74 65 64 20 65 76 65 6e 20 69   executed even i
2da0: 66 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f  f the applicatio
2db0: 6e 20 69 6e 73 74 61 6c 6c 73 0a 20 20 20 20 61  n installs.    a
2dc0: 20 63 75 73 74 6f 6d 20 63 68 75 6e 6b 20 61 6c   custom chunk al
2dd0: 6c 6f 63 61 74 69 6f 6e 20 66 75 6e 63 74 69 6f  location functio
2de0: 6e 2e 20 20 54 68 69 73 20 72 65 73 6f 6c 76 65  n.  This resolve
2df0: 73 20 61 20 76 69 72 74 75 61 6c 20 6d 65 6d 6f  s a virtual memo
2e00: 72 79 20 6c 65 61 6b 2e 0a 20 20 20 20 28 40 62  ry leak..    (@b
2e10: 75 63 68 67 72 29 0a 20 20 2d 20 46 69 78 20 61  uchgr).  - Fix a
2e20: 20 70 6f 74 65 6e 74 69 61 6c 20 74 73 64 20 63   potential tsd c
2e30: 6c 65 61 6e 75 70 20 6c 65 61 6b 2e 20 20 28 40  leanup leak.  (@
2e40: 63 66 65 72 72 69 73 31 30 30 30 2c 20 40 6a 61  cferris1000, @ja
2e50: 73 6f 6e 65 29 0a 20 20 2d 20 46 69 78 20 72 75  sone).  - Fix ru
2e60: 6e 20 71 75 61 6e 74 69 7a 61 74 69 6f 6e 2e 20  n quantization. 
2e70: 20 49 6e 20 70 72 61 63 74 69 63 65 20 74 68 69   In practice thi
2e80: 73 20 62 75 67 20 68 61 64 20 6e 6f 20 69 6d 70  s bug had no imp
2e90: 61 63 74 20 75 6e 6c 65 73 73 0a 20 20 20 20 61  act unless.    a
2ea0: 70 70 6c 69 63 61 74 69 6f 6e 73 20 72 65 71 75  pplications requ
2eb0: 65 73 74 65 64 20 6d 65 6d 6f 72 79 20 77 69 74  ested memory wit
2ec0: 68 20 61 6c 69 67 6e 6d 65 6e 74 20 65 78 63 65  h alignment exce
2ed0: 65 64 69 6e 67 20 6f 6e 65 20 70 61 67 65 2e 0a  eding one page..
2ee0: 20 20 20 20 28 40 6a 61 73 6f 6e 65 2c 20 40 64      (@jasone, @d
2ef0: 6a 77 61 74 73 6f 6e 29 0a 20 20 2d 20 46 69 78  jwatson).  - Fix
2f00: 20 4c 69 6e 75 78 54 68 72 65 61 64 73 2d 73 70   LinuxThreads-sp
2f10: 65 63 69 66 69 63 20 62 6f 6f 74 73 74 72 61 70  ecific bootstrap
2f20: 70 69 6e 67 20 64 65 61 64 6c 6f 63 6b 2e 20 20  ping deadlock.  
2f30: 28 43 6f 73 6d 69 6e 20 50 61 72 61 73 63 68 69  (Cosmin Paraschi
2f40: 76 29 0a 20 20 2d 20 6a 65 70 72 6f 66 3a 0a 20  v).  - jeprof:. 
2f50: 20 20 20 2b 20 44 6f 6e 27 74 20 64 69 73 63 61     + Don't disca
2f60: 72 64 20 63 75 72 6c 20 6f 70 74 69 6f 6e 73 20  rd curl options 
2f70: 69 66 20 74 69 6d 65 6f 75 74 20 69 73 20 6e 6f  if timeout is no
2f80: 74 20 64 65 66 69 6e 65 64 2e 20 20 28 40 64 6a  t defined.  (@dj
2f90: 77 61 74 73 6f 6e 29 0a 20 20 20 20 2b 20 44 65  watson).    + De
2fa0: 74 65 63 74 20 66 61 69 6c 65 64 20 70 72 6f 66  tect failed prof
2fb0: 69 6c 65 20 66 65 74 63 68 65 73 2e 20 20 28 40  ile fetches.  (@
2fc0: 64 6a 77 61 74 73 6f 6e 29 0a 20 20 2d 20 46 69  djwatson).  - Fi
2fd0: 78 20 73 74 61 74 73 2e 61 72 65 6e 61 73 2e 3c  x stats.arenas.<
2fe0: 69 3e 2e 7b 64 73 73 2c 6c 67 5f 64 69 72 74 79  i>.{dss,lg_dirty
2ff0: 5f 6d 75 6c 74 2c 64 65 63 61 79 5f 74 69 6d 65  _mult,decay_time
3000: 2c 70 61 63 74 69 76 65 2c 70 64 69 72 74 79 7d  ,pactive,pdirty}
3010: 20 66 6f 72 0a 20 20 20 20 2d 2d 64 69 73 61 62   for.    --disab
3020: 6c 65 2d 73 74 61 74 73 20 63 61 73 65 2e 20 20  le-stats case.  
3030: 28 40 6a 61 73 6f 6e 65 29 0a 0a 2a 20 34 2e 30  (@jasone)..* 4.0
3040: 2e 34 20 28 4f 63 74 6f 62 65 72 20 32 34 2c 20  .4 (October 24, 
3050: 32 30 31 35 29 0a 0a 20 20 54 68 69 73 20 62 75  2015)..  This bu
3060: 67 66 69 78 20 72 65 6c 65 61 73 65 20 66 69 78  gfix release fix
3070: 65 73 20 61 6e 6f 74 68 65 72 20 78 61 6c 6c 6f  es another xallo
3080: 63 78 28 29 20 72 65 67 72 65 73 73 69 6f 6e 2e  cx() regression.
3090: 20 20 4e 6f 20 6f 74 68 65 72 20 72 65 67 72 65    No other regre
30a0: 73 73 69 6f 6e 73 0a 20 20 68 61 76 65 20 63 6f  ssions.  have co
30b0: 6d 65 20 74 6f 20 6c 69 67 68 74 20 69 6e 20 6f  me to light in o
30c0: 76 65 72 20 61 20 6d 6f 6e 74 68 2c 20 73 6f 20  ver a month, so 
30d0: 74 68 69 73 20 69 73 20 6c 69 6b 65 6c 79 20 61  this is likely a
30e0: 20 67 6f 6f 64 20 73 74 61 72 74 69 6e 67 20 70   good starting p
30f0: 6f 69 6e 74 0a 20 20 66 6f 72 20 70 65 6f 70 6c  oint.  for peopl
3100: 65 20 77 68 6f 20 70 72 65 66 65 72 20 74 6f 20  e who prefer to 
3110: 77 61 69 74 20 66 6f 72 20 22 64 6f 74 20 6f 6e  wait for "dot on
3120: 65 22 20 72 65 6c 65 61 73 65 73 20 77 69 74 68  e" releases with
3130: 20 61 6c 6c 20 74 68 65 20 6d 61 6a 6f 72 20 69   all the major i
3140: 73 73 75 65 73 0a 20 20 73 68 61 6b 65 6e 20 6f  ssues.  shaken o
3150: 75 74 2e 0a 0a 20 20 42 75 67 20 66 69 78 65 73  ut...  Bug fixes
3160: 3a 0a 20 20 2d 20 46 69 78 20 78 61 6c 6c 6f 63  :.  - Fix xalloc
3170: 78 28 2e 2e 2e 2c 20 4d 41 4c 4c 4f 43 58 5f 5a  x(..., MALLOCX_Z
3180: 45 52 4f 20 74 6f 20 7a 65 72 6f 20 74 68 65 20  ERO to zero the 
3190: 6c 61 73 74 20 66 75 6c 6c 20 74 72 61 69 6c 69  last full traili
31a0: 6e 67 20 70 61 67 65 20 6f 66 20 6c 61 72 67 65  ng page of large
31b0: 0a 20 20 20 20 61 6c 6c 6f 63 61 74 69 6f 6e 73  .    allocations
31c0: 20 74 68 61 74 20 68 61 76 65 20 62 65 65 6e 20   that have been 
31d0: 72 61 6e 64 6f 6d 6c 79 20 61 73 73 69 67 6e 65  randomly assigne
31e0: 64 20 61 6e 20 6f 66 66 73 65 74 20 6f 66 20 30  d an offset of 0
31f0: 20 77 68 65 6e 0a 20 20 20 20 2d 2d 65 6e 61 62   when.    --enab
3200: 6c 65 2d 63 61 63 68 65 2d 6f 62 6c 69 76 69 6f  le-cache-oblivio
3210: 75 73 20 63 6f 6e 66 69 67 75 72 65 20 6f 70 74  us configure opt
3220: 69 6f 6e 20 69 73 20 65 6e 61 62 6c 65 64 2e 0a  ion is enabled..
3230: 0a 2a 20 34 2e 30 2e 33 20 28 53 65 70 74 65 6d  .* 4.0.3 (Septem
3240: 62 65 72 20 32 34 2c 20 32 30 31 35 29 0a 0a 20  ber 24, 2015).. 
3250: 20 54 68 69 73 20 62 75 67 66 69 78 20 72 65 6c   This bugfix rel
3260: 65 61 73 65 20 63 6f 6e 74 69 6e 75 65 73 20 74  ease continues t
3270: 68 65 20 74 72 65 6e 64 20 6f 66 20 78 61 6c 6c  he trend of xall
3280: 6f 63 78 28 29 20 61 6e 64 20 68 65 61 70 20 70  ocx() and heap p
3290: 72 6f 66 69 6c 69 6e 67 20 66 69 78 65 73 2e 0a  rofiling fixes..
32a0: 0a 20 20 42 75 67 20 66 69 78 65 73 3a 0a 20 20  .  Bug fixes:.  
32b0: 2d 20 46 69 78 20 78 61 6c 6c 6f 63 78 28 2e 2e  - Fix xallocx(..
32c0: 2e 2c 20 4d 41 4c 4c 4f 43 58 5f 5a 45 52 4f 29  ., MALLOCX_ZERO)
32d0: 20 74 6f 20 7a 65 72 6f 20 61 6c 6c 20 74 72 61   to zero all tra
32e0: 69 6c 69 6e 67 20 62 79 74 65 73 20 6f 66 20 6c  iling bytes of l
32f0: 61 72 67 65 0a 20 20 20 20 61 6c 6c 6f 63 61 74  arge.    allocat
3300: 69 6f 6e 73 20 77 68 65 6e 20 2d 2d 65 6e 61 62  ions when --enab
3310: 6c 65 2d 63 61 63 68 65 2d 6f 62 6c 69 76 69 6f  le-cache-oblivio
3320: 75 73 20 63 6f 6e 66 69 67 75 72 65 20 6f 70 74  us configure opt
3330: 69 6f 6e 20 69 73 20 65 6e 61 62 6c 65 64 2e 0a  ion is enabled..
3340: 20 20 2d 20 46 69 78 20 78 61 6c 6c 6f 63 78 28    - Fix xallocx(
3350: 2e 2e 2e 2c 20 4d 41 4c 4c 4f 43 58 5f 5a 45 52  ..., MALLOCX_ZER
3360: 4f 29 20 74 6f 20 7a 65 72 6f 20 74 72 61 69 6c  O) to zero trail
3370: 69 6e 67 20 62 79 74 65 73 20 6f 66 20 68 75 67  ing bytes of hug
3380: 65 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 0a 20 20  e allocations.  
3390: 20 20 77 68 65 6e 20 72 65 73 69 7a 69 6e 67 20    when resizing 
33a0: 66 72 6f 6d 2f 74 6f 20 61 20 73 69 7a 65 20 63  from/to a size c
33b0: 6c 61 73 73 20 74 68 61 74 20 69 73 20 6e 6f 74  lass that is not
33c0: 20 61 20 6d 75 6c 74 69 70 6c 65 20 6f 66 20 74   a multiple of t
33d0: 68 65 20 63 68 75 6e 6b 20 73 69 7a 65 2e 0a 20  he chunk size.. 
33e0: 20 2d 20 46 69 78 20 70 72 6f 66 5f 74 63 74 78   - Fix prof_tctx
33f0: 5f 64 75 6d 70 5f 69 74 65 72 28 29 20 74 6f 20  _dump_iter() to 
3400: 66 69 6c 74 65 72 20 6f 75 74 20 6e 6f 64 65 73  filter out nodes
3410: 20 74 68 61 74 20 77 65 72 65 20 63 72 65 61 74   that were creat
3420: 65 64 20 61 66 74 65 72 20 68 65 61 70 0a 20 20  ed after heap.  
3430: 20 20 70 72 6f 66 69 6c 65 20 64 75 6d 70 69 6e    profile dumpin
3440: 67 20 73 74 61 72 74 65 64 2e 0a 20 20 2d 20 57  g started..  - W
3450: 6f 72 6b 20 61 72 6f 75 6e 64 20 61 20 70 6f 74  ork around a pot
3460: 65 6e 74 69 61 6c 6c 79 20 62 61 64 20 74 68 72  entially bad thr
3470: 65 61 64 2d 73 70 65 63 69 66 69 63 20 64 61 74  ead-specific dat
3480: 61 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e  a initialization
3490: 0a 20 20 20 20 69 6e 74 65 72 61 63 74 69 6f 6e  .    interaction
34a0: 20 77 69 74 68 20 4e 50 54 4c 20 28 67 6c 69 62   with NPTL (glib
34b0: 63 27 73 20 70 74 68 72 65 61 64 73 20 69 6d 70  c's pthreads imp
34c0: 6c 65 6d 65 6e 74 61 74 69 6f 6e 29 2e 0a 0a 2a  lementation)...*
34d0: 20 34 2e 30 2e 32 20 28 53 65 70 74 65 6d 62 65   4.0.2 (Septembe
34e0: 72 20 32 31 2c 20 32 30 31 35 29 0a 0a 20 20 54  r 21, 2015)..  T
34f0: 68 69 73 20 62 75 67 66 69 78 20 72 65 6c 65 61  his bugfix relea
3500: 73 65 20 61 64 64 72 65 73 73 65 73 20 61 20 66  se addresses a f
3510: 65 77 20 62 75 67 73 20 73 70 65 63 69 66 69 63  ew bugs specific
3520: 20 74 6f 20 68 65 61 70 20 70 72 6f 66 69 6c 69   to heap profili
3530: 6e 67 2e 0a 0a 20 20 42 75 67 20 66 69 78 65 73  ng...  Bug fixes
3540: 3a 0a 20 20 2d 20 46 69 78 20 69 78 61 6c 6c 6f  :.  - Fix ixallo
3550: 63 78 5f 70 72 6f 66 5f 73 61 6d 70 6c 65 28 29  cx_prof_sample()
3560: 20 74 6f 20 6e 65 76 65 72 20 6d 6f 64 69 66 79   to never modify
3570: 20 6e 6f 72 20 63 72 65 61 74 65 20 73 61 6d 70   nor create samp
3580: 6c 65 64 20 73 6d 61 6c 6c 0a 20 20 20 20 61 6c  led small.    al
3590: 6c 6f 63 61 74 69 6f 6e 73 2e 20 20 78 61 6c 6c  locations.  xall
35a0: 6f 63 78 28 29 20 69 73 20 69 6e 20 67 65 6e 65  ocx() is in gene
35b0: 72 61 6c 20 69 6e 63 61 70 61 62 6c 65 20 6f 66  ral incapable of
35c0: 20 6d 6f 76 69 6e 67 20 73 6d 61 6c 6c 20 61 6c   moving small al
35d0: 6c 6f 63 61 74 69 6f 6e 73 2c 0a 20 20 20 20 73  locations,.    s
35e0: 6f 20 74 68 69 73 20 66 69 78 20 72 65 6d 6f 76  o this fix remov
35f0: 65 73 20 62 75 67 67 79 20 63 6f 64 65 20 77 69  es buggy code wi
3600: 74 68 6f 75 74 20 6c 6f 73 73 20 6f 66 20 67 65  thout loss of ge
3610: 6e 65 72 61 6c 69 74 79 2e 0a 20 20 2d 20 46 69  nerality..  - Fi
3620: 78 20 69 72 61 6c 6c 6f 63 78 5f 70 72 6f 66 5f  x irallocx_prof_
3630: 73 61 6d 70 6c 65 28 29 20 74 6f 20 61 6c 77 61  sample() to alwa
3640: 79 73 20 61 6c 6c 6f 63 61 74 65 20 6c 61 72 67  ys allocate larg
3650: 65 20 72 65 67 69 6f 6e 73 2c 20 65 76 65 6e 20  e regions, even 
3660: 77 68 65 6e 0a 20 20 20 20 61 6c 69 67 6e 6d 65  when.    alignme
3670: 6e 74 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2e 0a  nt is non-zero..
3680: 20 20 2d 20 46 69 78 20 70 72 6f 66 5f 61 6c 6c    - Fix prof_all
3690: 6f 63 5f 72 6f 6c 6c 62 61 63 6b 28 29 20 74 6f  oc_rollback() to
36a0: 20 72 65 61 64 20 74 64 61 74 61 20 66 72 6f 6d   read tdata from
36b0: 20 74 68 72 65 61 64 2d 73 70 65 63 69 66 69 63   thread-specific
36c0: 20 64 61 74 61 20 72 61 74 68 65 72 0a 20 20 20   data rather.   
36d0: 20 74 68 61 6e 20 64 65 72 65 66 65 72 65 6e 63   than dereferenc
36e0: 69 6e 67 20 61 20 70 6f 74 65 6e 74 69 61 6c 6c  ing a potentiall
36f0: 79 20 69 6e 76 61 6c 69 64 20 74 63 74 78 2e 0a  y invalid tctx..
3700: 0a 2a 20 34 2e 30 2e 31 20 28 53 65 70 74 65 6d  .* 4.0.1 (Septem
3710: 62 65 72 20 31 35 2c 20 32 30 31 35 29 0a 0a 20  ber 15, 2015).. 
3720: 20 54 68 69 73 20 69 73 20 61 20 62 75 67 66 69   This is a bugfi
3730: 78 20 72 65 6c 65 61 73 65 20 74 68 61 74 20 69  x release that i
3740: 73 20 73 6f 6d 65 77 68 61 74 20 68 69 67 68 20  s somewhat high 
3750: 72 69 73 6b 20 64 75 65 20 74 6f 20 74 68 65 20  risk due to the 
3760: 61 6d 6f 75 6e 74 20 6f 66 0a 20 20 72 65 66 61  amount of.  refa
3770: 63 74 6f 72 69 6e 67 20 72 65 71 75 69 72 65 64  ctoring required
3780: 20 74 6f 20 61 64 64 72 65 73 73 20 64 65 65 70   to address deep
3790: 20 78 61 6c 6c 6f 63 78 28 29 20 70 72 6f 62 6c   xallocx() probl
37a0: 65 6d 73 2e 20 20 41 73 20 61 20 73 69 64 65 20  ems.  As a side 
37b0: 65 66 66 65 63 74 20 6f 66 0a 20 20 74 68 65 73  effect of.  thes
37c0: 65 20 66 69 78 65 73 2c 20 78 61 6c 6c 6f 63 78  e fixes, xallocx
37d0: 28 29 20 6e 6f 77 20 74 72 69 65 73 20 68 61 72  () now tries har
37e0: 64 65 72 20 74 6f 20 70 61 72 74 69 61 6c 6c 79  der to partially
37f0: 20 66 75 6c 66 69 6c 6c 20 72 65 71 75 65 73 74   fulfill request
3800: 73 20 66 6f 72 0a 20 20 6f 70 74 69 6f 6e 61 6c  s for.  optional
3810: 20 65 78 74 72 61 20 73 70 61 63 65 2e 20 20 4e   extra space.  N
3820: 6f 74 65 20 74 68 61 74 20 61 20 63 6f 75 70 6c  ote that a coupl
3830: 65 20 6f 66 20 6d 69 6e 6f 72 20 68 65 61 70 20  e of minor heap 
3840: 70 72 6f 66 69 6c 69 6e 67 0a 20 20 6f 70 74 69  profiling.  opti
3850: 6d 69 7a 61 74 69 6f 6e 73 20 61 72 65 20 69 6e  mizations are in
3860: 63 6c 75 64 65 64 2c 20 62 75 74 20 74 68 65 73  cluded, but thes
3870: 65 20 61 72 65 20 62 65 74 74 65 72 20 74 68 6f  e are better tho
3880: 75 67 68 74 20 6f 66 20 61 73 20 70 65 72 66 6f  ught of as perfo
3890: 72 6d 61 6e 63 65 0a 20 20 66 69 78 65 73 20 74  rmance.  fixes t
38a0: 68 61 74 20 77 65 72 65 20 69 6e 74 65 67 72 61  hat were integra
38b0: 6c 20 74 6f 20 64 69 73 6f 76 65 72 69 6e 67 20  l to disovering 
38c0: 6d 6f 73 74 20 6f 66 20 74 68 65 20 6f 74 68 65  most of the othe
38d0: 72 20 62 75 67 73 2e 0a 0a 20 20 4f 70 74 69 6d  r bugs...  Optim
38e0: 69 7a 61 74 69 6f 6e 73 3a 0a 20 20 2d 20 41 76  izations:.  - Av
38f0: 6f 69 64 20 61 20 63 68 75 6e 6b 20 6d 65 74 61  oid a chunk meta
3900: 64 61 74 61 20 72 65 61 64 20 69 6e 20 61 72 65  data read in are
3910: 6e 61 5f 70 72 6f 66 5f 74 63 74 78 5f 73 65 74  na_prof_tctx_set
3920: 28 29 2c 20 73 69 6e 63 65 20 69 74 20 69 73 20  (), since it is 
3930: 69 6e 20 74 68 65 0a 20 20 20 20 66 61 73 74 20  in the.    fast 
3940: 70 61 74 68 20 77 68 65 6e 20 68 65 61 70 20 70  path when heap p
3950: 72 6f 66 69 6c 69 6e 67 20 69 73 20 65 6e 61 62  rofiling is enab
3960: 6c 65 64 2e 20 20 41 64 64 69 74 69 6f 6e 61 6c  led.  Additional
3970: 6c 79 2c 20 73 70 6c 69 74 20 61 20 73 70 65 63  ly, split a spec
3980: 69 61 6c 0a 20 20 20 20 63 61 73 65 20 6f 75 74  ial.    case out
3990: 20 69 6e 74 6f 20 61 72 65 6e 61 5f 70 72 6f 66   into arena_prof
39a0: 5f 74 63 74 78 5f 72 65 73 65 74 28 29 2c 20 77  _tctx_reset(), w
39b0: 68 69 63 68 20 61 6c 73 6f 20 61 76 6f 69 64 73  hich also avoids
39c0: 20 63 68 75 6e 6b 20 6d 65 74 61 64 61 74 61 0a   chunk metadata.
39d0: 20 20 20 20 72 65 61 64 73 2e 0a 20 20 2d 20 4f      reads..  - O
39e0: 70 74 69 6d 69 7a 65 20 69 72 61 6c 6c 6f 63 78  ptimize irallocx
39f0: 5f 70 72 6f 66 28 29 20 74 6f 20 6f 70 74 69 6d  _prof() to optim
3a00: 69 73 74 69 63 61 6c 6c 79 20 75 70 64 61 74 65  istically update
3a10: 20 74 68 65 20 73 61 6d 70 6c 65 72 20 73 74 61   the sampler sta
3a20: 74 65 2e 20 20 54 68 65 0a 20 20 20 20 70 72 69  te.  The.    pri
3a30: 6f 72 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  or implementatio
3a40: 6e 20 61 70 70 65 61 72 73 20 74 6f 20 68 61 76  n appears to hav
3a50: 65 20 62 65 65 6e 20 61 20 68 6f 6c 64 6f 76 65  e been a holdove
3a60: 72 20 66 72 6f 6d 20 77 68 65 6e 0a 20 20 20 20  r from when.    
3a70: 72 61 6c 6c 6f 63 78 28 29 2f 78 61 6c 6c 6f 63  rallocx()/xalloc
3a80: 78 28 29 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74  x() functionalit
3a90: 79 20 77 61 73 20 63 6f 6d 62 69 6e 65 64 20 61  y was combined a
3aa0: 73 20 72 61 6c 6c 6f 63 6d 28 29 2e 0a 0a 20 20  s rallocm()...  
3ab0: 42 75 67 20 66 69 78 65 73 3a 0a 20 20 2d 20 46  Bug fixes:.  - F
3ac0: 69 78 20 54 4c 53 20 63 6f 6e 66 69 67 75 72 61  ix TLS configura
3ad0: 74 69 6f 6e 20 73 75 63 68 20 74 68 61 74 20 69  tion such that i
3ae0: 74 20 69 73 20 65 6e 61 62 6c 65 64 20 62 79 20  t is enabled by 
3af0: 64 65 66 61 75 6c 74 20 66 6f 72 20 70 6c 61 74  default for plat
3b00: 66 6f 72 6d 73 20 6f 6e 0a 20 20 20 20 77 68 69  forms on.    whi
3b10: 63 68 20 69 74 20 77 6f 72 6b 73 20 63 6f 72 72  ch it works corr
3b20: 65 63 74 6c 79 2e 0a 20 20 2d 20 46 69 78 20 61  ectly..  - Fix a
3b30: 72 65 6e 61 73 5f 63 61 63 68 65 5f 63 6c 65 61  renas_cache_clea
3b40: 6e 75 70 28 29 20 61 6e 64 20 61 72 65 6e 61 5f  nup() and arena_
3b50: 67 65 74 5f 68 61 72 64 28 29 20 74 6f 20 68 61  get_hard() to ha
3b60: 6e 64 6c 65 0a 20 20 20 20 61 6c 6c 6f 63 61 74  ndle.    allocat
3b70: 69 6f 6e 2f 64 65 61 6c 6c 6f 63 61 74 69 6f 6e  ion/deallocation
3b80: 20 77 69 74 68 69 6e 20 74 68 65 20 61 70 70 6c   within the appl
3b90: 69 63 61 74 69 6f 6e 27 73 20 74 68 72 65 61 64  ication's thread
3ba0: 2d 73 70 65 63 69 66 69 63 20 64 61 74 61 0a 20  -specific data. 
3bb0: 20 20 20 63 6c 65 61 6e 75 70 20 66 75 6e 63 74     cleanup funct
3bc0: 69 6f 6e 73 20 65 76 65 6e 20 61 66 74 65 72 20  ions even after 
3bd0: 61 72 65 6e 61 73 5f 63 61 63 68 65 20 69 73 20  arenas_cache is 
3be0: 74 6f 72 6e 20 64 6f 77 6e 2e 0a 20 20 2d 20 46  torn down..  - F
3bf0: 69 78 20 78 61 6c 6c 6f 63 78 28 29 20 62 75 67  ix xallocx() bug
3c00: 73 20 72 65 6c 61 74 65 64 20 74 6f 20 73 69 7a  s related to siz
3c10: 65 2b 65 78 74 72 61 20 65 78 63 65 65 64 69 6e  e+extra exceedin
3c20: 67 20 48 55 47 45 5f 4d 41 58 43 4c 41 53 53 2e  g HUGE_MAXCLASS.
3c30: 0a 20 20 2d 20 46 69 78 20 63 68 75 6e 6b 20 70  .  - Fix chunk p
3c40: 75 72 67 65 20 68 6f 6f 6b 20 63 61 6c 6c 73 20  urge hook calls 
3c50: 66 6f 72 20 69 6e 2d 70 6c 61 63 65 20 68 75 67  for in-place hug
3c60: 65 20 73 68 72 69 6e 6b 69 6e 67 20 72 65 61 6c  e shrinking real
3c70: 6c 6f 63 61 74 69 6f 6e 20 74 6f 0a 20 20 20 20  location to.    
3c80: 73 70 65 63 69 66 79 20 74 68 65 20 6f 6c 64 20  specify the old 
3c90: 63 68 75 6e 6b 20 73 69 7a 65 20 72 61 74 68 65  chunk size rathe
3ca0: 72 20 74 68 61 6e 20 74 68 65 20 6e 65 77 20 63  r than the new c
3cb0: 68 75 6e 6b 20 73 69 7a 65 2e 20 20 54 68 69 73  hunk size.  This
3cc0: 20 62 75 67 20 63 61 75 73 65 64 0a 20 20 20 20   bug caused.    
3cd0: 6e 6f 20 63 6f 72 72 65 63 74 6e 65 73 73 20 69  no correctness i
3ce0: 73 73 75 65 73 20 66 6f 72 20 74 68 65 20 64 65  ssues for the de
3cf0: 66 61 75 6c 74 20 63 68 75 6e 6b 20 70 75 72 67  fault chunk purg
3d00: 65 20 66 75 6e 63 74 69 6f 6e 2c 20 62 75 74 20  e function, but 
3d10: 77 61 73 0a 20 20 20 20 76 69 73 69 62 6c 65 20  was.    visible 
3d20: 74 6f 20 63 75 73 74 6f 6d 20 66 75 6e 63 74 69  to custom functi
3d30: 6f 6e 73 20 73 65 74 20 76 69 61 20 74 68 65 20  ons set via the 
3d40: 22 61 72 65 6e 61 2e 3c 69 3e 2e 63 68 75 6e 6b  "arena.<i>.chunk
3d50: 5f 68 6f 6f 6b 73 22 20 6d 61 6c 6c 63 74 6c 2e  _hooks" mallctl.
3d60: 0a 20 20 2d 20 46 69 78 20 68 65 61 70 20 70 72  .  - Fix heap pr
3d70: 6f 66 69 6c 69 6e 67 20 62 75 67 73 3a 0a 20 20  ofiling bugs:.  
3d80: 20 20 2b 20 46 69 78 20 68 65 61 70 20 70 72 6f    + Fix heap pro
3d90: 66 69 6c 69 6e 67 20 74 6f 20 64 69 73 74 69 6e  filing to distin
3da0: 67 75 69 73 68 20 61 6d 6f 6e 67 20 6f 74 68 65  guish among othe
3db0: 72 77 69 73 65 20 69 64 65 6e 74 69 63 61 6c 20  rwise identical 
3dc0: 73 61 6d 70 6c 65 20 73 69 74 65 73 0a 20 20 20  sample sites.   
3dd0: 20 20 20 77 69 74 68 20 69 6e 74 65 72 70 6f 73     with interpos
3de0: 65 64 20 72 65 73 65 74 73 20 28 74 72 69 67 67  ed resets (trigg
3df0: 65 72 65 64 20 76 69 61 20 74 68 65 20 22 70 72  ered via the "pr
3e00: 6f 66 2e 72 65 73 65 74 22 20 6d 61 6c 6c 63 74  of.reset" mallct
3e10: 6c 29 2e 20 20 54 68 69 73 20 62 75 67 0a 20 20  l).  This bug.  
3e20: 20 20 20 20 63 6f 75 6c 64 20 63 61 75 73 65 20      could cause 
3e30: 64 61 74 61 20 73 74 72 75 63 74 75 72 65 20 63  data structure c
3e40: 6f 72 72 75 70 74 69 6f 6e 20 74 68 61 74 20 77  orruption that w
3e50: 6f 75 6c 64 20 6d 6f 73 74 20 6c 69 6b 65 6c 79  ould most likely
3e60: 20 72 65 73 75 6c 74 20 69 6e 20 61 0a 20 20 20   result in a.   
3e70: 20 20 20 73 65 67 66 61 75 6c 74 2e 0a 20 20 20     segfault..   
3e80: 20 2b 20 46 69 78 20 69 72 65 61 6c 6c 6f 63 5f   + Fix irealloc_
3e90: 70 72 6f 66 28 29 20 74 6f 20 70 72 6f 66 5f 61  prof() to prof_a
3ea0: 6c 6c 6f 63 5f 72 6f 6c 6c 62 61 63 6b 28 29 20  lloc_rollback() 
3eb0: 6f 6e 20 4f 4f 4d 2e 0a 20 20 20 20 2b 20 4d 61  on OOM..    + Ma
3ec0: 6b 65 20 6f 6e 65 20 63 61 6c 6c 20 74 6f 20 70  ke one call to p
3ed0: 72 6f 66 5f 61 63 74 69 76 65 5f 67 65 74 5f 75  rof_active_get_u
3ee0: 6e 6c 6f 63 6b 65 64 28 29 20 70 65 72 20 61 6c  nlocked() per al
3ef0: 6c 6f 63 61 74 69 6f 6e 20 65 76 65 6e 74 2c 20  location event, 
3f00: 61 6e 64 20 75 73 65 0a 20 20 20 20 20 20 74 68  and use.      th
3f10: 65 20 72 65 73 75 6c 74 20 74 68 72 6f 75 67 68  e result through
3f20: 6f 75 74 20 74 68 65 20 72 65 6c 65 76 61 6e 74  out the relevant
3f30: 20 66 75 6e 63 74 69 6f 6e 73 20 74 68 61 74 20   functions that 
3f40: 68 61 6e 64 6c 65 20 61 6e 20 61 6c 6c 6f 63 61  handle an alloca
3f50: 74 69 6f 6e 0a 20 20 20 20 20 20 65 76 65 6e 74  tion.      event
3f60: 2e 20 20 41 6c 73 6f 20 61 64 64 20 61 20 6d 69  .  Also add a mi
3f70: 73 73 69 6e 67 20 63 68 65 63 6b 20 69 6e 20 70  ssing check in p
3f80: 72 6f 66 5f 72 65 61 6c 6c 6f 63 28 29 2e 20 20  rof_realloc().  
3f90: 54 68 65 73 65 20 66 69 78 65 73 20 70 72 6f 74  These fixes prot
3fa0: 65 63 74 0a 20 20 20 20 20 20 61 6c 6c 6f 63 61  ect.      alloca
3fb0: 74 69 6f 6e 20 65 76 65 6e 74 73 20 61 67 61 69  tion events agai
3fc0: 6e 73 74 20 63 6f 6e 63 75 72 72 65 6e 74 20 70  nst concurrent p
3fd0: 72 6f 66 5f 61 63 74 69 76 65 20 63 68 61 6e 67  rof_active chang
3fe0: 65 73 2e 0a 20 20 20 20 2b 20 46 69 78 20 69 78  es..    + Fix ix
3ff0: 61 6c 6c 6f 63 78 5f 70 72 6f 66 28 29 20 74 6f  allocx_prof() to
4000: 20 70 61 73 73 20 75 73 69 7a 65 5f 6d 61 78 20   pass usize_max 
4010: 61 6e 64 20 7a 65 72 6f 20 74 6f 20 69 78 61 6c  and zero to ixal
4020: 6c 6f 63 78 5f 70 72 6f 66 5f 73 61 6d 70 6c 65  locx_prof_sample
4030: 28 29 0a 20 20 20 20 20 20 69 6e 20 74 68 65 20  ().      in the 
4040: 63 6f 72 72 65 63 74 20 6f 72 64 65 72 2e 0a 20  correct order.. 
4050: 20 20 20 2b 20 46 69 78 20 70 72 6f 66 5f 72 65     + Fix prof_re
4060: 61 6c 6c 6f 63 28 29 20 74 6f 20 63 61 6c 6c 20  alloc() to call 
4070: 70 72 6f 66 5f 66 72 65 65 5f 73 61 6d 70 6c 65  prof_free_sample
4080: 64 5f 6f 62 6a 65 63 74 28 29 20 61 66 74 65 72  d_object() after
4090: 20 63 61 6c 6c 69 6e 67 0a 20 20 20 20 20 20 70   calling.      p
40a0: 72 6f 66 5f 6d 61 6c 6c 6f 63 5f 73 61 6d 70 6c  rof_malloc_sampl
40b0: 65 5f 6f 62 6a 65 63 74 28 29 2e 20 20 50 72 69  e_object().  Pri
40c0: 6f 72 20 74 6f 20 74 68 69 73 20 66 69 78 2c 20  or to this fix, 
40d0: 69 66 20 74 63 74 78 20 61 6e 64 20 6f 6c 64 5f  if tctx and old_
40e0: 74 63 74 78 20 77 65 72 65 0a 20 20 20 20 20 20  tctx were.      
40f0: 74 68 65 20 73 61 6d 65 2c 20 74 68 65 20 74 63  the same, the tc
4100: 74 78 20 63 6f 75 6c 64 20 68 61 76 65 20 62 65  tx could have be
4110: 65 6e 20 70 72 65 6d 61 74 75 72 65 6c 79 20 64  en prematurely d
4120: 65 73 74 72 6f 79 65 64 2e 0a 20 20 2d 20 46 69  estroyed..  - Fi
4130: 78 20 70 6f 72 74 61 62 69 6c 69 74 79 20 62 75  x portability bu
4140: 67 73 3a 0a 20 20 20 20 2b 20 44 6f 6e 27 74 20  gs:.    + Don't 
4150: 62 69 74 73 68 69 66 74 20 62 79 20 6e 65 67 61  bitshift by nega
4160: 74 69 76 65 20 61 6d 6f 75 6e 74 73 20 77 68 65  tive amounts whe
4170: 6e 20 65 6e 63 6f 64 69 6e 67 2f 64 65 63 6f 64  n encoding/decod
4180: 69 6e 67 20 72 75 6e 20 73 69 7a 65 73 20 69 6e  ing run sizes in
4190: 0a 20 20 20 20 20 20 63 68 75 6e 6b 20 68 65 61  .      chunk hea
41a0: 64 65 72 20 6d 61 70 73 2e 20 20 54 68 69 73 20  der maps.  This 
41b0: 61 66 66 65 63 74 65 64 20 73 79 73 74 65 6d 73  affected systems
41c0: 20 77 69 74 68 20 70 61 67 65 20 73 69 7a 65 73   with page sizes
41d0: 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 38 0a   greater than 8.
41e0: 20 20 20 20 20 20 4b 69 42 2e 0a 20 20 20 20 2b        KiB..    +
41f0: 20 52 65 6e 61 6d 65 20 69 6e 64 65 78 5f 74 20   Rename index_t 
4200: 74 6f 20 73 7a 69 6e 64 5f 74 20 74 6f 20 61 76  to szind_t to av
4210: 6f 69 64 20 61 6e 20 65 78 69 73 74 69 6e 67 20  oid an existing 
4220: 74 79 70 65 20 6f 6e 20 53 6f 6c 61 72 69 73 2e  type on Solaris.
4230: 0a 20 20 20 20 2b 20 41 64 64 20 4a 45 4d 41 4c  .    + Add JEMAL
4240: 4c 4f 43 5f 43 58 58 5f 54 48 52 4f 57 20 74 6f  LOC_CXX_THROW to
4250: 20 74 68 65 20 6d 65 6d 61 6c 69 67 6e 28 29 20   the memalign() 
4260: 66 75 6e 63 74 69 6f 6e 20 70 72 6f 74 6f 74 79  function prototy
4270: 70 65 2c 20 69 6e 20 6f 72 64 65 72 20 74 6f 0a  pe, in order to.
4280: 20 20 20 20 20 20 6d 61 74 63 68 20 67 6c 69 62        match glib
4290: 63 20 61 6e 64 20 61 76 6f 69 64 20 63 6f 6d 70  c and avoid comp
42a0: 69 6c 61 74 69 6f 6e 20 65 72 72 6f 72 73 20 77  ilation errors w
42b0: 68 65 6e 20 69 6e 63 6c 75 64 69 6e 67 20 62 6f  hen including bo
42c0: 74 68 0a 20 20 20 20 20 20 6a 65 6d 61 6c 6c 6f  th.      jemallo
42d0: 63 2f 6a 65 6d 61 6c 6c 6f 63 2e 68 20 61 6e 64  c/jemalloc.h and
42e0: 20 6d 61 6c 6c 6f 63 2e 68 20 69 6e 20 43 2b 2b   malloc.h in C++
42f0: 20 63 6f 64 65 2e 0a 20 20 20 20 2b 20 44 6f 6e   code..    + Don
4300: 27 74 20 61 73 73 75 6d 65 20 74 68 61 74 20 2f  't assume that /
4310: 62 69 6e 2f 73 68 20 69 73 20 61 70 70 72 6f 70  bin/sh is approp
4320: 72 69 61 74 65 20 77 68 65 6e 20 72 75 6e 6e 69  riate when runni
4330: 6e 67 20 73 69 7a 65 5f 63 6c 61 73 73 65 73 2e  ng size_classes.
4340: 73 68 0a 20 20 20 20 20 20 64 75 72 69 6e 67 20  sh.      during 
4350: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 0a 20  configuration.. 
4360: 20 20 20 2b 20 43 6f 6e 73 69 64 65 72 20 5f 5f     + Consider __
4370: 73 70 61 72 63 76 39 20 61 20 73 79 6e 6f 6e 79  sparcv9 a synony
4380: 6d 20 66 6f 72 20 5f 5f 73 70 61 72 63 36 34 5f  m for __sparc64_
4390: 5f 20 77 68 65 6e 20 64 65 66 69 6e 69 6e 67 20  _ when defining 
43a0: 4c 47 5f 51 55 41 4e 54 55 4d 2e 0a 20 20 20 20  LG_QUANTUM..    
43b0: 2b 20 4c 69 6e 6b 20 74 65 73 74 73 20 74 6f 20  + Link tests to 
43c0: 6c 69 62 72 74 20 69 66 20 69 74 20 63 6f 6e 74  librt if it cont
43d0: 61 69 6e 73 20 63 6c 6f 63 6b 5f 67 65 74 74 69  ains clock_getti
43e0: 6d 65 28 32 29 2e 0a 0a 2a 20 34 2e 30 2e 30 20  me(2)...* 4.0.0 
43f0: 28 41 75 67 75 73 74 20 31 37 2c 20 32 30 31 35  (August 17, 2015
4400: 29 0a 0a 20 20 54 68 69 73 20 76 65 72 73 69 6f  )..  This versio
4410: 6e 20 63 6f 6e 74 61 69 6e 73 20 6d 61 6e 79 20  n contains many 
4420: 73 70 65 65 64 20 61 6e 64 20 73 70 61 63 65 20  speed and space 
4430: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 2c 20 62  optimizations, b
4440: 6f 74 68 20 6d 69 6e 6f 72 20 61 6e 64 0a 20 20  oth minor and.  
4450: 6d 61 6a 6f 72 2e 20 20 54 68 65 20 6d 61 6a 6f  major.  The majo
4460: 72 20 74 68 65 6d 65 73 20 61 72 65 20 67 65 6e  r themes are gen
4470: 65 72 61 6c 69 7a 61 74 69 6f 6e 2c 20 75 6e 69  eralization, uni
4480: 66 69 63 61 74 69 6f 6e 2c 20 61 6e 64 20 73 69  fication, and si
4490: 6d 70 6c 69 66 69 63 61 74 69 6f 6e 2e 0a 20 20  mplification..  
44a0: 41 6c 74 68 6f 75 67 68 20 6d 61 6e 79 20 6f 66  Although many of
44b0: 20 74 68 65 73 65 20 6f 70 74 69 6d 69 7a 61 74   these optimizat
44c0: 69 6f 6e 73 20 63 61 75 73 65 20 6e 6f 20 76 69  ions cause no vi
44d0: 73 69 62 6c 65 20 62 65 68 61 76 69 6f 72 20 63  sible behavior c
44e0: 68 61 6e 67 65 2c 20 74 68 65 69 72 0a 20 20 63  hange, their.  c
44f0: 75 6d 75 6c 61 74 69 76 65 20 65 66 66 65 63 74  umulative effect
4500: 20 69 73 20 73 75 62 73 74 61 6e 74 69 61 6c 2e   is substantial.
4510: 0a 0a 20 20 4e 65 77 20 66 65 61 74 75 72 65 73  ..  New features
4520: 3a 0a 20 20 2d 20 4e 6f 72 6d 61 6c 69 7a 65 20  :.  - Normalize 
4530: 73 69 7a 65 20 63 6c 61 73 73 20 73 70 61 63 69  size class spaci
4540: 6e 67 20 74 6f 20 62 65 20 63 6f 6e 73 69 73 74  ng to be consist
4550: 65 6e 74 20 61 63 72 6f 73 73 20 74 68 65 20 63  ent across the c
4560: 6f 6d 70 6c 65 74 65 20 73 69 7a 65 0a 20 20 20  omplete size.   
4570: 20 72 61 6e 67 65 2e 20 20 42 79 20 64 65 66 61   range.  By defa
4580: 75 6c 74 20 74 68 65 72 65 20 61 72 65 20 66 6f  ult there are fo
4590: 75 72 20 73 69 7a 65 20 63 6c 61 73 73 65 73 20  ur size classes 
45a0: 70 65 72 20 73 69 7a 65 20 64 6f 75 62 6c 69 6e  per size doublin
45b0: 67 2c 20 62 75 74 20 74 68 69 73 0a 20 20 20 20  g, but this.    
45c0: 69 73 20 6e 6f 77 20 63 6f 6e 66 69 67 75 72 61  is now configura
45d0: 62 6c 65 20 76 69 61 20 74 68 65 20 2d 2d 77 69  ble via the --wi
45e0: 74 68 2d 6c 67 2d 73 69 7a 65 2d 63 6c 61 73 73  th-lg-size-class
45f0: 2d 67 72 6f 75 70 20 6f 70 74 69 6f 6e 2e 20 20  -group option.  
4600: 41 6c 73 6f 20 61 64 64 20 74 68 65 0a 20 20 20  Also add the.   
4610: 20 2d 2d 77 69 74 68 2d 6c 67 2d 70 61 67 65 2c   --with-lg-page,
4620: 20 2d 2d 77 69 74 68 2d 6c 67 2d 70 61 67 65 2d   --with-lg-page-
4630: 73 69 7a 65 73 2c 20 2d 2d 77 69 74 68 2d 6c 67  sizes, --with-lg
4640: 2d 71 75 61 6e 74 75 6d 2c 20 61 6e 64 0a 20 20  -quantum, and.  
4650: 20 20 2d 2d 77 69 74 68 2d 6c 67 2d 74 69 6e 79    --with-lg-tiny
4660: 2d 6d 69 6e 20 6f 70 74 69 6f 6e 73 2c 20 77 68  -min options, wh
4670: 69 63 68 20 63 61 6e 20 62 65 20 75 73 65 64 20  ich can be used 
4680: 74 6f 20 74 77 65 61 6b 20 70 61 67 65 20 61 6e  to tweak page an
4690: 64 20 73 69 7a 65 20 63 6c 61 73 73 0a 20 20 20  d size class.   
46a0: 20 73 65 74 74 69 6e 67 73 2e 20 20 49 6d 70 61   settings.  Impa
46b0: 63 74 73 3a 0a 20 20 20 20 2b 20 57 6f 72 73 74  cts:.    + Worst
46c0: 20 63 61 73 65 20 70 65 72 66 6f 72 6d 61 6e 63   case performanc
46d0: 65 20 66 6f 72 20 69 6e 63 72 65 6d 65 6e 74 61  e for incrementa
46e0: 6c 6c 79 20 67 72 6f 77 69 6e 67 2f 73 68 72 69  lly growing/shri
46f0: 6e 6b 69 6e 67 20 72 65 61 6c 6c 6f 63 61 74 69  nking reallocati
4700: 6f 6e 0a 20 20 20 20 20 20 69 73 20 69 6d 70 72  on.      is impr
4710: 6f 76 65 64 20 62 65 63 61 75 73 65 20 74 68 65  oved because the
4720: 72 65 20 61 72 65 20 66 61 72 20 66 65 77 65 72  re are far fewer
4730: 20 73 69 7a 65 20 63 6c 61 73 73 65 73 2c 20 61   size classes, a
4740: 6e 64 20 74 68 65 72 65 66 6f 72 65 0a 20 20 20  nd therefore.   
4750: 20 20 20 63 6f 70 79 69 6e 67 20 68 61 70 70 65     copying happe
4760: 6e 73 20 6c 65 73 73 20 6f 66 74 65 6e 2e 0a 20  ns less often.. 
4770: 20 20 20 2b 20 49 6e 74 65 72 6e 61 6c 20 66 72     + Internal fr
4780: 61 67 6d 65 6e 74 61 74 69 6f 6e 20 69 73 20 6c  agmentation is l
4790: 69 6d 69 74 65 64 20 74 6f 20 32 30 25 20 66 6f  imited to 20% fo
47a0: 72 20 61 6c 6c 20 62 75 74 20 74 68 65 20 73 6d  r all but the sm
47b0: 61 6c 6c 65 73 74 20 73 69 7a 65 0a 20 20 20 20  allest size.    
47c0: 20 20 63 6c 61 73 73 65 73 20 28 74 68 6f 73 65    classes (those
47d0: 20 6c 65 73 73 20 74 68 61 6e 20 66 6f 75 72 20   less than four 
47e0: 74 69 6d 65 73 20 74 68 65 20 71 75 61 6e 74 75  times the quantu
47f0: 6d 29 2e 20 20 28 31 42 20 2b 20 34 20 4b 69 42  m).  (1B + 4 KiB
4800: 29 0a 20 20 20 20 20 20 61 6e 64 20 28 31 42 20  ).      and (1B 
4810: 2b 20 34 20 4d 69 42 29 20 70 72 65 76 69 6f 75  + 4 MiB) previou
4820: 73 6c 79 20 73 75 66 66 65 72 65 64 20 6e 65 61  sly suffered nea
4830: 72 6c 79 20 35 30 25 20 69 6e 74 65 72 6e 61 6c  rly 50% internal
4840: 20 66 72 61 67 6d 65 6e 74 61 74 69 6f 6e 2e 0a   fragmentation..
4850: 20 20 20 20 2b 20 43 68 75 6e 6b 20 66 72 61 67      + Chunk frag
4860: 6d 65 6e 74 61 74 69 6f 6e 20 74 65 6e 64 73 20  mentation tends 
4870: 74 6f 20 62 65 20 6c 6f 77 65 72 20 62 65 63 61  to be lower beca
4880: 75 73 65 20 74 68 65 72 65 20 61 72 65 20 66 65  use there are fe
4890: 77 65 72 20 64 69 73 74 69 6e 63 74 20 72 75 6e  wer distinct run
48a0: 0a 20 20 20 20 20 20 73 69 7a 65 73 20 74 6f 20  .      sizes to 
48b0: 70 61 63 6b 2e 0a 20 20 2d 20 41 64 64 20 73 75  pack..  - Add su
48c0: 70 70 6f 72 74 20 66 6f 72 20 65 78 70 6c 69 63  pport for explic
48d0: 69 74 20 74 63 61 63 68 65 73 2e 20 20 54 68 65  it tcaches.  The
48e0: 20 22 74 63 61 63 68 65 2e 63 72 65 61 74 65 22   "tcache.create"
48f0: 2c 20 22 74 63 61 63 68 65 2e 66 6c 75 73 68 22  , "tcache.flush"
4900: 2c 20 61 6e 64 0a 20 20 20 20 22 74 63 61 63 68  , and.    "tcach
4910: 65 2e 64 65 73 74 72 6f 79 22 20 6d 61 6c 6c 63  e.destroy" mallc
4920: 74 6c 73 20 63 6f 6e 74 72 6f 6c 20 74 63 61 63  tls control tcac
4930: 68 65 20 6c 69 66 65 74 69 6d 65 20 61 6e 64 20  he lifetime and 
4940: 66 6c 75 73 68 69 6e 67 2c 20 61 6e 64 20 74 68  flushing, and th
4950: 65 0a 20 20 20 20 4d 41 4c 4c 4f 43 58 5f 54 43  e.    MALLOCX_TC
4960: 41 43 48 45 28 74 63 29 20 61 6e 64 20 4d 41 4c  ACHE(tc) and MAL
4970: 4c 4f 43 58 5f 54 43 41 43 48 45 5f 4e 4f 4e 45  LOCX_TCACHE_NONE
4980: 20 66 6c 61 67 73 20 74 6f 20 74 68 65 20 2a 61   flags to the *a
4990: 6c 6c 6f 63 78 28 29 20 41 50 49 0a 20 20 20 20  llocx() API.    
49a0: 63 6f 6e 74 72 6f 6c 20 77 68 69 63 68 20 74 63  control which tc
49b0: 61 63 68 65 20 69 73 20 75 73 65 64 20 66 6f 72  ache is used for
49c0: 20 65 61 63 68 20 6f 70 65 72 61 74 69 6f 6e 2e   each operation.
49d0: 0a 20 20 2d 20 49 6d 70 6c 65 6d 65 6e 74 20 70  .  - Implement p
49e0: 65 72 20 74 68 72 65 61 64 20 68 65 61 70 20 70  er thread heap p
49f0: 72 6f 66 69 6c 69 6e 67 2c 20 61 73 20 77 65 6c  rofiling, as wel
4a00: 6c 20 61 73 20 74 68 65 20 61 62 69 6c 69 74 79  l as the ability
4a10: 20 74 6f 0a 20 20 20 20 65 6e 61 62 6c 65 2f 64   to.    enable/d
4a20: 69 73 61 62 6c 65 20 68 65 61 70 20 70 72 6f 66  isable heap prof
4a30: 69 6c 69 6e 67 20 6f 6e 20 61 20 70 65 72 20 74  iling on a per t
4a40: 68 72 65 61 64 20 62 61 73 69 73 2e 20 20 41 64  hread basis.  Ad
4a50: 64 20 74 68 65 20 22 70 72 6f 66 2e 72 65 73 65  d the "prof.rese
4a60: 74 22 2c 0a 20 20 20 20 22 70 72 6f 66 2e 6c 67  t",.    "prof.lg
4a70: 5f 73 61 6d 70 6c 65 22 2c 20 22 74 68 72 65 61  _sample", "threa
4a80: 64 2e 70 72 6f 66 2e 6e 61 6d 65 22 2c 20 22 74  d.prof.name", "t
4a90: 68 72 65 61 64 2e 70 72 6f 66 2e 61 63 74 69 76  hread.prof.activ
4aa0: 65 22 2c 0a 20 20 20 20 22 6f 70 74 2e 70 72 6f  e",.    "opt.pro
4ab0: 66 5f 74 68 72 65 61 64 5f 61 63 74 69 76 65 5f  f_thread_active_
4ac0: 69 6e 69 74 22 2c 20 22 70 72 6f 66 2e 74 68 72  init", "prof.thr
4ad0: 65 61 64 5f 61 63 74 69 76 65 5f 69 6e 69 74 22  ead_active_init"
4ae0: 2c 20 61 6e 64 0a 20 20 20 20 22 74 68 72 65 61  , and.    "threa
4af0: 64 2e 70 72 6f 66 2e 61 63 74 69 76 65 22 20 6d  d.prof.active" m
4b00: 61 6c 6c 63 74 6c 73 2e 0a 20 20 2d 20 41 64 64  allctls..  - Add
4b10: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 70 65 72   support for per
4b20: 20 61 72 65 6e 61 20 61 70 70 6c 69 63 61 74 69   arena applicati
4b30: 6f 6e 2d 73 70 65 63 69 66 69 65 64 20 63 68 75  on-specified chu
4b40: 6e 6b 20 61 6c 6c 6f 63 61 74 6f 72 73 2c 20 63  nk allocators, c
4b50: 6f 6e 66 69 67 75 72 65 64 0a 20 20 20 20 76 69  onfigured.    vi
4b60: 61 20 74 68 65 20 22 61 72 65 6e 61 2e 3c 69 3e  a the "arena.<i>
4b70: 2e 63 68 75 6e 6b 5f 68 6f 6f 6b 73 22 20 6d 61  .chunk_hooks" ma
4b80: 6c 6c 63 74 6c 2e 0a 20 20 2d 20 52 65 66 61 63  llctl..  - Refac
4b90: 74 6f 72 20 68 75 67 65 20 61 6c 6c 6f 63 61 74  tor huge allocat
4ba0: 69 6f 6e 20 74 6f 20 62 65 20 6d 61 6e 61 67 65  ion to be manage
4bb0: 64 20 62 79 20 61 72 65 6e 61 73 2c 20 73 6f 20  d by arenas, so 
4bc0: 74 68 61 74 20 61 72 65 6e 61 73 20 6e 6f 77 0a  that arenas now.
4bd0: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 61 73 20      function as 
4be0: 67 65 6e 65 72 61 6c 20 70 75 72 70 6f 73 65 20  general purpose 
4bf0: 69 6e 64 65 70 65 6e 64 65 6e 74 20 61 6c 6c 6f  independent allo
4c00: 63 61 74 6f 72 73 2e 20 20 54 68 69 73 20 69 73  cators.  This is
4c10: 20 69 6d 70 6f 72 74 61 6e 74 20 69 6e 0a 20 20   important in.  
4c20: 20 20 74 68 65 20 63 6f 6e 74 65 78 74 20 6f 66    the context of
4c30: 20 75 73 65 72 2d 73 70 65 63 69 66 69 65 64 20   user-specified 
4c40: 63 68 75 6e 6b 20 61 6c 6c 6f 63 61 74 6f 72 73  chunk allocators
4c50: 2c 20 61 73 69 64 65 20 66 72 6f 6d 20 74 68 65  , aside from the
4c60: 20 73 63 61 6c 61 62 69 6c 69 74 79 0a 20 20 20   scalability.   
4c70: 20 62 65 6e 65 66 69 74 73 2e 20 20 52 65 6c 61   benefits.  Rela
4c80: 74 65 64 20 6e 65 77 20 73 74 61 74 69 73 74 69  ted new statisti
4c90: 63 73 3a 0a 20 20 20 20 2b 20 54 68 65 20 22 73  cs:.    + The "s
4ca0: 74 61 74 73 2e 61 72 65 6e 61 73 2e 3c 69 3e 2e  tats.arenas.<i>.
4cb0: 68 75 67 65 2e 61 6c 6c 6f 63 61 74 65 64 22 2c  huge.allocated",
4cc0: 20 22 73 74 61 74 73 2e 61 72 65 6e 61 73 2e 3c   "stats.arenas.<
4cd0: 69 3e 2e 68 75 67 65 2e 6e 6d 61 6c 6c 6f 63 22  i>.huge.nmalloc"
4ce0: 2c 0a 20 20 20 20 20 20 22 73 74 61 74 73 2e 61  ,.      "stats.a
4cf0: 72 65 6e 61 73 2e 3c 69 3e 2e 68 75 67 65 2e 6e  renas.<i>.huge.n
4d00: 64 61 6c 6c 6f 63 22 2c 20 61 6e 64 20 22 73 74  dalloc", and "st
4d10: 61 74 73 2e 61 72 65 6e 61 73 2e 3c 69 3e 2e 68  ats.arenas.<i>.h
4d20: 75 67 65 2e 6e 72 65 71 75 65 73 74 73 22 0a 20  uge.nrequests". 
4d30: 20 20 20 20 20 6d 61 6c 6c 63 74 6c 73 20 70 72       mallctls pr
4d40: 6f 76 69 64 65 20 68 69 67 68 20 6c 65 76 65 6c  ovide high level
4d50: 20 70 65 72 20 61 72 65 6e 61 20 68 75 67 65 20   per arena huge 
4d60: 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 74 61 74 69  allocation stati
4d70: 73 74 69 63 73 2e 0a 20 20 20 20 2b 20 54 68 65  stics..    + The
4d80: 20 22 61 72 65 6e 61 73 2e 6e 68 63 68 75 6e 6b   "arenas.nhchunk
4d90: 73 22 2c 20 22 61 72 65 6e 61 73 2e 68 63 68 75  s", "arenas.hchu
4da0: 6e 6b 2e 3c 69 3e 2e 73 69 7a 65 22 2c 0a 20 20  nk.<i>.size",.  
4db0: 20 20 20 20 22 73 74 61 74 73 2e 61 72 65 6e 61      "stats.arena
4dc0: 73 2e 3c 69 3e 2e 68 63 68 75 6e 6b 73 2e 3c 6a  s.<i>.hchunks.<j
4dd0: 3e 2e 6e 6d 61 6c 6c 6f 63 22 2c 0a 20 20 20 20  >.nmalloc",.    
4de0: 20 20 22 73 74 61 74 73 2e 61 72 65 6e 61 73 2e    "stats.arenas.
4df0: 3c 69 3e 2e 68 63 68 75 6e 6b 73 2e 3c 6a 3e 2e  <i>.hchunks.<j>.
4e00: 6e 64 61 6c 6c 6f 63 22 2c 0a 20 20 20 20 20 20  ndalloc",.      
4e10: 22 73 74 61 74 73 2e 61 72 65 6e 61 73 2e 3c 69  "stats.arenas.<i
4e20: 3e 2e 68 63 68 75 6e 6b 73 2e 3c 6a 3e 2e 6e 72  >.hchunks.<j>.nr
4e30: 65 71 75 65 73 74 73 22 2c 20 61 6e 64 0a 20 20  equests", and.  
4e40: 20 20 20 20 22 73 74 61 74 73 2e 61 72 65 6e 61      "stats.arena
4e50: 73 2e 3c 69 3e 2e 68 63 68 75 6e 6b 73 2e 3c 6a  s.<i>.hchunks.<j
4e60: 3e 2e 63 75 72 68 63 68 75 6e 6b 73 22 20 6d 61  >.curhchunks" ma
4e70: 6c 6c 63 74 6c 73 20 70 72 6f 76 69 64 65 20 70  llctls provide p
4e80: 65 72 20 73 69 7a 65 20 63 6c 61 73 73 0a 20 20  er size class.  
4e90: 20 20 20 20 73 74 61 74 69 73 74 69 63 73 2e 0a      statistics..
4ea0: 20 20 2d 20 41 64 64 20 74 68 65 20 27 75 74 69    - Add the 'uti
4eb0: 6c 27 20 63 6f 6c 75 6d 6e 20 74 6f 20 6d 61 6c  l' column to mal
4ec0: 6c 6f 63 5f 73 74 61 74 73 5f 70 72 69 6e 74 28  loc_stats_print(
4ed0: 29 20 6f 75 74 70 75 74 2c 20 77 68 69 63 68 20  ) output, which 
4ee0: 72 65 70 6f 72 74 73 20 74 68 65 0a 20 20 20 20  reports the.    
4ef0: 70 72 6f 70 6f 72 74 69 6f 6e 20 6f 66 20 61 76  proportion of av
4f00: 61 69 6c 61 62 6c 65 20 72 65 67 69 6f 6e 73 20  ailable regions 
4f10: 74 68 61 74 20 61 72 65 20 63 75 72 72 65 6e 74  that are current
4f20: 6c 79 20 69 6e 20 75 73 65 20 66 6f 72 20 65 61  ly in use for ea
4f30: 63 68 20 73 6d 61 6c 6c 0a 20 20 20 20 73 69 7a  ch small.    siz
4f40: 65 20 63 6c 61 73 73 2e 0a 20 20 2d 20 41 64 64  e class..  - Add
4f50: 20 22 61 6c 6c 6f 63 22 20 61 6e 64 20 22 66 72   "alloc" and "fr
4f60: 65 65 22 20 6d 6f 64 65 73 20 66 6f 72 20 66 6f  ee" modes for fo
4f70: 72 20 6a 75 6e 6b 20 66 69 6c 6c 69 6e 67 20 28  r junk filling (
4f80: 73 65 65 20 74 68 65 20 22 6f 70 74 2e 6a 75 6e  see the "opt.jun
4f90: 6b 22 0a 20 20 20 20 6d 61 6c 6c 63 74 6c 29 2c  k".    mallctl),
4fa0: 20 73 6f 20 74 68 61 74 20 69 74 20 69 73 20 70   so that it is p
4fb0: 6f 73 73 69 62 6c 65 20 74 6f 20 73 65 70 61 72  ossible to separ
4fc0: 61 74 65 6c 79 20 65 6e 61 62 6c 65 20 6a 75 6e  ately enable jun
4fd0: 6b 20 66 69 6c 6c 69 6e 67 20 66 6f 72 0a 20 20  k filling for.  
4fe0: 20 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 76 65 72    allocation ver
4ff0: 73 75 73 20 64 65 61 6c 6c 6f 63 61 74 69 6f 6e  sus deallocation
5000: 2e 0a 20 20 2d 20 41 64 64 20 74 68 65 20 6a 65  ..  - Add the je
5010: 6d 61 6c 6c 6f 63 2d 63 6f 6e 66 69 67 20 73 63  malloc-config sc
5020: 72 69 70 74 2c 20 77 68 69 63 68 20 70 72 6f 76  ript, which prov
5030: 69 64 65 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  ides information
5040: 20 61 62 6f 75 74 20 68 6f 77 0a 20 20 20 20 6a   about how.    j
5050: 65 6d 61 6c 6c 6f 63 20 77 61 73 20 63 6f 6e 66  emalloc was conf
5060: 69 67 75 72 65 64 2c 20 61 6e 64 20 68 6f 77 20  igured, and how 
5070: 74 6f 20 69 6e 74 65 67 72 61 74 65 20 69 74 20  to integrate it 
5080: 69 6e 74 6f 20 61 70 70 6c 69 63 61 74 69 6f 6e  into application
5090: 20 62 75 69 6c 64 73 2e 0a 20 20 2d 20 41 64 64   builds..  - Add
50a0: 20 6d 65 74 61 64 61 74 61 20 73 74 61 74 69 73   metadata statis
50b0: 74 69 63 73 2c 20 77 68 69 63 68 20 61 72 65 20  tics, which are 
50c0: 61 63 63 65 73 73 69 62 6c 65 20 76 69 61 20 74  accessible via t
50d0: 68 65 20 22 73 74 61 74 73 2e 6d 65 74 61 64 61  he "stats.metada
50e0: 74 61 22 2c 0a 20 20 20 20 22 73 74 61 74 73 2e  ta",.    "stats.
50f0: 61 72 65 6e 61 73 2e 3c 69 3e 2e 6d 65 74 61 64  arenas.<i>.metad
5100: 61 74 61 2e 6d 61 70 70 65 64 22 2c 20 61 6e 64  ata.mapped", and
5110: 0a 20 20 20 20 22 73 74 61 74 73 2e 61 72 65 6e  .    "stats.aren
5120: 61 73 2e 3c 69 3e 2e 6d 65 74 61 64 61 74 61 2e  as.<i>.metadata.
5130: 61 6c 6c 6f 63 61 74 65 64 22 20 6d 61 6c 6c 63  allocated" mallc
5140: 74 6c 73 2e 0a 20 20 2d 20 41 64 64 20 74 68 65  tls..  - Add the
5150: 20 22 73 74 61 74 73 2e 72 65 73 69 64 65 6e 74   "stats.resident
5160: 22 20 6d 61 6c 6c 63 74 6c 2c 20 77 68 69 63 68  " mallctl, which
5170: 20 72 65 70 6f 72 74 73 20 74 68 65 20 75 70 70   reports the upp
5180: 65 72 20 6c 69 6d 69 74 20 6f 66 0a 20 20 20 20  er limit of.    
5190: 70 68 79 73 69 63 61 6c 6c 79 20 72 65 73 69 64  physically resid
51a0: 65 6e 74 20 6d 65 6d 6f 72 79 20 6d 61 70 70 65  ent memory mappe
51b0: 64 20 62 79 20 74 68 65 20 61 6c 6c 6f 63 61 74  d by the allocat
51c0: 6f 72 2e 0a 20 20 2d 20 41 64 64 20 70 65 72 20  or..  - Add per 
51d0: 61 72 65 6e 61 20 63 6f 6e 74 72 6f 6c 20 6f 76  arena control ov
51e0: 65 72 20 75 6e 75 73 65 64 20 64 69 72 74 79 20  er unused dirty 
51f0: 70 61 67 65 20 70 75 72 67 69 6e 67 2c 20 76 69  page purging, vi
5200: 61 20 74 68 65 0a 20 20 20 20 22 61 72 65 6e 61  a the.    "arena
5210: 73 2e 6c 67 5f 64 69 72 74 79 5f 6d 75 6c 74 22  s.lg_dirty_mult"
5220: 2c 20 22 61 72 65 6e 61 2e 3c 69 3e 2e 6c 67 5f  , "arena.<i>.lg_
5230: 64 69 72 74 79 5f 6d 75 6c 74 22 2c 20 61 6e 64  dirty_mult", and
5240: 0a 20 20 20 20 22 73 74 61 74 73 2e 61 72 65 6e  .    "stats.aren
5250: 61 73 2e 3c 69 3e 2e 6c 67 5f 64 69 72 74 79 5f  as.<i>.lg_dirty_
5260: 6d 75 6c 74 22 20 6d 61 6c 6c 63 74 6c 73 2e 0a  mult" mallctls..
5270: 20 20 2d 20 41 64 64 20 74 68 65 20 22 70 72 6f    - Add the "pro
5280: 66 2e 67 64 75 6d 70 22 20 6d 61 6c 6c 63 74 6c  f.gdump" mallctl
5290: 2c 20 77 68 69 63 68 20 6d 61 6b 65 73 20 69 74  , which makes it
52a0: 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 74 6f 67   possible to tog
52b0: 67 6c 65 20 74 68 65 20 67 64 75 6d 70 0a 20 20  gle the gdump.  
52c0: 20 20 66 65 61 74 75 72 65 20 6f 6e 2f 6f 66 66    feature on/off
52d0: 20 64 75 72 69 6e 67 20 70 72 6f 67 72 61 6d 20   during program 
52e0: 65 78 65 63 75 74 69 6f 6e 2e 0a 20 20 2d 20 41  execution..  - A
52f0: 64 64 20 73 64 61 6c 6c 6f 63 78 28 29 2c 20 77  dd sdallocx(), w
5300: 68 69 63 68 20 69 6d 70 6c 65 6d 65 6e 74 73 20  hich implements 
5310: 73 69 7a 65 64 20 64 65 61 6c 6c 6f 63 61 74 69  sized deallocati
5320: 6f 6e 2e 20 20 54 68 65 20 70 72 69 6d 61 72 79  on.  The primary
5330: 0a 20 20 20 20 6f 70 74 69 6d 69 7a 61 74 69 6f  .    optimizatio
5340: 6e 20 6f 76 65 72 20 64 61 6c 6c 6f 63 78 28 29  n over dallocx()
5350: 20 69 73 20 74 68 65 20 72 65 6d 6f 76 61 6c 20   is the removal 
5360: 6f 66 20 61 20 6d 65 74 61 64 61 74 61 20 72 65  of a metadata re
5370: 61 64 2c 20 77 68 69 63 68 20 6f 66 74 65 6e 0a  ad, which often.
5380: 20 20 20 20 73 75 66 66 65 72 73 20 61 6e 20 4c      suffers an L
5390: 31 20 63 61 63 68 65 20 6d 69 73 73 2e 0a 20 20  1 cache miss..  
53a0: 2d 20 41 64 64 20 6d 69 73 73 69 6e 67 20 68 65  - Add missing he
53b0: 61 64 65 72 20 69 6e 63 6c 75 64 65 73 20 69 6e  ader includes in
53c0: 20 6a 65 6d 61 6c 6c 6f 63 2f 6a 65 6d 61 6c 6c   jemalloc/jemall
53d0: 6f 63 2e 68 2c 20 73 6f 20 74 68 61 74 20 61 70  oc.h, so that ap
53e0: 70 6c 69 63 61 74 69 6f 6e 73 0a 20 20 20 20 6f  plications.    o
53f0: 6e 6c 79 20 68 61 76 65 20 74 6f 20 23 69 6e 63  nly have to #inc
5400: 6c 75 64 65 20 3c 6a 65 6d 61 6c 6c 6f 63 2f 6a  lude <jemalloc/j
5410: 65 6d 61 6c 6c 6f 63 2e 68 3e 2e 0a 20 20 2d 20  emalloc.h>..  - 
5420: 41 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20  Add support for 
5430: 61 64 64 69 74 69 6f 6e 61 6c 20 70 6c 61 74 66  additional platf
5440: 6f 72 6d 73 3a 0a 20 20 20 20 2b 20 42 69 74 72  orms:.    + Bitr
5450: 69 67 0a 20 20 20 20 2b 20 43 79 67 77 69 6e 0a  ig.    + Cygwin.
5460: 20 20 20 20 2b 20 44 72 61 67 6f 6e 46 6c 79 42      + DragonFlyB
5470: 53 44 0a 20 20 20 20 2b 20 69 4f 53 0a 20 20 20  SD.    + iOS.   
5480: 20 2b 20 4f 70 65 6e 42 53 44 0a 20 20 20 20 2b   + OpenBSD.    +
5490: 20 4f 70 65 6e 52 49 53 43 2f 6f 72 31 6b 0a 0a   OpenRISC/or1k..
54a0: 20 20 4f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 3a    Optimizations:
54b0: 0a 20 20 2d 20 4d 61 69 6e 74 61 69 6e 20 64 69  .  - Maintain di
54c0: 72 74 79 20 72 75 6e 73 20 69 6e 20 70 65 72 20  rty runs in per 
54d0: 61 72 65 6e 61 20 4c 52 55 73 20 72 61 74 68 65  arena LRUs rathe
54e0: 72 20 74 68 61 6e 20 69 6e 20 70 65 72 20 61 72  r than in per ar
54f0: 65 6e 61 20 74 72 65 65 73 20 6f 66 0a 20 20 20  ena trees of.   
5500: 20 64 69 72 74 79 2d 72 75 6e 2d 63 6f 6e 74 61   dirty-run-conta
5510: 69 6e 69 6e 67 20 63 68 75 6e 6b 73 2e 20 20 49  ining chunks.  I
5520: 6e 20 70 72 61 63 74 69 63 65 20 74 68 69 73 20  n practice this 
5530: 63 68 61 6e 67 65 20 73 69 67 6e 69 66 69 63 61  change significa
5540: 6e 74 6c 79 20 72 65 64 75 63 65 73 0a 20 20 20  ntly reduces.   
5550: 20 64 69 72 74 79 20 70 61 67 65 20 70 75 72 67   dirty page purg
5560: 69 6e 67 20 76 6f 6c 75 6d 65 2e 0a 20 20 2d 20  ing volume..  - 
5570: 49 6e 74 65 67 72 61 74 65 20 77 68 6f 6c 65 20  Integrate whole 
5580: 63 68 75 6e 6b 73 20 69 6e 74 6f 20 74 68 65 20  chunks into the 
5590: 75 6e 75 73 65 64 20 64 69 72 74 79 20 70 61 67  unused dirty pag
55a0: 65 20 70 75 72 67 69 6e 67 20 6d 61 63 68 69 6e  e purging machin
55b0: 65 72 79 2e 20 20 54 68 69 73 0a 20 20 20 20 72  ery.  This.    r
55c0: 65 64 75 63 65 73 20 74 68 65 20 63 6f 73 74 20  educes the cost 
55d0: 6f 66 20 72 65 70 65 61 74 65 64 20 68 75 67 65  of repeated huge
55e0: 20 61 6c 6c 6f 63 61 74 69 6f 6e 2f 64 65 61 6c   allocation/deal
55f0: 6c 6f 63 61 74 69 6f 6e 2c 20 62 65 63 61 75 73  location, becaus
5600: 65 20 69 74 0a 20 20 20 20 65 66 66 65 63 74 69  e it.    effecti
5610: 76 65 6c 79 20 69 6e 74 72 6f 64 75 63 65 73 20  vely introduces 
5620: 61 20 63 61 63 68 65 20 6f 66 20 63 68 75 6e 6b  a cache of chunk
5630: 73 2e 0a 20 20 2d 20 53 70 6c 69 74 20 74 68 65  s..  - Split the
5640: 20 61 72 65 6e 61 20 63 68 75 6e 6b 20 6d 61 70   arena chunk map
5650: 20 69 6e 74 6f 20 74 77 6f 20 73 65 70 61 72 61   into two separa
5660: 74 65 20 61 72 72 61 79 73 2c 20 69 6e 20 6f 72  te arrays, in or
5670: 64 65 72 20 74 6f 20 69 6e 63 72 65 61 73 65 0a  der to increase.
5680: 20 20 20 20 63 61 63 68 65 20 6c 6f 63 61 6c 69      cache locali
5690: 74 79 20 66 6f 72 20 74 68 65 20 66 72 65 71 75  ty for the frequ
56a0: 65 6e 74 6c 79 20 61 63 63 65 73 73 65 64 20 62  ently accessed b
56b0: 69 74 73 2e 0a 20 20 2d 20 4d 6f 76 65 20 73 6d  its..  - Move sm
56c0: 61 6c 6c 20 72 75 6e 20 6d 65 74 61 64 61 74 61  all run metadata
56d0: 20 6f 75 74 20 6f 66 20 72 75 6e 73 2c 20 69 6e   out of runs, in
56e0: 74 6f 20 61 72 65 6e 61 20 63 68 75 6e 6b 20 68  to arena chunk h
56f0: 65 61 64 65 72 73 2e 20 20 54 68 69 73 20 72 65  eaders.  This re
5700: 64 75 63 65 73 0a 20 20 20 20 72 75 6e 20 66 72  duces.    run fr
5710: 61 67 6d 65 6e 74 61 74 69 6f 6e 2c 20 73 6d 61  agmentation, sma
5720: 6c 6c 65 72 20 72 75 6e 73 20 72 65 64 75 63 65  ller runs reduce
5730: 20 65 78 74 65 72 6e 61 6c 20 66 72 61 67 6d 65   external fragme
5740: 6e 74 61 74 69 6f 6e 20 66 6f 72 20 73 6d 61 6c  ntation for smal
5750: 6c 20 73 69 7a 65 0a 20 20 20 20 63 6c 61 73 73  l size.    class
5760: 65 73 2c 20 61 6e 64 20 70 61 63 6b 65 64 20 28  es, and packed (
5770: 6c 65 73 73 20 75 6e 69 66 6f 72 6d 6c 79 20 61  less uniformly a
5780: 6c 69 67 6e 65 64 29 20 6d 65 74 61 64 61 74 61  ligned) metadata
5790: 20 6c 61 79 6f 75 74 20 69 6d 70 72 6f 76 65 73   layout improves
57a0: 20 43 50 55 0a 20 20 20 20 63 61 63 68 65 20 73   CPU.    cache s
57b0: 65 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 2e  et distribution.
57c0: 0a 20 20 2d 20 52 61 6e 64 6f 6d 6c 79 20 64 69  .  - Randomly di
57d0: 73 74 72 69 62 75 74 65 20 6c 61 72 67 65 20 61  stribute large a
57e0: 6c 6c 6f 63 61 74 69 6f 6e 20 62 61 73 65 20 70  llocation base p
57f0: 6f 69 6e 74 65 72 20 61 6c 69 67 6e 6d 65 6e 74  ointer alignment
5800: 20 72 65 6c 61 74 69 76 65 20 74 6f 20 70 61 67   relative to pag
5810: 65 0a 20 20 20 20 62 6f 75 6e 64 61 72 69 65 73  e.    boundaries
5820: 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 6d 6f 72   in order to mor
5830: 65 20 75 6e 69 66 6f 72 6d 6c 79 20 75 74 69 6c  e uniformly util
5840: 69 7a 65 20 43 50 55 20 63 61 63 68 65 20 73 65  ize CPU cache se
5850: 74 73 2e 20 20 54 68 69 73 20 63 61 6e 20 62 65  ts.  This can be
5860: 0a 20 20 20 20 64 69 73 61 62 6c 65 64 20 76 69  .    disabled vi
5870: 61 20 74 68 65 20 2d 2d 64 69 73 61 62 6c 65 2d  a the --disable-
5880: 63 61 63 68 65 2d 6f 62 6c 69 76 69 6f 75 73 20  cache-oblivious 
5890: 63 6f 6e 66 69 67 75 72 65 20 6f 70 74 69 6f 6e  configure option
58a0: 2c 20 61 6e 64 20 71 75 65 72 69 65 64 20 76 69  , and queried vi
58b0: 61 0a 20 20 20 20 74 68 65 20 22 63 6f 6e 66 69  a.    the "confi
58c0: 67 2e 63 61 63 68 65 5f 6f 62 6c 69 76 69 6f 75  g.cache_obliviou
58d0: 73 22 20 6d 61 6c 6c 63 74 6c 2e 0a 20 20 2d 20  s" mallctl..  - 
58e0: 4d 69 63 72 6f 2d 6f 70 74 69 6d 69 7a 65 20 74  Micro-optimize t
58f0: 68 65 20 66 61 73 74 20 70 61 74 68 73 20 66 6f  he fast paths fo
5900: 72 20 74 68 65 20 70 75 62 6c 69 63 20 41 50 49  r the public API
5910: 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 20 20 2d 20   functions..  - 
5920: 52 65 66 61 63 74 6f 72 20 74 68 72 65 61 64 2d  Refactor thread-
5930: 73 70 65 63 69 66 69 63 20 64 61 74 61 20 74 6f  specific data to
5940: 20 72 65 73 69 64 65 20 69 6e 20 61 20 73 69 6e   reside in a sin
5950: 67 6c 65 20 73 74 72 75 63 74 75 72 65 2e 20 20  gle structure.  
5960: 54 68 69 73 20 61 73 73 75 72 65 73 0a 20 20 20  This assures.   
5970: 20 74 68 61 74 20 6f 6e 6c 79 20 61 20 73 69 6e   that only a sin
5980: 67 6c 65 20 54 4c 53 20 72 65 61 64 20 69 73 20  gle TLS read is 
5990: 6e 65 63 65 73 73 61 72 79 20 70 65 72 20 63 61  necessary per ca
59a0: 6c 6c 20 69 6e 74 6f 20 74 68 65 20 70 75 62 6c  ll into the publ
59b0: 69 63 20 41 50 49 2e 0a 20 20 2d 20 49 6d 70 6c  ic API..  - Impl
59c0: 65 6d 65 6e 74 20 69 6e 2d 70 6c 61 63 65 20 68  ement in-place h
59d0: 75 67 65 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 67  uge allocation g
59e0: 72 6f 77 69 6e 67 20 61 6e 64 20 73 68 72 69 6e  rowing and shrin
59f0: 6b 69 6e 67 2e 0a 20 20 2d 20 52 65 66 61 63 74  king..  - Refact
5a00: 6f 72 20 72 74 72 65 65 20 28 72 61 64 69 78 20  or rtree (radix 
5a10: 74 72 65 65 20 66 6f 72 20 63 68 75 6e 6b 20 6c  tree for chunk l
5a20: 6f 6f 6b 75 70 73 29 20 74 6f 20 62 65 20 6c 6f  ookups) to be lo
5a30: 63 6b 2d 66 72 65 65 2c 20 61 6e 64 20 6d 61 6b  ck-free, and mak
5a40: 65 0a 20 20 20 20 61 64 64 69 74 69 6f 6e 61 6c  e.    additional
5a50: 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 20 74   optimizations t
5a60: 68 61 74 20 72 65 64 75 63 65 20 6d 61 78 69 6d  hat reduce maxim
5a70: 75 6d 20 6c 6f 6f 6b 75 70 20 64 65 70 74 68 20  um lookup depth 
5a80: 74 6f 20 6f 6e 65 20 6f 72 20 74 77 6f 0a 20 20  to one or two.  
5a90: 20 20 6c 65 76 65 6c 73 2e 20 20 54 68 69 73 20    levels.  This 
5aa0: 72 65 73 6f 6c 76 65 73 20 77 68 61 74 20 77 61  resolves what wa
5ab0: 73 20 61 20 63 6f 6e 63 75 72 72 65 6e 63 79 20  s a concurrency 
5ac0: 62 6f 74 74 6c 65 6e 65 63 6b 20 66 6f 72 20 70  bottleneck for p
5ad0: 65 72 20 61 72 65 6e 61 20 68 75 67 65 0a 20 20  er arena huge.  
5ae0: 20 20 61 6c 6c 6f 63 61 74 69 6f 6e 2c 20 62 65    allocation, be
5af0: 63 61 75 73 65 20 61 20 67 6c 6f 62 61 6c 20 64  cause a global d
5b00: 61 74 61 20 73 74 72 75 63 74 75 72 65 20 69 73  ata structure is
5b10: 20 63 72 69 74 69 63 61 6c 20 66 6f 72 20 64 65   critical for de
5b20: 74 65 72 6d 69 6e 69 6e 67 0a 20 20 20 20 77 68  termining.    wh
5b30: 69 63 68 20 61 72 65 6e 61 73 20 6f 77 6e 20 77  ich arenas own w
5b40: 68 69 63 68 20 68 75 67 65 20 61 6c 6c 6f 63 61  hich huge alloca
5b50: 74 69 6f 6e 73 2e 0a 0a 20 20 49 6e 63 6f 6d 70  tions...  Incomp
5b60: 61 74 69 62 6c 65 20 63 68 61 6e 67 65 73 3a 0a  atible changes:.
5b70: 20 20 2d 20 52 65 70 6c 61 63 65 20 2d 2d 65 6e    - Replace --en
5b80: 61 62 6c 65 2d 63 63 2d 73 69 6c 65 6e 63 65 20  able-cc-silence 
5b90: 77 69 74 68 20 2d 2d 64 69 73 61 62 6c 65 2d 63  with --disable-c
5ba0: 63 2d 73 69 6c 65 6e 63 65 20 74 6f 20 73 75 70  c-silence to sup
5bb0: 70 72 65 73 73 20 73 70 75 72 69 6f 75 73 0a 20  press spurious. 
5bc0: 20 20 20 77 61 72 6e 69 6e 67 73 20 62 79 20 64     warnings by d
5bd0: 65 66 61 75 6c 74 2e 0a 20 20 2d 20 41 73 73 75  efault..  - Assu
5be0: 72 65 20 74 68 61 74 20 74 68 65 20 63 6f 6e 73  re that the cons
5bf0: 74 6e 65 73 73 20 6f 66 20 6d 61 6c 6c 6f 63 5f  tness of malloc_
5c00: 75 73 61 62 6c 65 5f 73 69 7a 65 28 29 27 73 20  usable_size()'s 
5c10: 72 65 74 75 72 6e 20 74 79 70 65 20 6d 61 74 63  return type matc
5c20: 68 65 73 20 74 68 61 74 0a 20 20 20 20 6f 66 20  hes that.    of 
5c30: 74 68 65 20 73 79 73 74 65 6d 20 69 6d 70 6c 65  the system imple
5c40: 6d 65 6e 74 61 74 69 6f 6e 2e 0a 20 20 2d 20 43  mentation..  - C
5c50: 68 61 6e 67 65 20 74 68 65 20 68 65 61 70 20 70  hange the heap p
5c60: 72 6f 66 69 6c 65 20 64 75 6d 70 20 66 6f 72 6d  rofile dump form
5c70: 61 74 20 74 6f 20 73 75 70 70 6f 72 74 20 70 65  at to support pe
5c80: 72 20 74 68 72 65 61 64 20 68 65 61 70 20 70 72  r thread heap pr
5c90: 6f 66 69 6c 69 6e 67 2c 0a 20 20 20 20 72 65 6e  ofiling,.    ren
5ca0: 61 6d 65 20 70 70 72 6f 66 20 74 6f 20 6a 65 70  ame pprof to jep
5cb0: 72 6f 66 2c 20 61 6e 64 20 65 6e 68 61 6e 63 65  rof, and enhance
5cc0: 20 69 74 20 77 69 74 68 20 74 68 65 20 2d 2d 74   it with the --t
5cd0: 68 72 65 61 64 3d 3c 6e 3e 20 6f 70 74 69 6f 6e  hread=<n> option
5ce0: 2e 20 20 41 73 20 61 0a 20 20 20 20 72 65 73 75  .  As a.    resu
5cf0: 6c 74 2c 20 74 68 65 20 62 75 6e 64 6c 65 64 20  lt, the bundled 
5d00: 6a 65 70 72 6f 66 20 6d 75 73 74 20 6e 6f 77 20  jeprof must now 
5d10: 62 65 20 75 73 65 64 20 72 61 74 68 65 72 20 74  be used rather t
5d20: 68 61 6e 20 74 68 65 20 75 70 73 74 72 65 61 6d  han the upstream
5d30: 0a 20 20 20 20 28 67 70 65 72 66 74 6f 6f 6c 73  .    (gperftools
5d40: 29 20 70 70 72 6f 66 2e 0a 20 20 2d 20 44 69 73  ) pprof..  - Dis
5d50: 61 62 6c 65 20 22 6f 70 74 2e 70 72 6f 66 5f 66  able "opt.prof_f
5d60: 69 6e 61 6c 22 20 62 79 20 64 65 66 61 75 6c 74  inal" by default
5d70: 2c 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 61 76  , in order to av
5d80: 6f 69 64 20 61 74 65 78 69 74 28 33 29 2c 20 77  oid atexit(3), w
5d90: 68 69 63 68 20 63 61 6e 0a 20 20 20 20 69 6e 74  hich can.    int
5da0: 65 72 6e 61 6c 6c 79 20 64 65 61 64 6c 6f 63 6b  ernally deadlock
5db0: 20 6f 6e 20 73 6f 6d 65 20 70 6c 61 74 66 6f 72   on some platfor
5dc0: 6d 73 2e 0a 20 20 2d 20 43 68 61 6e 67 65 20 74  ms..  - Change t
5dd0: 68 65 20 22 61 72 65 6e 61 73 2e 6e 6c 72 75 6e  he "arenas.nlrun
5de0: 73 22 20 6d 61 6c 6c 63 74 6c 20 74 79 70 65 20  s" mallctl type 
5df0: 66 72 6f 6d 20 73 69 7a 65 5f 74 20 74 6f 20 75  from size_t to u
5e00: 6e 73 69 67 6e 65 64 2e 0a 20 20 2d 20 52 65 70  nsigned..  - Rep
5e10: 6c 61 63 65 20 74 68 65 20 22 73 74 61 74 73 2e  lace the "stats.
5e20: 61 72 65 6e 61 73 2e 3c 69 3e 2e 62 69 6e 73 2e  arenas.<i>.bins.
5e30: 3c 6a 3e 2e 61 6c 6c 6f 63 61 74 65 64 22 20 6d  <j>.allocated" m
5e40: 61 6c 6c 63 74 6c 20 77 69 74 68 0a 20 20 20 20  allctl with.    
5e50: 22 73 74 61 74 73 2e 61 72 65 6e 61 73 2e 3c 69  "stats.arenas.<i
5e60: 3e 2e 62 69 6e 73 2e 3c 6a 3e 2e 63 75 72 72 65  >.bins.<j>.curre
5e70: 67 73 22 2e 0a 20 20 2d 20 49 67 6e 6f 72 65 20  gs"..  - Ignore 
5e80: 4d 41 4c 4c 4f 43 5f 43 4f 4e 46 20 69 6e 20 73  MALLOC_CONF in s
5e90: 65 74 7b 75 69 64 2c 67 69 64 2c 63 61 70 7d 20  et{uid,gid,cap} 
5ea0: 62 69 6e 61 72 69 65 73 2e 0a 20 20 2d 20 49 67  binaries..  - Ig
5eb0: 6e 6f 72 65 20 4d 41 4c 4c 4f 43 58 5f 41 52 45  nore MALLOCX_ARE
5ec0: 4e 41 28 61 29 20 69 6e 20 64 61 6c 6c 6f 63 78  NA(a) in dallocx
5ed0: 28 29 2c 20 69 6e 20 66 61 76 6f 72 20 6f 66 20  (), in favor of 
5ee0: 75 73 69 6e 67 20 74 68 65 0a 20 20 20 20 4d 41  using the.    MA
5ef0: 4c 4c 4f 43 58 5f 54 43 41 43 48 45 28 74 63 29  LLOCX_TCACHE(tc)
5f00: 20 61 6e 64 20 4d 41 4c 4c 4f 43 58 5f 54 43 41   and MALLOCX_TCA
5f10: 43 48 45 5f 4e 4f 4e 45 20 66 6c 61 67 73 20 74  CHE_NONE flags t
5f20: 6f 20 63 6f 6e 74 72 6f 6c 20 74 63 61 63 68 65  o control tcache
5f30: 20 75 73 61 67 65 2e 0a 0a 20 20 52 65 6d 6f 76   usage...  Remov
5f40: 65 64 20 66 65 61 74 75 72 65 73 3a 0a 20 20 2d  ed features:.  -
5f50: 20 52 65 6d 6f 76 65 20 74 68 65 20 2a 61 6c 6c   Remove the *all
5f60: 6f 63 6d 28 29 20 41 50 49 2c 20 77 68 69 63 68  ocm() API, which
5f70: 20 69 73 20 73 75 70 65 72 73 65 64 65 64 20 62   is superseded b
5f80: 79 20 74 68 65 20 2a 61 6c 6c 6f 63 78 28 29 20  y the *allocx() 
5f90: 41 50 49 2e 0a 20 20 2d 20 52 65 6d 6f 76 65 20  API..  - Remove 
5fa0: 74 68 65 20 2d 2d 65 6e 61 62 6c 65 2d 64 73 73  the --enable-dss
5fb0: 20 6f 70 74 69 6f 6e 73 2c 20 61 6e 64 20 6d 61   options, and ma
5fc0: 6b 65 20 64 73 73 20 6e 6f 6e 2d 6f 70 74 69 6f  ke dss non-optio
5fd0: 6e 61 6c 20 6f 6e 20 61 6c 6c 20 70 6c 61 74 66  nal on all platf
5fe0: 6f 72 6d 73 0a 20 20 20 20 77 68 69 63 68 20 73  orms.    which s
5ff0: 75 70 70 6f 72 74 20 73 62 72 6b 28 32 29 2e 0a  upport sbrk(2)..
6000: 20 20 2d 20 52 65 6d 6f 76 65 20 74 68 65 20 22    - Remove the "
6010: 61 72 65 6e 61 73 2e 70 75 72 67 65 22 20 6d 61  arenas.purge" ma
6020: 6c 6c 63 74 6c 2c 20 77 68 69 63 68 20 77 61 73  llctl, which was
6030: 20 6f 62 73 6f 6c 65 74 65 64 20 62 79 20 74 68   obsoleted by th
6040: 65 0a 20 20 20 20 22 61 72 65 6e 61 2e 3c 69 3e  e.    "arena.<i>
6050: 2e 70 75 72 67 65 22 20 6d 61 6c 6c 63 74 6c 20  .purge" mallctl 
6060: 69 6e 20 33 2e 31 2e 30 2e 0a 20 20 2d 20 52 65  in 3.1.0..  - Re
6070: 6d 6f 76 65 20 74 68 65 20 75 6e 6e 65 63 65 73  move the unneces
6080: 73 61 72 79 20 22 6f 70 74 2e 76 61 6c 67 72 69  sary "opt.valgri
6090: 6e 64 22 20 6d 61 6c 6c 63 74 6c 3b 20 6a 65 6d  nd" mallctl; jem
60a0: 61 6c 6c 6f 63 20 61 75 74 6f 6d 61 74 69 63 61  alloc automatica
60b0: 6c 6c 79 0a 20 20 20 20 64 65 74 65 63 74 73 20  lly.    detects 
60c0: 77 68 65 74 68 65 72 20 69 74 20 69 73 20 72 75  whether it is ru
60d0: 6e 6e 69 6e 67 20 69 6e 73 69 64 65 20 56 61 6c  nning inside Val
60e0: 67 72 69 6e 64 2e 0a 20 20 2d 20 52 65 6d 6f 76  grind..  - Remov
60f0: 65 20 74 68 65 20 22 73 74 61 74 73 2e 68 75 67  e the "stats.hug
6100: 65 2e 61 6c 6c 6f 63 61 74 65 64 22 2c 20 22 73  e.allocated", "s
6110: 74 61 74 73 2e 68 75 67 65 2e 6e 6d 61 6c 6c 6f  tats.huge.nmallo
6120: 63 22 2c 20 61 6e 64 0a 20 20 20 20 22 73 74 61  c", and.    "sta
6130: 74 73 2e 68 75 67 65 2e 6e 64 61 6c 6c 6f 63 22  ts.huge.ndalloc"
6140: 20 6d 61 6c 6c 63 74 6c 73 2e 0a 20 20 2d 20 52   mallctls..  - R
6150: 65 6d 6f 76 65 20 74 68 65 20 2d 2d 65 6e 61 62  emove the --enab
6160: 6c 65 2d 6d 72 65 6d 61 70 20 6f 70 74 69 6f 6e  le-mremap option
6170: 2e 0a 20 20 2d 20 52 65 6d 6f 76 65 20 74 68 65  ..  - Remove the
6180: 20 22 73 74 61 74 73 2e 63 68 75 6e 6b 73 2e 63   "stats.chunks.c
6190: 75 72 72 65 6e 74 22 2c 20 22 73 74 61 74 73 2e  urrent", "stats.
61a0: 63 68 75 6e 6b 73 2e 74 6f 74 61 6c 22 2c 20 61  chunks.total", a
61b0: 6e 64 0a 20 20 20 20 22 73 74 61 74 73 2e 63 68  nd.    "stats.ch
61c0: 75 6e 6b 73 2e 68 69 67 68 22 20 6d 61 6c 6c 63  unks.high" mallc
61d0: 74 6c 73 2e 0a 0a 20 20 42 75 67 20 66 69 78 65  tls...  Bug fixe
61e0: 73 3a 0a 20 20 2d 20 46 69 78 20 74 68 65 20 63  s:.  - Fix the c
61f0: 61 63 74 69 76 65 20 73 74 61 74 69 73 74 69 63  active statistic
6200: 20 74 6f 20 64 65 63 72 65 61 73 65 20 28 72 61   to decrease (ra
6210: 74 68 65 72 20 74 68 61 6e 20 69 6e 63 72 65 61  ther than increa
6220: 73 65 29 20 77 68 65 6e 20 61 63 74 69 76 65 0a  se) when active.
6230: 20 20 20 20 6d 65 6d 6f 72 79 20 64 65 63 72 65      memory decre
6240: 61 73 65 73 2e 20 20 54 68 69 73 20 72 65 67 72  ases.  This regr
6250: 65 73 73 69 6f 6e 20 77 61 73 20 66 69 72 73 74  ession was first
6260: 20 72 65 6c 65 61 73 65 64 20 69 6e 20 33 2e 35   released in 3.5
6270: 2e 30 2e 0a 20 20 2d 20 46 69 78 20 4f 4f 4d 20  .0..  - Fix OOM 
6280: 68 61 6e 64 6c 69 6e 67 20 69 6e 20 6d 65 6d 61  handling in mema
6290: 6c 69 67 6e 28 29 20 61 6e 64 20 76 61 6c 6c 6f  lign() and vallo
62a0: 63 28 29 2e 20 20 41 20 76 61 72 69 61 6e 74 20  c().  A variant 
62b0: 6f 66 20 74 68 69 73 20 62 75 67 20 65 78 69 73  of this bug exis
62c0: 74 65 64 0a 20 20 20 20 69 6e 20 61 6c 6c 20 72  ted.    in all r
62d0: 65 6c 65 61 73 65 73 20 73 69 6e 63 65 20 32 2e  eleases since 2.
62e0: 30 2e 30 2c 20 77 68 69 63 68 20 69 6e 74 72 6f  0.0, which intro
62f0: 64 75 63 65 64 20 74 68 65 73 65 20 66 75 6e 63  duced these func
6300: 74 69 6f 6e 73 2e 0a 20 20 2d 20 46 69 78 20 61  tions..  - Fix a
6310: 6e 20 4f 4f 4d 2d 72 65 6c 61 74 65 64 20 72 65  n OOM-related re
6320: 67 72 65 73 73 69 6f 6e 20 69 6e 20 61 72 65 6e  gression in aren
6330: 61 5f 74 63 61 63 68 65 5f 66 69 6c 6c 5f 73 6d  a_tcache_fill_sm
6340: 61 6c 6c 28 29 2c 20 77 68 69 63 68 20 63 6f 75  all(), which cou
6350: 6c 64 0a 20 20 20 20 63 61 75 73 65 20 63 61 63  ld.    cause cac
6360: 68 65 20 63 6f 72 72 75 70 74 69 6f 6e 20 6f 6e  he corruption on
6370: 20 4f 4f 4d 2e 20 20 54 68 69 73 20 72 65 67 72   OOM.  This regr
6380: 65 73 73 69 6f 6e 20 77 61 73 20 70 72 65 73 65  ession was prese
6390: 6e 74 20 69 6e 20 61 6c 6c 20 72 65 6c 65 61 73  nt in all releas
63a0: 65 73 0a 20 20 20 20 66 72 6f 6d 20 32 2e 32 2e  es.    from 2.2.
63b0: 30 20 74 68 72 6f 75 67 68 20 33 2e 36 2e 30 2e  0 through 3.6.0.
63c0: 0a 20 20 2d 20 46 69 78 20 73 69 7a 65 20 63 6c  .  - Fix size cl
63d0: 61 73 73 20 6f 76 65 72 66 6c 6f 77 20 68 61 6e  ass overflow han
63e0: 64 6c 69 6e 67 20 66 6f 72 20 6d 61 6c 6c 6f 63  dling for malloc
63f0: 28 29 2c 20 70 6f 73 69 78 5f 6d 65 6d 61 6c 69  (), posix_memali
6400: 67 6e 28 29 2c 20 6d 65 6d 61 6c 69 67 6e 28 29  gn(), memalign()
6410: 2c 0a 20 20 20 20 63 61 6c 6c 6f 63 28 29 2c 20  ,.    calloc(), 
6420: 61 6e 64 20 72 65 61 6c 6c 6f 63 28 29 20 77 68  and realloc() wh
6430: 65 6e 20 70 72 6f 66 69 6c 69 6e 67 20 69 73 20  en profiling is 
6440: 65 6e 61 62 6c 65 64 2e 0a 20 20 2d 20 46 69 78  enabled..  - Fix
6450: 20 74 68 65 20 22 61 72 65 6e 61 2e 3c 69 3e 2e   the "arena.<i>.
6460: 64 73 73 22 20 6d 61 6c 6c 63 74 6c 20 74 6f 20  dss" mallctl to 
6470: 72 65 74 75 72 6e 20 61 6e 20 65 72 72 6f 72 20  return an error 
6480: 69 66 20 22 70 72 69 6d 61 72 79 22 20 6f 72 0a  if "primary" or.
6490: 20 20 20 20 22 73 65 63 6f 6e 64 61 72 79 22 20      "secondary" 
64a0: 70 72 65 63 65 64 65 6e 63 65 20 69 73 20 73 70  precedence is sp
64b0: 65 63 69 66 69 65 64 2c 20 62 75 74 20 73 62 72  ecified, but sbr
64c0: 6b 28 32 29 20 69 73 20 6e 6f 74 20 73 75 70 70  k(2) is not supp
64d0: 6f 72 74 65 64 2e 0a 20 20 2d 20 46 69 78 20 66  orted..  - Fix f
64e0: 61 6c 6c 62 61 63 6b 20 6c 67 5f 66 6c 6f 6f 72  allback lg_floor
64f0: 28 29 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  () implementatio
6500: 6e 73 20 74 6f 20 68 61 6e 64 6c 65 20 65 78 74  ns to handle ext
6510: 72 65 6d 65 6c 79 20 6c 61 72 67 65 20 69 6e 70  remely large inp
6520: 75 74 73 2e 0a 20 20 2d 20 45 6e 73 75 72 65 20  uts..  - Ensure 
6530: 74 68 65 20 64 65 66 61 75 6c 74 20 70 75 72 67  the default purg
6540: 65 61 62 6c 65 20 7a 6f 6e 65 20 69 73 20 61 66  eable zone is af
6550: 74 65 72 20 74 68 65 20 64 65 66 61 75 6c 74 20  ter the default 
6560: 7a 6f 6e 65 20 6f 6e 20 4f 53 20 58 2e 0a 20 20  zone on OS X..  
6570: 2d 20 46 69 78 20 6c 61 74 65 6e 74 20 62 75 67  - Fix latent bug
6580: 73 20 69 6e 20 61 74 6f 6d 69 63 5f 2a 28 29 2e  s in atomic_*().
6590: 0a 20 20 2d 20 46 69 78 20 74 68 65 20 22 61 72  .  - Fix the "ar
65a0: 65 6e 61 2e 3c 69 3e 2e 64 73 73 22 20 6d 61 6c  ena.<i>.dss" mal
65b0: 6c 63 74 6c 20 74 6f 20 68 61 6e 64 6c 65 20 72  lctl to handle r
65c0: 65 61 64 2d 6f 6e 6c 79 20 63 61 6c 6c 73 2e 0a  ead-only calls..
65d0: 20 20 2d 20 46 69 78 20 74 6c 73 5f 6d 6f 64 65    - Fix tls_mode
65e0: 6c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  l configuration 
65f0: 74 6f 20 65 6e 61 62 6c 65 20 74 68 65 20 69 6e  to enable the in
6600: 69 74 69 61 6c 2d 65 78 65 63 20 6d 6f 64 65 6c  itial-exec model
6610: 20 77 68 65 6e 20 70 6f 73 73 69 62 6c 65 2e 0a   when possible..
6620: 20 20 2d 20 4d 61 72 6b 20 6d 61 6c 6c 6f 63 5f    - Mark malloc_
6630: 63 6f 6e 66 20 61 73 20 61 20 77 65 61 6b 20 73  conf as a weak s
6640: 79 6d 62 6f 6c 20 73 6f 20 74 68 61 74 20 74 68  ymbol so that th
6650: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 63 61  e application ca
6660: 6e 20 6f 76 65 72 72 69 64 65 20 69 74 2e 0a 20  n override it.. 
6670: 20 2d 20 43 6f 72 72 65 63 74 6c 79 20 64 65 74   - Correctly det
6680: 65 63 74 20 67 6c 69 62 63 27 73 20 61 64 61 70  ect glibc's adap
6690: 74 69 76 65 20 70 74 68 72 65 61 64 20 6d 75 74  tive pthread mut
66a0: 65 78 65 73 2e 0a 20 20 2d 20 46 69 78 20 74 68  exes..  - Fix th
66b0: 65 20 2d 2d 77 69 74 68 6f 75 74 2d 65 78 70 6f  e --without-expo
66c0: 72 74 20 63 6f 6e 66 69 67 75 72 65 20 6f 70 74  rt configure opt
66d0: 69 6f 6e 2e 0a 0a 2a 20 33 2e 36 2e 30 20 28 4d  ion...* 3.6.0 (M
66e0: 61 72 63 68 20 33 31 2c 20 32 30 31 34 29 0a 0a  arch 31, 2014)..
66f0: 20 20 54 68 69 73 20 76 65 72 73 69 6f 6e 20 63    This version c
6700: 6f 6e 74 61 69 6e 73 20 61 20 63 72 69 74 69 63  ontains a critic
6710: 61 6c 20 62 75 67 20 66 69 78 20 66 6f 72 20 61  al bug fix for a
6720: 20 72 65 67 72 65 73 73 69 6f 6e 20 70 72 65 73   regression pres
6730: 65 6e 74 20 69 6e 20 33 2e 35 2e 30 20 61 6e 64  ent in 3.5.0 and
6740: 0a 20 20 33 2e 35 2e 31 2e 0a 0a 20 20 42 75 67  .  3.5.1...  Bug
6750: 20 66 69 78 65 73 3a 0a 20 20 2d 20 46 69 78 20   fixes:.  - Fix 
6760: 61 20 72 65 67 72 65 73 73 69 6f 6e 20 69 6e 20  a regression in 
6770: 61 72 65 6e 61 5f 63 68 75 6e 6b 5f 61 6c 6c 6f  arena_chunk_allo
6780: 63 28 29 20 74 68 61 74 20 63 61 75 73 65 64 20  c() that caused 
6790: 63 72 61 73 68 65 73 20 64 75 72 69 6e 67 0a 20  crashes during. 
67a0: 20 20 20 73 6d 61 6c 6c 2f 6c 61 72 67 65 20 61     small/large a
67b0: 6c 6c 6f 63 61 74 69 6f 6e 20 69 66 20 63 68 75  llocation if chu
67c0: 6e 6b 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 66 61  nk allocation fa
67d0: 69 6c 65 64 2e 20 20 49 6e 20 74 68 65 20 61 62  iled.  In the ab
67e0: 73 65 6e 63 65 20 6f 66 20 74 68 69 73 0a 20 20  sence of this.  
67f0: 20 20 62 75 67 2c 20 63 68 75 6e 6b 20 61 6c 6c    bug, chunk all
6800: 6f 63 61 74 69 6f 6e 20 66 61 69 6c 75 72 65 20  ocation failure 
6810: 77 6f 75 6c 64 20 72 65 73 75 6c 74 20 69 6e 20  would result in 
6820: 61 6c 6c 6f 63 61 74 69 6f 6e 20 66 61 69 6c 75  allocation failu
6830: 72 65 2c 20 65 2e 67 2e 20 20 4e 55 4c 4c 0a 20  re, e.g.  NULL. 
6840: 20 20 20 72 65 74 75 72 6e 20 66 72 6f 6d 20 6d     return from m
6850: 61 6c 6c 6f 63 28 29 2e 20 20 54 68 69 73 20 72  alloc().  This r
6860: 65 67 72 65 73 73 69 6f 6e 20 77 61 73 20 69 6e  egression was in
6870: 74 72 6f 64 75 63 65 64 20 69 6e 20 33 2e 35 2e  troduced in 3.5.
6880: 30 2e 0a 20 20 2d 20 46 69 78 20 62 61 63 6b 74  0..  - Fix backt
6890: 72 61 63 69 6e 67 20 66 6f 72 20 67 63 63 20 69  racing for gcc i
68a0: 6e 74 72 69 6e 73 69 63 73 2d 62 61 73 65 64 20  ntrinsics-based 
68b0: 62 61 63 6b 74 72 61 63 69 6e 67 20 62 79 20 73  backtracing by s
68c0: 70 65 63 69 66 79 69 6e 67 0a 20 20 20 20 2d 66  pecifying.    -f
68d0: 6e 6f 2d 6f 6d 69 74 2d 66 72 61 6d 65 2d 70 6f  no-omit-frame-po
68e0: 69 6e 74 65 72 20 74 6f 20 67 63 63 2e 20 20 4e  inter to gcc.  N
68f0: 6f 74 65 20 74 68 61 74 20 74 68 65 20 61 70 70  ote that the app
6900: 6c 69 63 61 74 69 6f 6e 20 28 61 6e 64 20 61 6c  lication (and al
6910: 6c 20 74 68 65 0a 20 20 20 20 6c 69 62 72 61 72  l the.    librar
6920: 69 65 73 20 69 74 20 6c 69 6e 6b 73 20 74 6f 29  ies it links to)
6930: 20 6d 75 73 74 20 61 6c 73 6f 20 62 65 20 63 6f   must also be co
6940: 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68 69 73  mpiled with this
6950: 20 6f 70 74 69 6f 6e 20 66 6f 72 0a 20 20 20 20   option for.    
6960: 62 61 63 6b 74 72 61 63 69 6e 67 20 74 6f 20 62  backtracing to b
6970: 65 20 72 65 6c 69 61 62 6c 65 2e 0a 20 20 2d 20  e reliable..  - 
6980: 55 73 65 20 64 73 73 20 61 6c 6c 6f 63 61 74 69  Use dss allocati
6990: 6f 6e 20 70 72 65 63 65 64 65 6e 63 65 20 66 6f  on precedence fo
69a0: 72 20 68 75 67 65 20 61 6c 6c 6f 63 61 74 69 6f  r huge allocatio
69b0: 6e 73 20 61 73 20 77 65 6c 6c 20 61 73 20 73 6d  ns as well as sm
69c0: 61 6c 6c 2f 6c 61 72 67 65 0a 20 20 20 20 61 6c  all/large.    al
69d0: 6c 6f 63 61 74 69 6f 6e 73 2e 0a 20 20 2d 20 46  locations..  - F
69e0: 69 78 20 74 65 73 74 20 61 73 73 65 72 74 69 6f  ix test assertio
69f0: 6e 20 66 61 69 6c 75 72 65 20 6d 65 73 73 61 67  n failure messag
6a00: 65 20 66 6f 72 6d 61 74 74 69 6e 67 2e 20 20 54  e formatting.  T
6a10: 68 69 73 20 62 75 67 20 64 69 64 20 6e 6f 74 20  his bug did not 
6a20: 6d 61 6e 69 66 65 73 74 20 6f 6e 0a 20 20 20 20  manifest on.    
6a30: 78 38 36 5f 36 34 20 73 79 73 74 65 6d 73 20 62  x86_64 systems b
6a40: 65 63 61 75 73 65 20 6f 66 20 69 6d 70 6c 65 6d  ecause of implem
6a50: 65 6e 74 61 74 69 6f 6e 20 73 75 62 74 6c 65 74  entation subtlet
6a60: 69 65 73 20 69 6e 20 76 61 5f 6c 69 73 74 2e 0a  ies in va_list..
6a70: 20 20 2d 20 46 69 78 20 69 6e 63 6f 6e 73 65 71    - Fix inconseq
6a80: 75 65 6e 74 69 61 6c 20 74 65 73 74 20 66 61 69  uential test fai
6a90: 6c 75 72 65 73 20 66 6f 72 20 68 61 73 68 20 61  lures for hash a
6aa0: 6e 64 20 53 46 4d 54 20 63 6f 64 65 2e 0a 0a 20  nd SFMT code... 
6ab0: 20 4e 65 77 20 66 65 61 74 75 72 65 73 3a 0a 20   New features:. 
6ac0: 20 2d 20 53 75 70 70 6f 72 74 20 68 65 61 70 20   - Support heap 
6ad0: 70 72 6f 66 69 6c 69 6e 67 20 6f 6e 20 46 72 65  profiling on Fre
6ae0: 65 42 53 44 2e 20 20 54 68 69 73 20 66 65 61 74  eBSD.  This feat
6af0: 75 72 65 20 64 65 70 65 6e 64 73 20 6f 6e 20 74  ure depends on t
6b00: 68 65 20 70 72 6f 63 0a 20 20 20 20 66 69 6c 65  he proc.    file
6b10: 73 79 73 74 65 6d 20 62 65 69 6e 67 20 6d 6f 75  system being mou
6b20: 6e 74 65 64 20 64 75 72 69 6e 67 20 68 65 61 70  nted during heap
6b30: 20 70 72 6f 66 69 6c 65 20 64 75 6d 70 69 6e 67   profile dumping
6b40: 2e 0a 0a 2a 20 33 2e 35 2e 31 20 28 46 65 62 72  ...* 3.5.1 (Febr
6b50: 75 61 72 79 20 32 35 2c 20 32 30 31 34 29 0a 0a  uary 25, 2014)..
6b60: 20 20 54 68 69 73 20 76 65 72 73 69 6f 6e 20 70    This version p
6b70: 72 69 6d 61 72 69 6c 79 20 61 64 64 72 65 73 73  rimarily address
6b80: 65 73 20 6d 69 6e 6f 72 20 62 75 67 73 20 69 6e  es minor bugs in
6b90: 20 74 65 73 74 20 63 6f 64 65 2e 0a 0a 20 20 42   test code...  B
6ba0: 75 67 20 66 69 78 65 73 3a 0a 20 20 2d 20 43 6f  ug fixes:.  - Co
6bb0: 6e 66 69 67 75 72 65 20 53 6f 6c 61 72 69 73 2f  nfigure Solaris/
6bc0: 49 6c 6c 75 6d 6f 73 20 74 6f 20 75 73 65 20 4d  Illumos to use M
6bd0: 41 44 56 5f 46 52 45 45 2e 0a 20 20 2d 20 46 69  ADV_FREE..  - Fi
6be0: 78 20 6a 75 6e 6b 20 66 69 6c 6c 69 6e 67 20 66  x junk filling f
6bf0: 6f 72 20 6d 72 65 6d 61 70 28 32 29 2d 62 61 73  or mremap(2)-bas
6c00: 65 64 20 68 75 67 65 20 72 65 61 6c 6c 6f 63 61  ed huge realloca
6c10: 74 69 6f 6e 2e 20 20 54 68 69 73 20 69 73 20 6f  tion.  This is o
6c20: 6e 6c 79 0a 20 20 20 20 72 65 6c 65 76 61 6e 74  nly.    relevant
6c30: 20 69 66 20 63 6f 6e 66 69 67 75 72 69 6e 67 20   if configuring 
6c40: 77 69 74 68 20 74 68 65 20 2d 2d 65 6e 61 62 6c  with the --enabl
6c50: 65 2d 6d 72 65 6d 61 70 20 6f 70 74 69 6f 6e 20  e-mremap option 
6c60: 73 70 65 63 69 66 69 65 64 2e 0a 20 20 2d 20 41  specified..  - A
6c70: 76 6f 69 64 20 63 6f 6d 70 69 6c 61 74 69 6f 6e  void compilation
6c80: 20 66 61 69 6c 75 72 65 20 69 66 20 27 72 65 73   failure if 'res
6c90: 74 72 69 63 74 27 20 43 39 39 20 6b 65 79 77 6f  trict' C99 keywo
6ca0: 72 64 20 69 73 20 6e 6f 74 20 73 75 70 70 6f 72  rd is not suppor
6cb0: 74 65 64 20 62 79 20 74 68 65 0a 20 20 20 20 63  ted by the.    c
6cc0: 6f 6d 70 69 6c 65 72 2e 0a 20 20 2d 20 41 64 64  ompiler..  - Add
6cd0: 20 61 20 63 6f 6e 66 69 67 75 72 65 20 74 65 73   a configure tes
6ce0: 74 20 66 6f 72 20 53 53 45 32 20 72 61 74 68 65  t for SSE2 rathe
6cf0: 72 20 74 68 61 6e 20 61 73 73 75 6d 69 6e 67 20  r than assuming 
6d00: 69 74 20 69 73 20 75 73 61 62 6c 65 20 6f 6e 20  it is usable on 
6d10: 69 36 38 36 0a 20 20 20 20 73 79 73 74 65 6d 73  i686.    systems
6d20: 2e 20 20 54 68 69 73 20 66 69 78 65 73 20 74 65  .  This fixes te
6d30: 73 74 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 65  st compilation e
6d40: 72 72 6f 72 73 2c 20 65 73 70 65 63 69 61 6c 6c  rrors, especiall
6d50: 79 20 6f 6e 20 33 32 2d 62 69 74 20 4c 69 6e 75  y on 32-bit Linu
6d60: 78 0a 20 20 20 20 73 79 73 74 65 6d 73 2e 0a 20  x.    systems.. 
6d70: 20 2d 20 46 69 78 20 6d 61 6c 6c 63 74 6c 20 61   - Fix mallctl a
6d80: 72 67 75 6d 65 6e 74 20 73 69 7a 65 20 6d 69 73  rgument size mis
6d90: 6d 61 74 63 68 65 73 20 28 73 69 7a 65 5f 74 20  matches (size_t 
6da0: 76 73 2e 20 75 69 6e 74 36 34 5f 74 29 20 69 6e  vs. uint64_t) in
6db0: 20 74 68 65 20 73 74 61 74 73 20 75 6e 69 74 0a   the stats unit.
6dc0: 20 20 20 20 74 65 73 74 2e 0a 20 20 2d 20 46 69      test..  - Fi
6dd0: 78 2f 72 65 6d 6f 76 65 20 66 6c 61 77 65 64 20  x/remove flawed 
6de0: 61 6c 69 67 6e 6d 65 6e 74 2d 72 65 6c 61 74 65  alignment-relate
6df0: 64 20 6f 76 65 72 66 6c 6f 77 20 74 65 73 74 73  d overflow tests
6e00: 2e 0a 20 20 2d 20 50 72 65 76 65 6e 74 20 63 6f  ..  - Prevent co
6e10: 6d 70 69 6c 65 72 20 6f 70 74 69 6d 69 7a 61 74  mpiler optimizat
6e20: 69 6f 6e 73 20 74 68 61 74 20 63 6f 75 6c 64 20  ions that could 
6e30: 63 68 61 6e 67 65 20 62 61 63 6b 74 72 61 63 65  change backtrace
6e40: 73 20 69 6e 20 74 68 65 0a 20 20 20 20 70 72 6f  s in the.    pro
6e50: 66 5f 61 63 63 75 6d 20 75 6e 69 74 20 74 65 73  f_accum unit tes
6e60: 74 2e 0a 0a 2a 20 33 2e 35 2e 30 20 28 4a 61 6e  t...* 3.5.0 (Jan
6e70: 75 61 72 79 20 32 32 2c 20 32 30 31 34 29 0a 0a  uary 22, 2014)..
6e80: 20 20 54 68 69 73 20 76 65 72 73 69 6f 6e 20 66    This version f
6e90: 6f 63 75 73 65 73 20 6f 6e 20 72 65 66 61 63 74  ocuses on refact
6ea0: 6f 72 69 6e 67 20 61 6e 64 20 61 75 74 6f 6d 61  oring and automa
6eb0: 74 65 64 20 74 65 73 74 69 6e 67 2c 20 74 68 6f  ted testing, tho
6ec0: 75 67 68 20 69 74 20 61 6c 73 6f 0a 20 20 69 6e  ugh it also.  in
6ed0: 63 6c 75 64 65 73 20 73 6f 6d 65 20 6e 6f 6e 2d  cludes some non-
6ee0: 74 72 69 76 69 61 6c 20 68 65 61 70 20 70 72 6f  trivial heap pro
6ef0: 66 69 6c 69 6e 67 20 6f 70 74 69 6d 69 7a 61 74  filing optimizat
6f00: 69 6f 6e 73 20 6e 6f 74 20 6d 65 6e 74 69 6f 6e  ions not mention
6f10: 65 64 20 62 65 6c 6f 77 2e 0a 0a 20 20 4e 65 77  ed below...  New
6f20: 20 66 65 61 74 75 72 65 73 3a 0a 20 20 2d 20 41   features:.  - A
6f30: 64 64 20 74 68 65 20 2a 61 6c 6c 6f 63 78 28 29  dd the *allocx()
6f40: 20 41 50 49 2c 20 77 68 69 63 68 20 69 73 20 61   API, which is a
6f50: 20 73 75 63 63 65 73 73 6f 72 20 74 6f 20 74 68   successor to th
6f60: 65 20 65 78 70 65 72 69 6d 65 6e 74 61 6c 20 2a  e experimental *
6f70: 61 6c 6c 6f 63 6d 28 29 0a 20 20 20 20 41 50 49  allocm().    API
6f80: 2e 20 20 54 68 65 20 2a 61 6c 6c 6f 63 78 28 29  .  The *allocx()
6f90: 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 73   functions are s
6fa0: 6c 69 67 68 74 6c 79 20 73 69 6d 70 6c 65 72 20  lightly simpler 
6fb0: 74 6f 20 75 73 65 20 62 65 63 61 75 73 65 20 74  to use because t
6fc0: 68 65 79 20 68 61 76 65 0a 20 20 20 20 66 65 77  hey have.    few
6fd0: 65 72 20 70 61 72 61 6d 65 74 65 72 73 2c 20 74  er parameters, t
6fe0: 68 65 79 20 64 69 72 65 63 74 6c 79 20 72 65 74  hey directly ret
6ff0: 75 72 6e 20 74 68 65 20 72 65 73 75 6c 74 73 20  urn the results 
7000: 6f 66 20 70 72 69 6d 61 72 79 20 69 6e 74 65 72  of primary inter
7010: 65 73 74 2c 20 61 6e 64 0a 20 20 20 20 6d 61 6c  est, and.    mal
7020: 6c 6f 63 78 28 29 2f 72 61 6c 6c 6f 63 78 28 29  locx()/rallocx()
7030: 20 61 76 6f 69 64 20 74 68 65 20 73 74 72 69 63   avoid the stric
7040: 74 20 61 6c 69 61 73 69 6e 67 20 70 69 74 66 61  t aliasing pitfa
7050: 6c 6c 20 74 68 61 74 0a 20 20 20 20 61 6c 6c 6f  ll that.    allo
7060: 63 6d 28 29 2f 72 61 6c 6c 6f 63 6d 28 29 20 73  cm()/rallocm() s
7070: 68 61 72 65 20 77 69 74 68 20 70 6f 73 69 78 5f  hare with posix_
7080: 6d 65 6d 61 6c 69 67 6e 28 29 2e 20 20 4e 6f 74  memalign().  Not
7090: 65 20 74 68 61 74 20 2a 61 6c 6c 6f 63 6d 28 29  e that *allocm()
70a0: 20 69 73 0a 20 20 20 20 73 6c 61 74 65 64 20 66   is.    slated f
70b0: 6f 72 20 72 65 6d 6f 76 61 6c 20 69 6e 20 74 68  or removal in th
70c0: 65 20 6e 65 78 74 20 6e 6f 6e 2d 62 75 67 66 69  e next non-bugfi
70d0: 78 20 72 65 6c 65 61 73 65 2e 0a 20 20 2d 20 41  x release..  - A
70e0: 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 4c  dd support for L
70f0: 69 6e 75 78 54 68 72 65 61 64 73 2e 0a 0a 20 20  inuxThreads...  
7100: 42 75 67 20 66 69 78 65 73 3a 0a 20 20 2d 20 55  Bug fixes:.  - U
7110: 6e 6c 65 73 73 20 68 65 61 70 20 70 72 6f 66 69  nless heap profi
7120: 6c 69 6e 67 20 69 73 20 65 6e 61 62 6c 65 64 2c  ling is enabled,
7130: 20 64 69 73 61 62 6c 65 20 66 6c 6f 61 74 69 6e   disable floatin
7140: 67 20 70 6f 69 6e 74 20 63 6f 64 65 20 61 6e 64  g point code and
7150: 20 64 6f 6e 27 74 20 6c 69 6e 6b 0a 20 20 20 20   don't link.    
7160: 77 69 74 68 20 6c 69 62 6d 2e 20 20 54 68 69 73  with libm.  This
7170: 2c 20 69 6e 20 63 6f 6d 62 69 6e 61 74 69 6f 6e  , in combination
7180: 20 77 69 74 68 20 65 2e 67 2e 20 45 58 54 52 41   with e.g. EXTRA
7190: 5f 43 46 4c 41 47 53 3d 2d 6d 6e 6f 2d 73 73 65  _CFLAGS=-mno-sse
71a0: 20 6f 6e 20 78 36 34 0a 20 20 20 20 73 79 73 74   on x64.    syst
71b0: 65 6d 73 2c 20 6d 61 6b 65 73 20 69 74 20 70 6f  ems, makes it po
71c0: 73 73 69 62 6c 65 20 74 6f 20 63 6f 6d 70 6c 65  ssible to comple
71d0: 74 65 6c 79 20 64 69 73 61 62 6c 65 20 66 6c 6f  tely disable flo
71e0: 61 74 69 6e 67 20 70 6f 69 6e 74 20 72 65 67 69  ating point regi
71f0: 73 74 65 72 0a 20 20 20 20 75 73 65 2e 20 20 53  ster.    use.  S
7200: 6f 6d 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 20  ome versions of 
7210: 67 6c 69 62 63 20 6e 65 67 6c 65 63 74 20 74 6f  glibc neglect to
7220: 20 73 61 76 65 2f 72 65 73 74 6f 72 65 20 63 61   save/restore ca
7230: 6c 6c 65 72 2d 73 61 76 65 64 20 66 6c 6f 61 74  ller-saved float
7240: 69 6e 67 0a 20 20 20 20 70 6f 69 6e 74 20 72 65  ing.    point re
7250: 67 69 73 74 65 72 73 20 64 75 72 69 6e 67 20 64  gisters during d
7260: 79 6e 61 6d 69 63 20 6c 61 7a 79 20 73 79 6d 62  ynamic lazy symb
7270: 6f 6c 20 6c 6f 61 64 69 6e 67 2c 20 61 6e 64 20  ol loading, and 
7280: 74 68 65 20 73 79 6d 62 6f 6c 20 6c 6f 61 64 69  the symbol loadi
7290: 6e 67 0a 20 20 20 20 63 6f 64 65 20 75 73 65 73  ng.    code uses
72a0: 20 77 68 61 74 65 76 65 72 20 6d 61 6c 6c 6f 63   whatever malloc
72b0: 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e   the application
72c0: 20 68 61 70 70 65 6e 73 20 74 6f 20 68 61 76 65   happens to have
72d0: 20 6c 69 6e 6b 65 64 2f 6c 6f 61 64 65 64 0a 20   linked/loaded. 
72e0: 20 20 20 77 69 74 68 2c 20 74 68 65 20 72 65 73     with, the res
72f0: 75 6c 74 20 62 65 69 6e 67 20 70 6f 74 65 6e 74  ult being potent
7300: 69 61 6c 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69  ial floating poi
7310: 6e 74 20 72 65 67 69 73 74 65 72 20 63 6f 72 72  nt register corr
7320: 75 70 74 69 6f 6e 2e 0a 20 20 2d 20 52 65 70 6f  uption..  - Repo
7330: 72 74 20 45 4e 4f 4d 45 4d 20 72 61 74 68 65 72  rt ENOMEM rather
7340: 20 74 68 61 6e 20 45 49 4e 56 41 4c 20 69 66 20   than EINVAL if 
7350: 61 6e 20 4f 4f 4d 20 6f 63 63 75 72 73 20 64 75  an OOM occurs du
7360: 72 69 6e 67 20 68 65 61 70 20 70 72 6f 66 69 6c  ring heap profil
7370: 69 6e 67 0a 20 20 20 20 62 61 63 6b 74 72 61 63  ing.    backtrac
7380: 65 20 63 72 65 61 74 69 6f 6e 20 69 6e 20 69 6d  e creation in im
7390: 65 6d 61 6c 69 67 6e 28 29 2e 20 20 54 68 69 73  emalign().  This
73a0: 20 62 75 67 20 69 6d 70 61 63 74 65 64 20 70 6f   bug impacted po
73b0: 73 69 78 5f 6d 65 6d 61 6c 69 67 6e 28 29 20 61  six_memalign() a
73c0: 6e 64 0a 20 20 20 20 61 6c 69 67 6e 65 64 5f 61  nd.    aligned_a
73d0: 6c 6c 6f 63 28 29 2e 0a 20 20 2d 20 46 69 78 20  lloc()..  - Fix 
73e0: 61 20 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f  a file descripto
73f0: 72 20 6c 65 61 6b 20 69 6e 20 61 20 70 72 6f 66  r leak in a prof
7400: 5f 64 75 6d 70 5f 6d 61 70 73 28 29 20 65 72 72  _dump_maps() err
7410: 6f 72 20 70 61 74 68 2e 0a 20 20 2d 20 46 69 78  or path..  - Fix
7420: 20 70 72 6f 66 5f 64 75 6d 70 28 29 20 74 6f 20   prof_dump() to 
7430: 63 6c 6f 73 65 20 74 68 65 20 64 75 6d 70 20 66  close the dump f
7440: 69 6c 65 20 64 65 73 63 72 69 70 74 6f 72 20 66  ile descriptor f
7450: 6f 72 20 61 6c 6c 20 72 65 6c 65 76 61 6e 74 20  or all relevant 
7460: 65 72 72 6f 72 0a 20 20 20 20 70 61 74 68 73 2e  error.    paths.
7470: 0a 20 20 2d 20 46 69 78 20 72 61 6c 6c 6f 63 6d  .  - Fix rallocm
7480: 28 29 20 74 6f 20 75 73 65 20 74 68 65 20 61 72  () to use the ar
7490: 65 6e 61 20 73 70 65 63 69 66 69 65 64 20 62 79  ena specified by
74a0: 20 74 68 65 20 41 4c 4c 4f 43 4d 5f 41 52 45 4e   the ALLOCM_AREN
74b0: 41 28 73 29 20 66 6c 61 67 20 66 6f 72 0a 20 20  A(s) flag for.  
74c0: 20 20 61 6c 6c 6f 63 61 74 69 6f 6e 2c 20 6e 6f    allocation, no
74d0: 74 20 6a 75 73 74 20 64 65 61 6c 6c 6f 63 61 74  t just deallocat
74e0: 69 6f 6e 2e 0a 20 20 2d 20 46 69 78 20 61 20 64  ion..  - Fix a d
74f0: 61 74 61 20 72 61 63 65 20 66 6f 72 20 6c 61 72  ata race for lar
7500: 67 65 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 74  ge allocation st
7510: 61 74 73 20 63 6f 75 6e 74 65 72 73 2e 0a 20 20  ats counters..  
7520: 2d 20 46 69 78 20 61 20 70 6f 74 65 6e 74 69 61  - Fix a potentia
7530: 6c 20 69 6e 66 69 6e 69 74 65 20 6c 6f 6f 70 20  l infinite loop 
7540: 64 75 72 69 6e 67 20 74 68 72 65 61 64 20 65 78  during thread ex
7550: 69 74 2e 20 20 54 68 69 73 20 62 75 67 20 6f 63  it.  This bug oc
7560: 63 75 72 72 65 64 20 6f 6e 0a 20 20 20 20 53 6f  curred on.    So
7570: 6c 61 72 69 73 2c 20 61 6e 64 20 63 6f 75 6c 64  laris, and could
7580: 20 61 66 66 65 63 74 20 6f 74 68 65 72 20 70 6c   affect other pl
7590: 61 74 66 6f 72 6d 73 20 77 69 74 68 20 73 69 6d  atforms with sim
75a0: 69 6c 61 72 20 70 74 68 72 65 61 64 73 20 54 53  ilar pthreads TS
75b0: 44 0a 20 20 20 20 69 6d 70 6c 65 6d 65 6e 74 61  D.    implementa
75c0: 74 69 6f 6e 73 2e 0a 20 20 2d 20 44 6f 6e 27 74  tions..  - Don't
75d0: 20 6a 75 6e 6b 2d 66 69 6c 6c 20 72 65 61 6c 6c   junk-fill reall
75e0: 6f 63 61 74 69 6f 6e 73 20 75 6e 6c 65 73 73 20  ocations unless 
75f0: 75 73 61 62 6c 65 20 73 69 7a 65 20 63 68 61 6e  usable size chan
7600: 67 65 73 2e 20 20 54 68 69 73 20 66 69 78 65 73  ges.  This fixes
7610: 20 61 0a 20 20 20 20 76 69 6f 6c 61 74 69 6f 6e   a.    violation
7620: 20 6f 66 20 74 68 65 20 2a 61 6c 6c 6f 63 78 28   of the *allocx(
7630: 29 2f 2a 61 6c 6c 6f 63 6d 28 29 20 73 65 6d 61  )/*allocm() sema
7640: 6e 74 69 63 73 2e 0a 20 20 2d 20 46 69 78 20 67  ntics..  - Fix g
7650: 72 6f 77 69 6e 67 20 6c 61 72 67 65 20 72 65 61  rowing large rea
7660: 6c 6c 6f 63 61 74 69 6f 6e 20 74 6f 20 6a 75 6e  llocation to jun
7670: 6b 20 66 69 6c 6c 20 6e 65 77 20 73 70 61 63 65  k fill new space
7680: 2e 0a 20 20 2d 20 46 69 78 20 68 75 67 65 20 64  ..  - Fix huge d
7690: 65 61 6c 6c 6f 63 61 74 69 6f 6e 20 74 6f 20 6a  eallocation to j
76a0: 75 6e 6b 20 66 69 6c 6c 20 77 68 65 6e 20 6d 75  unk fill when mu
76b0: 6e 6d 61 70 20 69 73 20 64 69 73 61 62 6c 65 64  nmap is disabled
76c0: 2e 0a 20 20 2d 20 43 68 61 6e 67 65 20 74 68 65  ..  - Change the
76d0: 20 64 65 66 61 75 6c 74 20 70 72 69 76 61 74 65   default private
76e0: 20 6e 61 6d 65 73 70 61 63 65 20 70 72 65 66 69   namespace prefi
76f0: 78 20 66 72 6f 6d 20 65 6d 70 74 79 20 74 6f 20  x from empty to 
7700: 6a 65 5f 2c 20 61 6e 64 20 63 68 61 6e 67 65 0a  je_, and change.
7710: 20 20 20 20 2d 2d 77 69 74 68 2d 70 72 69 76 61      --with-priva
7720: 74 65 2d 6e 61 6d 65 73 70 61 63 65 2d 70 72 65  te-namespace-pre
7730: 66 69 78 20 73 6f 20 74 68 61 74 20 69 74 20 70  fix so that it p
7740: 72 65 70 65 6e 64 73 20 61 6e 20 61 64 64 69 74  repends an addit
7750: 69 6f 6e 61 6c 20 70 72 65 66 69 78 0a 20 20 20  ional prefix.   
7760: 20 72 61 74 68 65 72 20 74 68 61 6e 20 72 65 70   rather than rep
7770: 6c 61 63 69 6e 67 20 6a 65 5f 2e 20 20 54 68 69  lacing je_.  Thi
7780: 73 20 72 65 64 75 63 65 73 20 74 68 65 20 6c 69  s reduces the li
7790: 6b 65 6c 69 68 6f 6f 64 20 6f 66 20 61 70 70 6c  kelihood of appl
77a0: 69 63 61 74 69 6f 6e 73 0a 20 20 20 20 77 68 69  ications.    whi
77b0: 63 68 20 73 74 61 74 69 63 61 6c 6c 79 20 6c 69  ch statically li
77c0: 6e 6b 20 6a 65 6d 61 6c 6c 6f 63 20 65 78 70 65  nk jemalloc expe
77d0: 72 69 65 6e 63 69 6e 67 20 73 79 6d 62 6f 6c 20  riencing symbol 
77e0: 6e 61 6d 65 20 63 6f 6c 6c 69 73 69 6f 6e 73 2e  name collisions.
77f0: 0a 20 20 2d 20 41 64 64 20 6d 69 73 73 69 6e 67  .  - Add missing
7800: 20 70 72 69 76 61 74 65 20 6e 61 6d 65 73 70 61   private namespa
7810: 63 65 20 6d 61 6e 67 6c 69 6e 67 20 28 72 65 6c  ce mangling (rel
7820: 65 76 61 6e 74 20 77 68 65 6e 0a 20 20 20 20 2d  evant when.    -
7830: 2d 77 69 74 68 2d 70 72 69 76 61 74 65 2d 6e 61  -with-private-na
7840: 6d 65 73 70 61 63 65 20 69 73 20 73 70 65 63 69  mespace is speci
7850: 66 69 65 64 29 2e 0a 20 20 2d 20 41 64 64 20 61  fied)..  - Add a
7860: 6e 64 20 75 73 65 20 4a 45 4d 41 4c 4c 4f 43 5f  nd use JEMALLOC_
7870: 49 4e 4c 49 4e 45 5f 43 20 73 6f 20 74 68 61 74  INLINE_C so that
7880: 20 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 66   static inline f
7890: 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 6d 61 72  unctions are mar
78a0: 6b 65 64 20 61 73 0a 20 20 20 20 73 74 61 74 69  ked as.    stati
78b0: 63 20 65 76 65 6e 20 66 6f 72 20 64 65 62 75 67  c even for debug
78c0: 20 62 75 69 6c 64 73 2e 0a 20 20 2d 20 41 64 64   builds..  - Add
78d0: 20 61 20 6d 69 73 73 69 6e 67 20 6d 75 74 65 78   a missing mutex
78e0: 20 75 6e 6c 6f 63 6b 20 69 6e 20 61 20 6d 61 6c   unlock in a mal
78f0: 6c 6f 63 5f 69 6e 69 74 5f 68 61 72 64 28 29 20  loc_init_hard() 
7900: 65 72 72 6f 72 20 70 61 74 68 2e 20 20 49 6e 20  error path.  In 
7910: 70 72 61 63 74 69 63 65 0a 20 20 20 20 74 68 69  practice.    thi
7920: 73 20 65 72 72 6f 72 20 70 61 74 68 20 69 73 20  s error path is 
7930: 6e 65 76 65 72 20 65 78 65 63 75 74 65 64 2e 0a  never executed..
7940: 20 20 2d 20 46 69 78 20 6e 75 6d 65 72 6f 75 73    - Fix numerous
7950: 20 62 75 67 73 20 69 6e 20 6d 61 6c 6c 6f 63 5f   bugs in malloc_
7960: 73 74 72 6f 74 75 6d 61 78 28 29 20 65 72 72 6f  strotumax() erro
7970: 72 20 68 61 6e 64 6c 69 6e 67 2f 72 65 70 6f 72  r handling/repor
7980: 74 69 6e 67 2e 20 20 54 68 65 73 65 0a 20 20 20  ting.  These.   
7990: 20 62 75 67 73 20 68 61 64 20 6e 6f 20 69 6d 70   bugs had no imp
79a0: 61 63 74 20 65 78 63 65 70 74 20 66 6f 72 20 6d  act except for m
79b0: 61 6c 66 6f 72 6d 65 64 20 69 6e 70 75 74 73 2e  alformed inputs.
79c0: 0a 20 20 2d 20 46 69 78 20 6e 75 6d 65 72 6f 75  .  - Fix numerou
79d0: 73 20 62 75 67 73 20 69 6e 20 6d 61 6c 6c 6f 63  s bugs in malloc
79e0: 5f 73 6e 70 72 69 6e 74 66 28 29 2e 20 20 54 68  _snprintf().  Th
79f0: 65 73 65 20 62 75 67 73 20 77 65 72 65 20 6e 6f  ese bugs were no
7a00: 74 20 65 78 65 72 63 69 73 65 64 20 62 79 0a 20  t exercised by. 
7a10: 20 20 20 65 78 69 73 74 69 6e 67 20 63 61 6c 6c     existing call
7a20: 73 2c 20 73 6f 20 74 68 65 79 20 68 61 64 20 6e  s, so they had n
7a30: 6f 20 69 6d 70 61 63 74 2e 0a 0a 2a 20 33 2e 34  o impact...* 3.4
7a40: 2e 31 20 28 4f 63 74 6f 62 65 72 20 32 30 2c 20  .1 (October 20, 
7a50: 32 30 31 33 29 0a 0a 20 20 42 75 67 20 66 69 78  2013)..  Bug fix
7a60: 65 73 3a 0a 20 20 2d 20 46 69 78 20 61 20 72 61  es:.  - Fix a ra
7a70: 63 65 20 69 6e 20 74 68 65 20 22 61 72 65 6e 61  ce in the "arena
7a80: 73 2e 65 78 74 65 6e 64 22 20 6d 61 6c 6c 63 74  s.extend" mallct
7a90: 6c 20 74 68 61 74 20 63 6f 75 6c 64 20 63 61 75  l that could cau
7aa0: 73 65 20 6d 65 6d 6f 72 79 20 63 6f 72 72 75 70  se memory corrup
7ab0: 74 69 6f 6e 0a 20 20 20 20 6f 66 20 69 6e 74 65  tion.    of inte
7ac0: 72 6e 61 6c 20 64 61 74 61 20 73 74 72 75 63 74  rnal data struct
7ad0: 75 72 65 73 20 61 6e 64 20 73 75 62 73 65 71 75  ures and subsequ
7ae0: 65 6e 74 20 63 72 61 73 68 65 73 2e 0a 20 20 2d  ent crashes..  -
7af0: 20 46 69 78 20 56 61 6c 67 72 69 6e 64 20 69 6e   Fix Valgrind in
7b00: 74 65 67 72 61 74 69 6f 6e 20 66 6c 61 77 73 20  tegration flaws 
7b10: 74 68 61 74 20 63 61 75 73 65 64 20 56 61 6c 67  that caused Valg
7b20: 72 69 6e 64 20 77 61 72 6e 69 6e 67 73 20 61 62  rind warnings ab
7b30: 6f 75 74 20 72 65 61 64 73 20 6f 66 0a 20 20 20  out reads of.   
7b40: 20 75 6e 69 6e 69 74 69 61 6c 69 7a 65 64 20 6d   uninitialized m
7b50: 65 6d 6f 72 79 20 69 6e 3a 0a 20 20 20 20 2b 20  emory in:.    + 
7b60: 61 72 65 6e 61 20 63 68 75 6e 6b 20 68 65 61 64  arena chunk head
7b70: 65 72 73 0a 20 20 20 20 2b 20 69 6e 74 65 72 6e  ers.    + intern
7b80: 61 6c 20 7a 65 72 6f 2d 69 6e 69 74 69 61 6c 69  al zero-initiali
7b90: 7a 65 64 20 64 61 74 61 20 73 74 72 75 63 74 75  zed data structu
7ba0: 72 65 73 20 28 72 65 6c 65 76 61 6e 74 20 74 6f  res (relevant to
7bb0: 20 74 63 61 63 68 65 20 61 6e 64 20 70 72 6f 66   tcache and prof
7bc0: 0a 20 20 20 20 20 20 63 6f 64 65 29 0a 20 20 2d  .      code).  -
7bd0: 20 50 72 65 73 65 72 76 65 20 65 72 72 6e 6f 20   Preserve errno 
7be0: 64 75 72 69 6e 67 20 74 68 65 20 66 69 72 73 74  during the first
7bf0: 20 61 6c 6c 6f 63 61 74 69 6f 6e 2e 20 20 41 20   allocation.  A 
7c00: 72 65 61 64 6c 69 6e 6b 28 32 29 20 63 61 6c 6c  readlink(2) call
7c10: 20 64 75 72 69 6e 67 0a 20 20 20 20 69 6e 69 74   during.    init
7c20: 69 61 6c 69 7a 61 74 69 6f 6e 20 66 61 69 6c 73  ialization fails
7c30: 20 75 6e 6c 65 73 73 20 2f 65 74 63 2f 6d 61 6c   unless /etc/mal
7c40: 6c 6f 63 2e 63 6f 6e 66 20 65 78 69 73 74 73 2c  loc.conf exists,
7c50: 20 73 6f 20 65 72 72 6e 6f 20 77 61 73 20 74 79   so errno was ty
7c60: 70 69 63 61 6c 6c 79 0a 20 20 20 20 73 65 74 20  pically.    set 
7c70: 64 75 72 69 6e 67 20 74 68 65 20 66 69 72 73 74  during the first
7c80: 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 70 72 69 6f   allocation prio
7c90: 72 20 74 6f 20 74 68 69 73 20 66 69 78 2e 0a 20  r to this fix.. 
7ca0: 20 2d 20 46 69 78 20 63 6f 6d 70 69 6c 61 74 69   - Fix compilati
7cb0: 6f 6e 20 77 61 72 6e 69 6e 67 73 20 72 65 70 6f  on warnings repo
7cc0: 72 74 65 64 20 62 79 20 67 63 63 20 34 2e 38 2e  rted by gcc 4.8.
7cd0: 31 2e 0a 0a 2a 20 33 2e 34 2e 30 20 28 4a 75 6e  1...* 3.4.0 (Jun
7ce0: 65 20 32 2c 20 32 30 31 33 29 0a 0a 20 20 54 68  e 2, 2013)..  Th
7cf0: 69 73 20 76 65 72 73 69 6f 6e 20 69 73 20 65 73  is version is es
7d00: 73 65 6e 74 69 61 6c 6c 79 20 61 20 73 6d 61 6c  sentially a smal
7d10: 6c 20 62 75 67 66 69 78 20 72 65 6c 65 61 73 65  l bugfix release
7d20: 2c 20 62 75 74 20 74 68 65 20 61 64 64 69 74 69  , but the additi
7d30: 6f 6e 20 6f 66 0a 20 20 61 61 72 63 68 36 34 20  on of.  aarch64 
7d40: 73 75 70 70 6f 72 74 20 72 65 71 75 69 72 65 73  support requires
7d50: 20 74 68 61 74 20 74 68 65 20 6d 69 6e 6f 72 20   that the minor 
7d60: 76 65 72 73 69 6f 6e 20 62 65 20 69 6e 63 72 65  version be incre
7d70: 6d 65 6e 74 65 64 2e 0a 0a 20 20 42 75 67 20 66  mented...  Bug f
7d80: 69 78 65 73 3a 0a 20 20 2d 20 46 69 78 20 72 61  ixes:.  - Fix ra
7d90: 63 65 2d 74 72 69 67 67 65 72 65 64 20 64 65 61  ce-triggered dea
7da0: 64 6c 6f 63 6b 73 20 69 6e 20 63 68 75 6e 6b 5f  dlocks in chunk_
7db0: 72 65 63 6f 72 64 28 29 2e 20 20 54 68 65 73 65  record().  These
7dc0: 20 64 65 61 64 6c 6f 63 6b 73 20 77 65 72 65 0a   deadlocks were.
7dd0: 20 20 20 20 74 79 70 69 63 61 6c 6c 79 20 74 72      typically tr
7de0: 69 67 67 65 72 65 64 20 62 79 20 6d 75 6c 74 69  iggered by multi
7df0: 70 6c 65 20 74 68 72 65 61 64 73 20 63 6f 6e 63  ple threads conc
7e00: 75 72 72 65 6e 74 6c 79 20 64 65 61 6c 6c 6f 63  urrently dealloc
7e10: 61 74 69 6e 67 20 68 75 67 65 0a 20 20 20 20 6f  ating huge.    o
7e20: 62 6a 65 63 74 73 2e 0a 0a 20 20 4e 65 77 20 66  bjects...  New f
7e30: 65 61 74 75 72 65 73 3a 0a 20 20 2d 20 41 64 64  eatures:.  - Add
7e40: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65   support for the
7e50: 20 61 61 72 63 68 36 34 20 61 72 63 68 69 74 65   aarch64 archite
7e60: 63 74 75 72 65 2e 0a 0a 2a 20 33 2e 33 2e 31 20  cture...* 3.3.1 
7e70: 28 4d 61 72 63 68 20 36 2c 20 32 30 31 33 29 0a  (March 6, 2013).
7e80: 0a 20 20 54 68 69 73 20 76 65 72 73 69 6f 6e 20  .  This version 
7e90: 66 69 78 65 73 20 62 75 67 73 20 74 68 61 74 20  fixes bugs that 
7ea0: 61 72 65 20 74 79 70 69 63 61 6c 6c 79 20 65 6e  are typically en
7eb0: 63 6f 75 6e 74 65 72 65 64 20 6f 6e 6c 79 20 77  countered only w
7ec0: 68 65 6e 20 75 74 69 6c 69 7a 69 6e 67 0a 20 20  hen utilizing.  
7ed0: 63 75 73 74 6f 6d 20 72 75 6e 2d 74 69 6d 65 20  custom run-time 
7ee0: 6f 70 74 69 6f 6e 73 2e 0a 0a 20 20 42 75 67 20  options...  Bug 
7ef0: 66 69 78 65 73 3a 0a 20 20 2d 20 46 69 78 20 61  fixes:.  - Fix a
7f00: 20 6c 6f 63 6b 69 6e 67 20 6f 72 64 65 72 20 62   locking order b
7f10: 75 67 20 74 68 61 74 20 63 6f 75 6c 64 20 63 61  ug that could ca
7f20: 75 73 65 20 64 65 61 64 6c 6f 63 6b 20 64 75 72  use deadlock dur
7f30: 69 6e 67 20 66 6f 72 6b 20 69 66 20 68 65 61 70  ing fork if heap
7f40: 0a 20 20 20 20 70 72 6f 66 69 6c 69 6e 67 20 77  .    profiling w
7f50: 65 72 65 20 65 6e 61 62 6c 65 64 2e 0a 20 20 2d  ere enabled..  -
7f60: 20 46 69 78 20 61 20 63 68 75 6e 6b 20 72 65 63   Fix a chunk rec
7f70: 79 63 6c 69 6e 67 20 62 75 67 20 74 68 61 74 20  ycling bug that 
7f80: 63 6f 75 6c 64 20 63 61 75 73 65 20 74 68 65 20  could cause the 
7f90: 61 6c 6c 6f 63 61 74 6f 72 20 74 6f 20 6c 6f 73  allocator to los
7fa0: 65 20 74 72 61 63 6b 20 6f 66 0a 20 20 20 20 77  e track of.    w
7fb0: 68 65 74 68 65 72 20 61 20 63 68 75 6e 6b 20 77  hether a chunk w
7fc0: 61 73 20 7a 65 72 6f 65 64 2e 20 20 4f 6e 20 46  as zeroed.  On F
7fd0: 72 65 65 42 53 44 2c 20 4e 65 74 42 53 44 2c 20  reeBSD, NetBSD, 
7fe0: 61 6e 64 20 4f 53 20 58 2c 20 69 74 20 63 6f 75  and OS X, it cou
7ff0: 6c 64 20 63 61 75 73 65 0a 20 20 20 20 63 6f 72  ld cause.    cor
8000: 72 75 70 74 69 6f 6e 20 69 66 20 61 6c 6c 6f 63  ruption if alloc
8010: 61 74 69 6e 67 20 76 69 61 20 73 62 72 6b 28 32  ating via sbrk(2
8020: 29 20 28 75 6e 6c 69 6b 65 6c 79 20 75 6e 6c 65  ) (unlikely unle
8030: 73 73 20 72 75 6e 6e 69 6e 67 20 77 69 74 68 20  ss running with 
8040: 74 68 65 0a 20 20 20 20 22 64 73 73 3a 70 72 69  the.    "dss:pri
8050: 6d 61 72 79 22 20 6f 70 74 69 6f 6e 20 73 70 65  mary" option spe
8060: 63 69 66 69 65 64 29 2e 20 20 54 68 69 73 20 77  cified).  This w
8070: 61 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20 68 61  as completely ha
8080: 72 6d 6c 65 73 73 20 6f 6e 20 4c 69 6e 75 78 0a  rmless on Linux.
8090: 20 20 20 20 75 6e 6c 65 73 73 20 75 73 69 6e 67      unless using
80a0: 20 6d 6c 6f 63 6b 61 6c 6c 28 32 29 20 28 61 6e   mlockall(2) (an
80b0: 64 20 75 6e 6c 69 6b 65 6c 79 20 65 76 65 6e 20  d unlikely even 
80c0: 74 68 65 6e 2c 20 75 6e 6c 65 73 73 20 74 68 65  then, unless the
80d0: 0a 20 20 20 20 2d 2d 64 69 73 61 62 6c 65 2d 6d  .    --disable-m
80e0: 75 6e 6d 61 70 20 63 6f 6e 66 69 67 75 72 65 20  unmap configure 
80f0: 6f 70 74 69 6f 6e 20 6f 72 20 74 68 65 20 22 64  option or the "d
8100: 73 73 3a 70 72 69 6d 61 72 79 22 20 6f 70 74 69  ss:primary" opti
8110: 6f 6e 20 77 61 73 0a 20 20 20 20 73 70 65 63 69  on was.    speci
8120: 66 69 65 64 29 2e 20 20 54 68 69 73 20 72 65 67  fied).  This reg
8130: 72 65 73 73 69 6f 6e 20 77 61 73 20 69 6e 74 72  ression was intr
8140: 6f 64 75 63 65 64 20 69 6e 20 33 2e 31 2e 30 20  oduced in 3.1.0 
8150: 62 79 20 74 68 65 0a 20 20 20 20 6d 6c 6f 63 6b  by the.    mlock
8160: 61 6c 6c 28 32 29 2f 6d 61 64 76 69 73 65 28 32  all(2)/madvise(2
8170: 29 20 69 6e 74 65 72 61 63 74 69 6f 6e 20 66 69  ) interaction fi
8180: 78 2e 0a 20 20 2d 20 46 69 78 20 54 4c 53 2d 72  x..  - Fix TLS-r
8190: 65 6c 61 74 65 64 20 6d 65 6d 6f 72 79 20 63 6f  elated memory co
81a0: 72 72 75 70 74 69 6f 6e 20 74 68 61 74 20 63 6f  rruption that co
81b0: 75 6c 64 20 6f 63 63 75 72 20 64 75 72 69 6e 67  uld occur during
81c0: 20 74 68 72 65 61 64 20 65 78 69 74 20 69 66 20   thread exit if 
81d0: 74 68 65 0a 20 20 20 20 74 68 72 65 61 64 20 6e  the.    thread n
81e0: 65 76 65 72 20 61 6c 6c 6f 63 61 74 65 64 20 6d  ever allocated m
81f0: 65 6d 6f 72 79 2e 20 20 4f 6e 6c 79 20 74 68 65  emory.  Only the
8200: 20 71 75 61 72 61 6e 74 69 6e 65 20 61 6e 64 20   quarantine and 
8210: 70 72 6f 66 20 66 61 63 69 6c 69 74 69 65 73 20  prof facilities 
8220: 77 65 72 65 0a 20 20 20 20 73 75 73 63 65 70 74  were.    suscept
8230: 69 62 6c 65 2e 0a 20 20 2d 20 46 69 78 20 74 77  ible..  - Fix tw
8240: 6f 20 71 75 61 72 61 6e 74 69 6e 65 20 62 75 67  o quarantine bug
8250: 73 3a 0a 20 20 20 20 2b 20 49 6e 74 65 72 6e 61  s:.    + Interna
8260: 6c 20 72 65 61 6c 6c 6f 63 61 74 69 6f 6e 20 6f  l reallocation o
8270: 66 20 74 68 65 20 71 75 61 72 61 6e 74 69 6e 65  f the quarantine
8280: 64 20 6f 62 6a 65 63 74 20 61 72 72 61 79 20 6c  d object array l
8290: 65 61 6b 65 64 20 74 68 65 20 6f 6c 64 0a 20 20  eaked the old.  
82a0: 20 20 20 20 61 72 72 61 79 2e 0a 20 20 20 20 2b      array..    +
82b0: 20 52 65 61 6c 6c 6f 63 61 74 69 6f 6e 20 66 61   Reallocation fa
82c0: 69 6c 75 72 65 20 66 6f 72 20 69 6e 74 65 72 6e  ilure for intern
82d0: 61 6c 20 72 65 61 6c 6c 6f 63 61 74 69 6f 6e 20  al reallocation 
82e0: 6f 66 20 74 68 65 20 71 75 61 72 61 6e 74 69 6e  of the quarantin
82f0: 65 64 20 6f 62 6a 65 63 74 0a 20 20 20 20 20 20  ed object.      
8300: 61 72 72 61 79 20 28 76 65 72 79 20 75 6e 6c 69  array (very unli
8310: 6b 65 6c 79 29 20 72 65 73 75 6c 74 65 64 20 69  kely) resulted i
8320: 6e 20 6d 65 6d 6f 72 79 20 63 6f 72 72 75 70 74  n memory corrupt
8330: 69 6f 6e 2e 0a 20 20 2d 20 46 69 78 20 56 61 6c  ion..  - Fix Val
8340: 67 72 69 6e 64 20 69 6e 74 65 67 72 61 74 69 6f  grind integratio
8350: 6e 20 74 6f 20 61 6e 6e 6f 74 61 74 65 20 61 6c  n to annotate al
8360: 6c 20 69 6e 74 65 72 6e 61 6c 6c 79 20 61 6c 6c  l internally all
8370: 6f 63 61 74 65 64 20 6d 65 6d 6f 72 79 20 69 6e  ocated memory in
8380: 20 61 0a 20 20 20 20 77 61 79 20 74 68 61 74 20   a.    way that 
8390: 6b 65 65 70 73 20 56 61 6c 67 72 69 6e 64 20 68  keeps Valgrind h
83a0: 61 70 70 79 20 61 62 6f 75 74 20 69 6e 74 65 72  appy about inter
83b0: 6e 61 6c 20 64 61 74 61 20 73 74 72 75 63 74 75  nal data structu
83c0: 72 65 20 61 63 63 65 73 73 2e 0a 20 20 2d 20 46  re access..  - F
83d0: 69 78 20 62 75 69 6c 64 69 6e 67 20 66 6f 72 20  ix building for 
83e0: 73 33 39 30 20 73 79 73 74 65 6d 73 2e 0a 0a 2a  s390 systems...*
83f0: 20 33 2e 33 2e 30 20 28 4a 61 6e 75 61 72 79 20   3.3.0 (January 
8400: 32 33 2c 20 32 30 31 33 29 0a 0a 20 20 54 68 69  23, 2013)..  Thi
8410: 73 20 76 65 72 73 69 6f 6e 20 69 6e 63 6c 75 64  s version includ
8420: 65 73 20 61 20 66 65 77 20 6d 69 6e 6f 72 20 70  es a few minor p
8430: 65 72 66 6f 72 6d 61 6e 63 65 20 69 6d 70 72 6f  erformance impro
8440: 76 65 6d 65 6e 74 73 20 69 6e 20 61 64 64 69 74  vements in addit
8450: 69 6f 6e 20 74 6f 20 74 68 65 0a 20 20 6c 69 73  ion to the.  lis
8460: 74 65 64 20 6e 65 77 20 66 65 61 74 75 72 65 73  ted new features
8470: 20 61 6e 64 20 62 75 67 20 66 69 78 65 73 2e 0a   and bug fixes..
8480: 0a 20 20 4e 65 77 20 66 65 61 74 75 72 65 73 3a  .  New features:
8490: 0a 20 20 2d 20 41 64 64 20 63 6c 69 70 70 69 6e  .  - Add clippin
84a0: 67 20 73 75 70 70 6f 72 74 20 74 6f 20 6c 67 5f  g support to lg_
84b0: 63 68 75 6e 6b 20 6f 70 74 69 6f 6e 20 70 72 6f  chunk option pro
84c0: 63 65 73 73 69 6e 67 2e 0a 20 20 2d 20 41 64 64  cessing..  - Add
84d0: 20 74 68 65 20 2d 2d 65 6e 61 62 6c 65 2d 69 76   the --enable-iv
84e0: 73 61 6c 6c 6f 63 20 6f 70 74 69 6f 6e 2e 0a 20  salloc option.. 
84f0: 20 2d 20 41 64 64 20 74 68 65 20 2d 2d 77 69 74   - Add the --wit
8500: 68 6f 75 74 2d 65 78 70 6f 72 74 20 6f 70 74 69  hout-export opti
8510: 6f 6e 2e 0a 20 20 2d 20 41 64 64 20 74 68 65 20  on..  - Add the 
8520: 2d 2d 64 69 73 61 62 6c 65 2d 7a 6f 6e 65 2d 61  --disable-zone-a
8530: 6c 6c 6f 63 61 74 6f 72 20 6f 70 74 69 6f 6e 2e  llocator option.
8540: 0a 0a 20 20 42 75 67 20 66 69 78 65 73 3a 0a 20  ..  Bug fixes:. 
8550: 20 2d 20 46 69 78 20 22 61 72 65 6e 61 73 2e 65   - Fix "arenas.e
8560: 78 74 65 6e 64 22 20 6d 61 6c 6c 63 74 6c 20 74  xtend" mallctl t
8570: 6f 20 6f 75 74 70 75 74 20 74 68 65 20 6e 75 6d  o output the num
8580: 62 65 72 20 6f 66 20 61 72 65 6e 61 73 2e 0a 20  ber of arenas.. 
8590: 20 2d 20 46 69 78 20 63 68 75 6e 6b 5f 72 65 63   - Fix chunk_rec
85a0: 79 63 6c 65 28 29 20 74 6f 20 75 6e 63 6f 6e 64  ycle() to uncond
85b0: 69 74 69 6f 6e 61 6c 6c 79 20 69 6e 66 6f 72 6d  itionally inform
85c0: 20 56 61 6c 67 72 69 6e 64 20 74 68 61 74 20 72   Valgrind that r
85d0: 65 74 75 72 6e 65 64 20 6d 65 6d 6f 72 79 0a 20  eturned memory. 
85e0: 20 20 20 69 73 20 75 6e 64 65 66 69 6e 65 64 2e     is undefined.
85f0: 0a 20 20 2d 20 46 69 78 20 62 75 69 6c 64 20 62  .  - Fix build b
8600: 72 65 61 6b 20 6f 6e 20 46 72 65 65 42 53 44 20  reak on FreeBSD 
8610: 72 65 6c 61 74 65 64 20 74 6f 20 61 6c 6c 6f 63  related to alloc
8620: 61 2e 68 2e 0a 0a 2a 20 33 2e 32 2e 30 20 28 4e  a.h...* 3.2.0 (N
8630: 6f 76 65 6d 62 65 72 20 39 2c 20 32 30 31 32 29  ovember 9, 2012)
8640: 0a 0a 20 20 49 6e 20 61 64 64 69 74 69 6f 6e 20  ..  In addition 
8650: 74 6f 20 61 20 63 6f 75 70 6c 65 20 6f 66 20 62  to a couple of b
8660: 75 67 20 66 69 78 65 73 2c 20 74 68 69 73 20 76  ug fixes, this v
8670: 65 72 73 69 6f 6e 20 6d 6f 64 69 66 69 65 73 20  ersion modifies 
8680: 70 61 67 65 20 72 75 6e 0a 20 20 61 6c 6c 6f 63  page run.  alloc
8690: 61 74 69 6f 6e 20 61 6e 64 20 64 69 72 74 79 20  ation and dirty 
86a0: 70 61 67 65 20 70 75 72 67 69 6e 67 20 61 6c 67  page purging alg
86b0: 6f 72 69 74 68 6d 73 20 69 6e 20 6f 72 64 65 72  orithms in order
86c0: 20 74 6f 20 62 65 74 74 65 72 20 63 6f 6e 74 72   to better contr
86d0: 6f 6c 0a 20 20 70 61 67 65 2d 6c 65 76 65 6c 20  ol.  page-level 
86e0: 76 69 72 74 75 61 6c 20 6d 65 6d 6f 72 79 20 66  virtual memory f
86f0: 72 61 67 6d 65 6e 74 61 74 69 6f 6e 2e 0a 0a 20  ragmentation... 
8700: 20 49 6e 63 6f 6d 70 61 74 69 62 6c 65 20 63 68   Incompatible ch
8710: 61 6e 67 65 73 3a 0a 20 20 2d 20 43 68 61 6e 67  anges:.  - Chang
8720: 65 20 74 68 65 20 22 6f 70 74 2e 6c 67 5f 64 69  e the "opt.lg_di
8730: 72 74 79 5f 6d 75 6c 74 22 20 64 65 66 61 75 6c  rty_mult" defaul
8740: 74 20 66 72 6f 6d 20 35 20 74 6f 20 33 20 28 33  t from 5 to 3 (3
8750: 32 3a 31 20 74 6f 20 38 3a 31 29 2e 0a 0a 20 20  2:1 to 8:1)...  
8760: 42 75 67 20 66 69 78 65 73 3a 0a 20 20 2d 20 46  Bug fixes:.  - F
8770: 69 78 20 64 73 73 2f 6d 6d 61 70 20 61 6c 6c 6f  ix dss/mmap allo
8780: 63 61 74 69 6f 6e 20 70 72 65 63 65 64 65 6e 63  cation precedenc
8790: 65 20 63 6f 64 65 20 74 6f 20 75 73 65 20 72 65  e code to use re
87a0: 63 79 63 6c 61 62 6c 65 20 6d 6d 61 70 20 6d 65  cyclable mmap me
87b0: 6d 6f 72 79 20 6f 6e 6c 79 0a 20 20 20 20 61 66  mory only.    af
87c0: 74 65 72 20 70 72 69 6d 61 72 79 20 64 73 73 20  ter primary dss 
87d0: 61 6c 6c 6f 63 61 74 69 6f 6e 20 66 61 69 6c 73  allocation fails
87e0: 2e 0a 20 20 2d 20 46 69 78 20 64 65 61 64 6c 6f  ..  - Fix deadlo
87f0: 63 6b 20 69 6e 20 74 68 65 20 22 61 72 65 6e 61  ck in the "arena
8800: 73 2e 70 75 72 67 65 22 20 6d 61 6c 6c 63 74 6c  s.purge" mallctl
8810: 2e 20 20 54 68 69 73 20 72 65 67 72 65 73 73 69  .  This regressi
8820: 6f 6e 20 77 61 73 20 69 6e 74 72 6f 64 75 63 65  on was introduce
8830: 64 0a 20 20 20 20 69 6e 20 33 2e 31 2e 30 20 62  d.    in 3.1.0 b
8840: 79 20 74 68 65 20 61 64 64 69 74 69 6f 6e 20 6f  y the addition o
8850: 66 20 74 68 65 20 22 61 72 65 6e 61 2e 3c 69 3e  f the "arena.<i>
8860: 2e 70 75 72 67 65 22 20 6d 61 6c 6c 63 74 6c 2e  .purge" mallctl.
8870: 0a 0a 2a 20 33 2e 31 2e 30 20 28 4f 63 74 6f 62  ..* 3.1.0 (Octob
8880: 65 72 20 31 36 2c 20 32 30 31 32 29 0a 0a 20 20  er 16, 2012)..  
8890: 4e 65 77 20 66 65 61 74 75 72 65 73 3a 0a 20 20  New features:.  
88a0: 2d 20 41 75 74 6f 2d 64 65 74 65 63 74 20 77 68  - Auto-detect wh
88b0: 65 74 68 65 72 20 72 75 6e 6e 69 6e 67 20 69 6e  ether running in
88c0: 73 69 64 65 20 56 61 6c 67 72 69 6e 64 2c 20 74  side Valgrind, t
88d0: 68 75 73 20 72 65 6d 6f 76 69 6e 67 20 74 68 65  hus removing the
88e0: 20 6e 65 65 64 20 74 6f 0a 20 20 20 20 6d 61 6e   need to.    man
88f0: 75 61 6c 6c 79 20 73 70 65 63 69 66 79 20 4d 41  ually specify MA
8900: 4c 4c 4f 43 5f 43 4f 4e 46 3d 76 61 6c 67 72 69  LLOC_CONF=valgri
8910: 6e 64 3a 74 72 75 65 2e 0a 20 20 2d 20 41 64 64  nd:true..  - Add
8920: 20 74 68 65 20 22 61 72 65 6e 61 73 2e 65 78 74   the "arenas.ext
8930: 65 6e 64 22 20 6d 61 6c 6c 63 74 6c 2c 20 77 68  end" mallctl, wh
8940: 69 63 68 20 61 6c 6c 6f 77 73 20 61 70 70 6c 69  ich allows appli
8950: 63 61 74 69 6f 6e 73 20 74 6f 20 63 72 65 61 74  cations to creat
8960: 65 0a 20 20 20 20 6d 61 6e 75 61 6c 6c 79 20 6d  e.    manually m
8970: 61 6e 61 67 65 64 20 61 72 65 6e 61 73 2e 0a 20  anaged arenas.. 
8980: 20 2d 20 41 64 64 20 74 68 65 20 41 4c 4c 4f 43   - Add the ALLOC
8990: 4d 5f 41 52 45 4e 41 28 29 20 66 6c 61 67 20 66  M_ARENA() flag f
89a0: 6f 72 20 7b 2c 72 2c 64 7d 61 6c 6c 6f 63 6d 28  or {,r,d}allocm(
89b0: 29 2e 0a 20 20 2d 20 41 64 64 20 74 68 65 20 22  )..  - Add the "
89c0: 6f 70 74 2e 64 73 73 22 2c 20 22 61 72 65 6e 61  opt.dss", "arena
89d0: 2e 3c 69 3e 2e 64 73 73 22 2c 20 61 6e 64 20 22  .<i>.dss", and "
89e0: 73 74 61 74 73 2e 61 72 65 6e 61 73 2e 3c 69 3e  stats.arenas.<i>
89f0: 2e 64 73 73 22 20 6d 61 6c 6c 63 74 6c 73 2c 0a  .dss" mallctls,.
8a00: 20 20 20 20 77 68 69 63 68 20 70 72 6f 76 69 64      which provid
8a10: 65 20 63 6f 6e 74 72 6f 6c 20 6f 76 65 72 20 64  e control over d
8a20: 73 73 2f 6d 6d 61 70 20 70 72 65 63 65 64 65 6e  ss/mmap preceden
8a30: 63 65 2e 0a 20 20 2d 20 41 64 64 20 74 68 65 20  ce..  - Add the 
8a40: 22 61 72 65 6e 61 2e 3c 69 3e 2e 70 75 72 67 65  "arena.<i>.purge
8a50: 22 20 6d 61 6c 6c 63 74 6c 2c 20 77 68 69 63 68  " mallctl, which
8a60: 20 6f 62 73 6f 6c 65 74 65 73 20 22 61 72 65 6e   obsoletes "aren
8a70: 61 73 2e 70 75 72 67 65 22 2e 0a 20 20 2d 20 44  as.purge"..  - D
8a80: 65 66 69 6e 65 20 4c 47 5f 51 55 41 4e 54 55 4d  efine LG_QUANTUM
8a90: 20 66 6f 72 20 68 70 70 61 2e 0a 0a 20 20 49 6e   for hppa...  In
8aa0: 63 6f 6d 70 61 74 69 62 6c 65 20 63 68 61 6e 67  compatible chang
8ab0: 65 73 3a 0a 20 20 2d 20 44 69 73 61 62 6c 65 20  es:.  - Disable 
8ac0: 74 63 61 63 68 65 20 62 79 20 64 65 66 61 75 6c  tcache by defaul
8ad0: 74 20 69 66 20 72 75 6e 6e 69 6e 67 20 69 6e 73  t if running ins
8ae0: 69 64 65 20 56 61 6c 67 72 69 6e 64 2c 20 69 6e  ide Valgrind, in
8af0: 20 6f 72 64 65 72 20 74 6f 20 61 76 6f 69 64 0a   order to avoid.
8b00: 20 20 20 20 6d 61 6b 69 6e 67 20 75 6e 61 6c 6c      making unall
8b10: 6f 63 61 74 65 64 20 6f 62 6a 65 63 74 73 20 61  ocated objects a
8b20: 70 70 65 61 72 20 72 65 61 63 68 61 62 6c 65 20  ppear reachable 
8b30: 74 6f 20 56 61 6c 67 72 69 6e 64 2e 0a 20 20 2d  to Valgrind..  -
8b40: 20 44 72 6f 70 20 63 6f 6e 73 74 20 66 72 6f 6d   Drop const from
8b50: 20 6d 61 6c 6c 6f 63 5f 75 73 61 62 6c 65 5f 73   malloc_usable_s
8b60: 69 7a 65 28 29 20 61 72 67 75 6d 65 6e 74 20 6f  ize() argument o
8b70: 6e 20 4c 69 6e 75 78 2e 0a 0a 20 20 42 75 67 20  n Linux...  Bug 
8b80: 66 69 78 65 73 3a 0a 20 20 2d 20 46 69 78 20 68  fixes:.  - Fix h
8b90: 65 61 70 20 70 72 6f 66 69 6c 69 6e 67 20 63 72  eap profiling cr
8ba0: 61 73 68 20 69 66 20 73 61 6d 70 6c 65 64 20 6f  ash if sampled o
8bb0: 62 6a 65 63 74 20 69 73 20 66 72 65 65 64 20 76  bject is freed v
8bc0: 69 61 20 72 65 61 6c 6c 6f 63 28 70 2c 20 30 29  ia realloc(p, 0)
8bd0: 2e 0a 20 20 2d 20 52 65 6d 6f 76 65 20 63 6f 6e  ..  - Remove con
8be0: 73 74 20 66 72 6f 6d 20 5f 5f 2a 5f 68 6f 6f 6b  st from __*_hook
8bf0: 20 76 61 72 69 61 62 6c 65 20 64 65 63 6c 61 72   variable declar
8c00: 61 74 69 6f 6e 73 2c 20 73 6f 20 74 68 61 74 20  ations, so that 
8c10: 67 6c 69 62 63 20 63 61 6e 20 6d 6f 64 69 66 79  glibc can modify
8c20: 0a 20 20 20 20 74 68 65 6d 20 64 75 72 69 6e 67  .    them during
8c30: 20 70 72 6f 63 65 73 73 20 66 6f 72 6b 69 6e 67   process forking
8c40: 2e 0a 20 20 2d 20 46 69 78 20 6d 6c 6f 63 6b 61  ..  - Fix mlocka
8c50: 6c 6c 28 32 29 2f 6d 61 64 76 69 73 65 28 32 29  ll(2)/madvise(2)
8c60: 20 69 6e 74 65 72 61 63 74 69 6f 6e 2e 0a 20 20   interaction..  
8c70: 2d 20 46 69 78 20 66 6f 72 6b 28 32 29 2d 72 65  - Fix fork(2)-re
8c80: 6c 61 74 65 64 20 64 65 61 64 6c 6f 63 6b 73 2e  lated deadlocks.
8c90: 0a 20 20 2d 20 46 69 78 20 65 72 72 6f 72 20 72  .  - Fix error r
8ca0: 65 74 75 72 6e 20 76 61 6c 75 65 20 66 6f 72 20  eturn value for 
8cb0: 22 74 68 72 65 61 64 2e 74 63 61 63 68 65 2e 65  "thread.tcache.e
8cc0: 6e 61 62 6c 65 64 22 20 6d 61 6c 6c 63 74 6c 2e  nabled" mallctl.
8cd0: 0a 0a 2a 20 33 2e 30 2e 30 20 28 4d 61 79 20 31  ..* 3.0.0 (May 1
8ce0: 31 2c 20 32 30 31 32 29 0a 0a 20 20 41 6c 74 68  1, 2012)..  Alth
8cf0: 6f 75 67 68 20 74 68 69 73 20 76 65 72 73 69 6f  ough this versio
8d00: 6e 20 61 64 64 73 20 73 6f 6d 65 20 6d 61 6a 6f  n adds some majo
8d10: 72 20 6e 65 77 20 66 65 61 74 75 72 65 73 2c 20  r new features, 
8d20: 74 68 65 20 70 72 69 6d 61 72 79 20 66 6f 63 75  the primary focu
8d30: 73 20 69 73 20 6f 6e 0a 20 20 69 6e 74 65 72 6e  s is on.  intern
8d40: 61 6c 20 63 6f 64 65 20 63 6c 65 61 6e 75 70 20  al code cleanup 
8d50: 74 68 61 74 20 66 61 63 69 6c 69 74 61 74 65 73  that facilitates
8d60: 20 6d 61 69 6e 74 61 69 6e 61 62 69 6c 69 74 79   maintainability
8d70: 20 61 6e 64 20 70 6f 72 74 61 62 69 6c 69 74 79   and portability
8d80: 2c 20 6d 6f 73 74 0a 20 20 6f 66 20 77 68 69 63  , most.  of whic
8d90: 68 20 69 73 20 6e 6f 74 20 72 65 66 6c 65 63 74  h is not reflect
8da0: 65 64 20 69 6e 20 74 68 65 20 43 68 61 6e 67 65  ed in the Change
8db0: 4c 6f 67 2e 20 20 54 68 69 73 20 69 73 20 74 68  Log.  This is th
8dc0: 65 20 66 69 72 73 74 20 72 65 6c 65 61 73 65 20  e first release 
8dd0: 74 6f 0a 20 20 69 6e 63 6f 72 70 6f 72 61 74 65  to.  incorporate
8de0: 20 73 75 62 73 74 61 6e 74 69 61 6c 20 63 6f 6e   substantial con
8df0: 74 72 69 62 75 74 69 6f 6e 73 20 66 72 6f 6d 20  tributions from 
8e00: 6e 75 6d 65 72 6f 75 73 20 6f 74 68 65 72 20 64  numerous other d
8e10: 65 76 65 6c 6f 70 65 72 73 2c 20 61 6e 64 20 74  evelopers, and t
8e20: 68 65 0a 20 20 72 65 73 75 6c 74 20 69 73 20 61  he.  result is a
8e30: 20 6d 6f 72 65 20 62 72 6f 61 64 6c 79 20 75 73   more broadly us
8e40: 65 66 75 6c 20 61 6c 6c 6f 63 61 74 6f 72 20 28  eful allocator (
8e50: 73 65 65 20 74 68 65 20 67 69 74 20 72 65 76 69  see the git revi
8e60: 73 69 6f 6e 20 68 69 73 74 6f 72 79 20 66 6f 72  sion history for
8e70: 0a 20 20 63 6f 6e 74 72 69 62 75 74 69 6f 6e 20  .  contribution 
8e80: 64 65 74 61 69 6c 73 29 2e 20 20 4e 6f 74 65 20  details).  Note 
8e90: 74 68 61 74 20 74 68 65 20 6c 69 63 65 6e 73 65  that the license
8ea0: 20 68 61 73 20 62 65 65 6e 20 75 6e 69 66 69 65   has been unifie
8eb0: 64 2c 20 74 68 61 6e 6b 73 20 74 6f 0a 20 20 46  d, thanks to.  F
8ec0: 61 63 65 62 6f 6f 6b 20 67 72 61 6e 74 69 6e 67  acebook granting
8ed0: 20 61 20 6c 69 63 65 6e 73 65 20 75 6e 64 65 72   a license under
8ee0: 20 74 68 65 20 73 61 6d 65 20 74 65 72 6d 73 20   the same terms 
8ef0: 61 73 20 74 68 65 20 6f 74 68 65 72 20 63 6f 70  as the other cop
8f00: 79 72 69 67 68 74 0a 20 20 68 6f 6c 64 65 72 73  yright.  holders
8f10: 20 28 73 65 65 20 43 4f 50 59 49 4e 47 29 2e 0a   (see COPYING)..
8f20: 0a 20 20 4e 65 77 20 66 65 61 74 75 72 65 73 3a  .  New features:
8f30: 0a 20 20 2d 20 49 6d 70 6c 65 6d 65 6e 74 20 56  .  - Implement V
8f40: 61 6c 67 72 69 6e 64 20 73 75 70 70 6f 72 74 2c  algrind support,
8f50: 20 72 65 64 7a 6f 6e 65 73 2c 20 61 6e 64 20 71   redzones, and q
8f60: 75 61 72 61 6e 74 69 6e 65 2e 0a 20 20 2d 20 41  uarantine..  - A
8f70: 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 61  dd support for a
8f80: 64 64 69 74 69 6f 6e 61 6c 20 70 6c 61 74 66 6f  dditional platfo
8f90: 72 6d 73 3a 0a 20 20 20 20 2b 20 46 72 65 65 42  rms:.    + FreeB
8fa0: 53 44 0a 20 20 20 20 2b 20 4d 61 63 20 4f 53 20  SD.    + Mac OS 
8fb0: 58 20 4c 69 6f 6e 0a 20 20 20 20 2b 20 4d 69 6e  X Lion.    + Min
8fc0: 47 57 0a 20 20 20 20 2b 20 57 69 6e 64 6f 77 73  GW.    + Windows
8fd0: 20 28 6e 6f 20 73 75 70 70 6f 72 74 20 79 65 74   (no support yet
8fe0: 20 66 6f 72 20 72 65 70 6c 61 63 69 6e 67 20 74   for replacing t
8ff0: 68 65 20 73 79 73 74 65 6d 20 6d 61 6c 6c 6f 63  he system malloc
9000: 29 0a 20 20 2d 20 41 64 64 20 73 75 70 70 6f 72  ).  - Add suppor
9010: 74 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c  t for additional
9020: 20 61 72 63 68 69 74 65 63 74 75 72 65 73 3a 0a   architectures:.
9030: 20 20 20 20 2b 20 4d 49 50 53 0a 20 20 20 20 2b      + MIPS.    +
9040: 20 53 48 34 0a 20 20 20 20 2b 20 54 69 6c 65 72   SH4.    + Tiler
9050: 61 0a 20 20 2d 20 41 64 64 20 73 75 70 70 6f 72  a.  - Add suppor
9060: 74 20 66 6f 72 20 63 72 6f 73 73 20 63 6f 6d 70  t for cross comp
9070: 69 6c 69 6e 67 2e 0a 20 20 2d 20 41 64 64 20 6e  iling..  - Add n
9080: 61 6c 6c 6f 63 6d 28 29 2c 20 77 68 69 63 68 20  allocm(), which 
9090: 72 6f 75 6e 64 73 20 61 20 72 65 71 75 65 73 74  rounds a request
90a0: 20 73 69 7a 65 20 75 70 20 74 6f 20 74 68 65 20   size up to the 
90b0: 6e 65 61 72 65 73 74 20 73 69 7a 65 20 63 6c 61  nearest size cla
90c0: 73 73 0a 20 20 20 20 77 69 74 68 6f 75 74 20 61  ss.    without a
90d0: 63 74 75 61 6c 6c 79 20 61 6c 6c 6f 63 61 74 69  ctually allocati
90e0: 6e 67 2e 0a 20 20 2d 20 49 6d 70 6c 65 6d 65 6e  ng..  - Implemen
90f0: 74 20 61 6c 69 67 6e 65 64 5f 61 6c 6c 6f 63 28  t aligned_alloc(
9100: 29 20 28 62 6c 61 6d 65 20 43 31 31 29 2e 0a 20  ) (blame C11).. 
9110: 20 2d 20 41 64 64 20 74 68 65 20 22 74 68 72 65   - Add the "thre
9120: 61 64 2e 74 63 61 63 68 65 2e 65 6e 61 62 6c 65  ad.tcache.enable
9130: 64 22 20 6d 61 6c 6c 63 74 6c 2e 0a 20 20 2d 20  d" mallctl..  - 
9140: 41 64 64 20 74 68 65 20 22 6f 70 74 2e 70 72 6f  Add the "opt.pro
9150: 66 5f 66 69 6e 61 6c 22 20 6d 61 6c 6c 63 74 6c  f_final" mallctl
9160: 2e 0a 20 20 2d 20 55 70 64 61 74 65 20 70 70 72  ..  - Update ppr
9170: 6f 66 20 28 66 72 6f 6d 20 67 70 65 72 66 74 6f  of (from gperfto
9180: 6f 6c 73 20 32 2e 30 29 2e 0a 20 20 2d 20 41 64  ols 2.0)..  - Ad
9190: 64 20 74 68 65 20 2d 2d 77 69 74 68 2d 6d 61 6e  d the --with-man
91a0: 67 6c 69 6e 67 20 6f 70 74 69 6f 6e 2e 0a 20 20  gling option..  
91b0: 2d 20 41 64 64 20 74 68 65 20 2d 2d 64 69 73 61  - Add the --disa
91c0: 62 6c 65 2d 65 78 70 65 72 69 6d 65 6e 74 61 6c  ble-experimental
91d0: 20 6f 70 74 69 6f 6e 2e 0a 20 20 2d 20 41 64 64   option..  - Add
91e0: 20 74 68 65 20 2d 2d 64 69 73 61 62 6c 65 2d 6d   the --disable-m
91f0: 75 6e 6d 61 70 20 6f 70 74 69 6f 6e 2c 20 61 6e  unmap option, an
9200: 64 20 6d 61 6b 65 20 69 74 20 74 68 65 20 64 65  d make it the de
9210: 66 61 75 6c 74 20 6f 6e 20 4c 69 6e 75 78 2e 0a  fault on Linux..
9220: 20 20 2d 20 41 64 64 20 74 68 65 20 2d 2d 65 6e    - Add the --en
9230: 61 62 6c 65 2d 6d 72 65 6d 61 70 20 6f 70 74 69  able-mremap opti
9240: 6f 6e 2c 20 77 68 69 63 68 20 64 69 73 61 62 6c  on, which disabl
9250: 65 73 20 75 73 65 20 6f 66 20 6d 72 65 6d 61 70  es use of mremap
9260: 28 32 29 20 62 79 20 64 65 66 61 75 6c 74 2e 0a  (2) by default..
9270: 0a 20 20 49 6e 63 6f 6d 70 61 74 69 62 6c 65 20  .  Incompatible 
9280: 63 68 61 6e 67 65 73 3a 0a 20 20 2d 20 45 6e 61  changes:.  - Ena
9290: 62 6c 65 20 73 74 61 74 73 20 62 79 20 64 65 66  ble stats by def
92a0: 61 75 6c 74 2e 0a 20 20 2d 20 45 6e 61 62 6c 65  ault..  - Enable
92b0: 20 66 69 6c 6c 20 62 79 20 64 65 66 61 75 6c 74   fill by default
92c0: 2e 0a 20 20 2d 20 44 69 73 61 62 6c 65 20 6c 61  ..  - Disable la
92d0: 7a 79 20 6c 6f 63 6b 69 6e 67 20 62 79 20 64 65  zy locking by de
92e0: 66 61 75 6c 74 2e 0a 20 20 2d 20 52 65 6e 61 6d  fault..  - Renam
92f0: 65 20 74 68 65 20 22 74 63 61 63 68 65 2e 66 6c  e the "tcache.fl
9300: 75 73 68 22 20 6d 61 6c 6c 63 74 6c 20 74 6f 20  ush" mallctl to 
9310: 22 74 68 72 65 61 64 2e 74 63 61 63 68 65 2e 66  "thread.tcache.f
9320: 6c 75 73 68 22 2e 0a 20 20 2d 20 52 65 6e 61 6d  lush"..  - Renam
9330: 65 20 74 68 65 20 22 61 72 65 6e 61 73 2e 70 61  e the "arenas.pa
9340: 67 65 73 69 7a 65 22 20 6d 61 6c 6c 63 74 6c 20  gesize" mallctl 
9350: 74 6f 20 22 61 72 65 6e 61 73 2e 70 61 67 65 22  to "arenas.page"
9360: 2e 0a 20 20 2d 20 43 68 61 6e 67 65 20 74 68 65  ..  - Change the
9370: 20 22 6f 70 74 2e 6c 67 5f 70 72 6f 66 5f 73 61   "opt.lg_prof_sa
9380: 6d 70 6c 65 22 20 64 65 66 61 75 6c 74 20 66 72  mple" default fr
9390: 6f 6d 20 30 20 74 6f 20 31 39 20 28 31 20 42 20  om 0 to 19 (1 B 
93a0: 74 6f 20 35 31 32 20 4b 69 42 29 2e 0a 20 20 2d  to 512 KiB)..  -
93b0: 20 43 68 61 6e 67 65 20 74 68 65 20 22 6f 70 74   Change the "opt
93c0: 2e 70 72 6f 66 5f 61 63 63 75 6d 22 20 64 65 66  .prof_accum" def
93d0: 61 75 6c 74 20 66 72 6f 6d 20 74 72 75 65 20 74  ault from true t
93e0: 6f 20 66 61 6c 73 65 2e 0a 0a 20 20 52 65 6d 6f  o false...  Remo
93f0: 76 65 64 20 66 65 61 74 75 72 65 73 3a 0a 20 20  ved features:.  
9400: 2d 20 52 65 6d 6f 76 65 20 74 68 65 20 73 77 61  - Remove the swa
9410: 70 20 66 65 61 74 75 72 65 2c 20 69 6e 63 6c 75  p feature, inclu
9420: 64 69 6e 67 20 74 68 65 20 22 63 6f 6e 66 69 67  ding the "config
9430: 2e 73 77 61 70 22 2c 20 22 73 77 61 70 2e 61 76  .swap", "swap.av
9440: 61 69 6c 22 2c 0a 20 20 20 20 22 73 77 61 70 2e  ail",.    "swap.
9450: 70 72 65 7a 65 72 6f 65 64 22 2c 20 22 73 77 61  prezeroed", "swa
9460: 70 2e 6e 66 64 73 22 2c 20 61 6e 64 20 22 73 77  p.nfds", and "sw
9470: 61 70 2e 66 64 73 22 20 6d 61 6c 6c 63 74 6c 73  ap.fds" mallctls
9480: 2e 0a 20 20 2d 20 52 65 6d 6f 76 65 20 68 69 67  ..  - Remove hig
9490: 68 72 75 6e 73 20 73 74 61 74 69 73 74 69 63 73  hruns statistics
94a0: 2c 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 0a  , including the.
94b0: 20 20 20 20 22 73 74 61 74 73 2e 61 72 65 6e 61      "stats.arena
94c0: 73 2e 3c 69 3e 2e 62 69 6e 73 2e 3c 6a 3e 2e 68  s.<i>.bins.<j>.h
94d0: 69 67 68 72 75 6e 73 22 20 61 6e 64 0a 20 20 20  ighruns" and.   
94e0: 20 22 73 74 61 74 73 2e 61 72 65 6e 61 73 2e 3c   "stats.arenas.<
94f0: 69 3e 2e 6c 72 75 6e 73 2e 3c 6a 3e 2e 68 69 67  i>.lruns.<j>.hig
9500: 68 72 75 6e 73 22 20 6d 61 6c 6c 63 74 6c 73 2e  hruns" mallctls.
9510: 0a 20 20 2d 20 41 73 20 70 61 72 74 20 6f 66 20  .  - As part of 
9520: 73 6d 61 6c 6c 20 73 69 7a 65 20 63 6c 61 73 73  small size class
9530: 20 72 65 66 61 63 74 6f 72 69 6e 67 2c 20 72 65   refactoring, re
9540: 6d 6f 76 65 20 74 68 65 20 22 6f 70 74 2e 6c 67  move the "opt.lg
9550: 5f 5b 71 63 5d 73 70 61 63 65 5f 6d 61 78 22 2c  _[qc]space_max",
9560: 0a 20 20 20 20 22 61 72 65 6e 61 73 2e 63 61 63  .    "arenas.cac
9570: 68 65 6c 69 6e 65 22 2c 20 22 61 72 65 6e 61 73  heline", "arenas
9580: 2e 73 75 62 70 61 67 65 22 2c 20 22 61 72 65 6e  .subpage", "aren
9590: 61 73 2e 5b 74 71 63 73 5d 73 70 61 63 65 5f 7b  as.[tqcs]space_{
95a0: 6d 69 6e 2c 6d 61 78 7d 22 2c 20 61 6e 64 0a 20  min,max}", and. 
95b0: 20 20 20 22 61 72 65 6e 61 73 2e 5b 74 71 63 73     "arenas.[tqcs
95c0: 5d 62 69 6e 73 22 20 6d 61 6c 6c 63 74 6c 73 2e  ]bins" mallctls.
95d0: 0a 20 20 2d 20 52 65 6d 6f 76 65 20 74 68 65 20  .  - Remove the 
95e0: 22 61 72 65 6e 61 73 2e 63 68 75 6e 6b 73 69 7a  "arenas.chunksiz
95f0: 65 22 20 6d 61 6c 6c 63 74 6c 2e 0a 20 20 2d 20  e" mallctl..  - 
9600: 52 65 6d 6f 76 65 20 74 68 65 20 22 6f 70 74 2e  Remove the "opt.
9610: 6c 67 5f 70 72 6f 66 5f 74 63 6d 61 78 22 20 6f  lg_prof_tcmax" o
9620: 70 74 69 6f 6e 2e 0a 20 20 2d 20 52 65 6d 6f 76  ption..  - Remov
9630: 65 20 74 68 65 20 22 6f 70 74 2e 6c 67 5f 70 72  e the "opt.lg_pr
9640: 6f 66 5f 62 74 5f 6d 61 78 22 20 6f 70 74 69 6f  of_bt_max" optio
9650: 6e 2e 0a 20 20 2d 20 52 65 6d 6f 76 65 20 74 68  n..  - Remove th
9660: 65 20 22 6f 70 74 2e 6c 67 5f 74 63 61 63 68 65  e "opt.lg_tcache
9670: 5f 67 63 5f 73 77 65 65 70 22 20 6f 70 74 69 6f  _gc_sweep" optio
9680: 6e 2e 0a 20 20 2d 20 52 65 6d 6f 76 65 20 74 68  n..  - Remove th
9690: 65 20 2d 2d 64 69 73 61 62 6c 65 2d 74 69 6e 79  e --disable-tiny
96a0: 20 6f 70 74 69 6f 6e 2c 20 69 6e 63 6c 75 64 69   option, includi
96b0: 6e 67 20 74 68 65 20 22 63 6f 6e 66 69 67 2e 74  ng the "config.t
96c0: 69 6e 79 22 20 6d 61 6c 6c 63 74 6c 2e 0a 20 20  iny" mallctl..  
96d0: 2d 20 52 65 6d 6f 76 65 20 74 68 65 20 2d 2d 65  - Remove the --e
96e0: 6e 61 62 6c 65 2d 64 79 6e 61 6d 69 63 2d 70 61  nable-dynamic-pa
96f0: 67 65 2d 73 68 69 66 74 20 63 6f 6e 66 69 67 75  ge-shift configu
9700: 72 65 20 6f 70 74 69 6f 6e 2e 0a 20 20 2d 20 52  re option..  - R
9710: 65 6d 6f 76 65 20 74 68 65 20 2d 2d 65 6e 61 62  emove the --enab
9720: 6c 65 2d 73 79 73 76 20 63 6f 6e 66 69 67 75 72  le-sysv configur
9730: 65 20 6f 70 74 69 6f 6e 2e 0a 0a 20 20 42 75 67  e option...  Bug
9740: 20 66 69 78 65 73 3a 0a 20 20 2d 20 46 69 78 20   fixes:.  - Fix 
9750: 61 20 73 74 61 74 69 73 74 69 63 73 2d 72 65 6c  a statistics-rel
9760: 61 74 65 64 20 62 75 67 20 69 6e 20 74 68 65 20  ated bug in the 
9770: 22 74 68 72 65 61 64 2e 61 72 65 6e 61 22 20 6d  "thread.arena" m
9780: 61 6c 6c 63 74 6c 20 74 68 61 74 20 63 6f 75 6c  allctl that coul
9790: 64 20 63 61 75 73 65 0a 20 20 20 20 69 6e 76 61  d cause.    inva
97a0: 6c 69 64 20 73 74 61 74 69 73 74 69 63 73 20 61  lid statistics a
97b0: 6e 64 20 63 72 61 73 68 65 73 2e 0a 20 20 2d 20  nd crashes..  - 
97c0: 57 6f 72 6b 20 61 72 6f 75 6e 64 20 54 4c 53 20  Work around TLS 
97d0: 64 65 61 6c 6c 6f 63 61 74 69 6f 6e 20 76 69 61  deallocation via
97e0: 20 66 72 65 65 28 29 20 6f 6e 20 4c 69 6e 75 78   free() on Linux
97f0: 2e 20 20 54 68 69 73 20 62 75 67 20 63 6f 75 6c  .  This bug coul
9800: 64 20 63 61 75 73 65 0a 20 20 20 20 77 72 69 74  d cause.    writ
9810: 65 2d 61 66 74 65 72 2d 66 72 65 65 20 6d 65 6d  e-after-free mem
9820: 6f 72 79 20 63 6f 72 72 75 70 74 69 6f 6e 2e 0a  ory corruption..
9830: 20 20 2d 20 46 69 78 20 61 20 70 6f 74 65 6e 74    - Fix a potent
9840: 69 61 6c 20 64 65 61 64 6c 6f 63 6b 20 74 68 61  ial deadlock tha
9850: 74 20 63 6f 75 6c 64 20 6f 63 63 75 72 20 64 75  t could occur du
9860: 72 69 6e 67 20 69 6e 74 65 72 76 61 6c 2d 20 61  ring interval- a
9870: 6e 64 0a 20 20 20 20 67 72 6f 77 74 68 2d 74 72  nd.    growth-tr
9880: 69 67 67 65 72 65 64 20 68 65 61 70 20 70 72 6f  iggered heap pro
9890: 66 69 6c 65 20 64 75 6d 70 73 2e 0a 20 20 2d 20  file dumps..  - 
98a0: 46 69 78 20 6c 61 72 67 65 20 63 61 6c 6c 6f 63  Fix large calloc
98b0: 28 29 20 7a 65 72 6f 69 6e 67 20 62 75 67 73 20  () zeroing bugs 
98c0: 64 75 65 20 74 6f 20 64 72 6f 70 70 69 6e 67 20  due to dropping 
98d0: 63 68 75 6e 6b 20 6d 61 70 20 75 6e 7a 65 72 6f  chunk map unzero
98e0: 65 64 20 66 6c 61 67 73 2e 0a 20 20 2d 20 46 69  ed flags..  - Fi
98f0: 78 20 63 68 75 6e 6b 5f 61 6c 6c 6f 63 5f 64 73  x chunk_alloc_ds
9900: 73 28 29 20 74 6f 20 73 74 6f 70 20 63 6c 61 69  s() to stop clai
9910: 6d 69 6e 67 20 6d 65 6d 6f 72 79 20 69 73 20 7a  ming memory is z
9920: 65 72 6f 65 64 2e 20 20 54 68 69 73 20 62 75 67  eroed.  This bug
9930: 20 63 6f 75 6c 64 0a 20 20 20 20 63 61 75 73 65   could.    cause
9940: 20 6d 65 6d 6f 72 79 20 63 6f 72 72 75 70 74 69   memory corrupti
9950: 6f 6e 20 61 6e 64 20 63 72 61 73 68 65 73 20 77  on and crashes w
9960: 69 74 68 20 2d 2d 65 6e 61 62 6c 65 2d 64 73 73  ith --enable-dss
9970: 20 73 70 65 63 69 66 69 65 64 2e 0a 20 20 2d 20   specified..  - 
9980: 46 69 78 20 66 6f 72 6b 2d 72 65 6c 61 74 65 64  Fix fork-related
9990: 20 62 75 67 73 20 74 68 61 74 20 63 6f 75 6c 64   bugs that could
99a0: 20 63 61 75 73 65 20 64 65 61 64 6c 6f 63 6b 20   cause deadlock 
99b0: 69 6e 20 63 68 69 6c 64 72 65 6e 20 62 65 74 77  in children betw
99c0: 65 65 6e 20 66 6f 72 6b 0a 20 20 20 20 61 6e 64  een fork.    and
99d0: 20 65 78 65 63 2e 0a 20 20 2d 20 46 69 78 20 6d   exec..  - Fix m
99e0: 61 6c 6c 6f 63 5f 73 74 61 74 73 5f 70 72 69 6e  alloc_stats_prin
99f0: 74 28 29 20 74 6f 20 68 6f 6e 6f 72 20 27 62 27  t() to honor 'b'
9a00: 20 61 6e 64 20 27 6c 27 20 69 6e 20 74 68 65 20   and 'l' in the 
9a10: 6f 70 74 73 20 70 61 72 61 6d 65 74 65 72 2e 0a  opts parameter..
9a20: 20 20 2d 20 46 69 78 20 72 65 61 6c 6c 6f 63 28    - Fix realloc(
9a30: 70 2c 20 30 29 20 74 6f 20 61 63 74 20 6c 69 6b  p, 0) to act lik
9a40: 65 20 66 72 65 65 28 70 29 2e 0a 20 20 2d 20 44  e free(p)..  - D
9a50: 6f 20 6e 6f 74 20 65 6e 66 6f 72 63 65 20 6d 69  o not enforce mi
9a60: 6e 69 6d 75 6d 20 61 6c 69 67 6e 6d 65 6e 74 20  nimum alignment 
9a70: 69 6e 20 6d 65 6d 61 6c 69 67 6e 28 29 2e 0a 20  in memalign().. 
9a80: 20 2d 20 43 68 65 63 6b 20 66 6f 72 20 4e 55 4c   - Check for NUL
9a90: 4c 20 70 6f 69 6e 74 65 72 20 69 6e 20 6d 61 6c  L pointer in mal
9aa0: 6c 6f 63 5f 75 73 61 62 6c 65 5f 73 69 7a 65 28  loc_usable_size(
9ab0: 29 2e 0a 20 20 2d 20 46 69 78 20 61 6e 20 6f 66  )..  - Fix an of
9ac0: 66 2d 62 79 2d 6f 6e 65 20 68 65 61 70 20 70 72  f-by-one heap pr
9ad0: 6f 66 69 6c 65 20 73 74 61 74 69 73 74 69 63 73  ofile statistics
9ae0: 20 62 75 67 20 74 68 61 74 20 63 6f 75 6c 64 20   bug that could 
9af0: 62 65 20 6f 62 73 65 72 76 65 64 20 69 6e 0a 20  be observed in. 
9b00: 20 20 20 69 6e 74 65 72 76 61 6c 2d 20 61 6e 64     interval- and
9b10: 20 67 72 6f 77 74 68 2d 74 72 69 67 67 65 72 65   growth-triggere
9b20: 64 20 68 65 61 70 20 70 72 6f 66 69 6c 65 73 2e  d heap profiles.
9b30: 0a 20 20 2d 20 46 69 78 20 74 68 65 20 22 65 70  .  - Fix the "ep
9b40: 6f 63 68 22 20 6d 61 6c 6c 63 74 6c 20 74 6f 20  och" mallctl to 
9b50: 75 70 64 61 74 65 20 63 61 63 68 65 64 20 73 74  update cached st
9b60: 61 74 73 20 65 76 65 6e 20 69 66 20 74 68 65 20  ats even if the 
9b70: 70 61 73 73 65 64 20 69 6e 20 65 70 6f 63 68 0a  passed in epoch.
9b80: 20 20 20 20 69 73 20 30 2e 0a 20 20 2d 20 46 69      is 0..  - Fi
9b90: 78 20 62 69 6e 2d 3e 72 75 6e 63 75 72 20 6d 61  x bin->runcur ma
9ba0: 6e 61 67 65 6d 65 6e 74 20 74 6f 20 66 69 78 20  nagement to fix 
9bb0: 61 20 6c 61 79 6f 75 74 20 70 6f 6c 69 63 79 20  a layout policy 
9bc0: 62 75 67 2e 20 20 54 68 69 73 20 62 75 67 20 64  bug.  This bug d
9bd0: 69 64 20 6e 6f 74 0a 20 20 20 20 61 66 66 65 63  id not.    affec
9be0: 74 20 63 6f 72 72 65 63 74 6e 65 73 73 2e 0a 20  t correctness.. 
9bf0: 20 2d 20 46 69 78 20 61 20 62 75 67 20 69 6e 20   - Fix a bug in 
9c00: 63 68 6f 6f 73 65 5f 61 72 65 6e 61 5f 68 61 72  choose_arena_har
9c10: 64 28 29 20 74 68 61 74 20 70 6f 74 65 6e 74 69  d() that potenti
9c20: 61 6c 6c 79 20 63 61 75 73 65 64 20 6d 6f 72 65  ally caused more
9c30: 20 61 72 65 6e 61 73 20 74 6f 20 62 65 0a 20 20   arenas to be.  
9c40: 20 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 74 68    initialized th
9c50: 61 6e 20 6e 65 63 65 73 73 61 72 79 2e 0a 20 20  an necessary..  
9c60: 2d 20 41 64 64 20 6d 69 73 73 69 6e 67 20 22 6f  - Add missing "o
9c70: 70 74 2e 6c 67 5f 74 63 61 63 68 65 5f 6d 61 78  pt.lg_tcache_max
9c80: 22 20 6d 61 6c 6c 63 74 6c 20 69 6d 70 6c 65 6d  " mallctl implem
9c90: 65 6e 74 61 74 69 6f 6e 2e 0a 20 20 2d 20 55 73  entation..  - Us
9ca0: 65 20 67 6c 69 62 63 20 61 6c 6c 6f 63 61 74 6f  e glibc allocato
9cb0: 72 20 68 6f 6f 6b 73 20 74 6f 20 6d 61 6b 65 20  r hooks to make 
9cc0: 6d 69 78 65 64 20 61 6c 6c 6f 63 61 74 6f 72 20  mixed allocator 
9cd0: 75 73 61 67 65 20 6c 65 73 73 20 6c 69 6b 65 6c  usage less likel
9ce0: 79 2e 0a 20 20 2d 20 46 69 78 20 62 75 69 6c 64  y..  - Fix build
9cf0: 20 69 73 73 75 65 73 20 66 6f 72 20 2d 2d 64 69   issues for --di
9d00: 73 61 62 6c 65 2d 74 63 61 63 68 65 2e 0a 20 20  sable-tcache..  
9d10: 2d 20 44 6f 6e 27 74 20 6d 61 6e 67 6c 65 20 70  - Don't mangle p
9d20: 74 68 72 65 61 64 5f 63 72 65 61 74 65 28 29 20  thread_create() 
9d30: 77 68 65 6e 20 2d 2d 77 69 74 68 2d 70 72 69 76  when --with-priv
9d40: 61 74 65 2d 6e 61 6d 65 73 70 61 63 65 20 69 73  ate-namespace is
9d50: 20 73 70 65 63 69 66 69 65 64 2e 0a 0a 2a 20 32   specified...* 2
9d60: 2e 32 2e 35 20 28 4e 6f 76 65 6d 62 65 72 20 31  .2.5 (November 1
9d70: 34 2c 20 32 30 31 31 29 0a 0a 20 20 42 75 67 20  4, 2011)..  Bug 
9d80: 66 69 78 65 73 3a 0a 20 20 2d 20 46 69 78 20 68  fixes:.  - Fix h
9d90: 75 67 65 5f 72 61 6c 6c 6f 63 28 29 20 72 61 63  uge_ralloc() rac
9da0: 65 20 77 68 65 6e 20 75 73 69 6e 67 20 6d 72 65  e when using mre
9db0: 6d 61 70 28 32 29 2e 20 20 54 68 69 73 20 69 73  map(2).  This is
9dc0: 20 61 20 73 65 72 69 6f 75 73 20 62 75 67 20 74   a serious bug t
9dd0: 68 61 74 0a 20 20 20 20 63 6f 75 6c 64 20 63 61  hat.    could ca
9de0: 75 73 65 20 6d 65 6d 6f 72 79 20 63 6f 72 72 75  use memory corru
9df0: 70 74 69 6f 6e 20 61 6e 64 2f 6f 72 20 63 72 61  ption and/or cra
9e00: 73 68 65 73 2e 0a 20 20 2d 20 46 69 78 20 68 75  shes..  - Fix hu
9e10: 67 65 5f 72 61 6c 6c 6f 63 28 29 20 74 6f 20 6d  ge_ralloc() to m
9e20: 61 69 6e 74 61 69 6e 20 63 68 75 6e 6b 20 73 74  aintain chunk st
9e30: 61 74 69 73 74 69 63 73 2e 0a 20 20 2d 20 46 69  atistics..  - Fi
9e40: 78 20 6d 61 6c 6c 6f 63 5f 73 74 61 74 73 5f 70  x malloc_stats_p
9e50: 72 69 6e 74 28 2e 2e 2e 2c 20 22 61 22 29 20 6f  rint(..., "a") o
9e60: 75 74 70 75 74 2e 0a 0a 2a 20 32 2e 32 2e 34 20  utput...* 2.2.4 
9e70: 28 4e 6f 76 65 6d 62 65 72 20 35 2c 20 32 30 31  (November 5, 201
9e80: 31 29 0a 0a 20 20 42 75 67 20 66 69 78 65 73 3a  1)..  Bug fixes:
9e90: 0a 20 20 2d 20 49 6e 69 74 69 61 6c 69 7a 65 20  .  - Initialize 
9ea0: 61 72 65 6e 61 73 5f 74 73 64 20 62 65 66 6f 72  arenas_tsd befor
9eb0: 65 20 75 73 69 6e 67 20 69 74 2e 20 20 54 68 69  e using it.  Thi
9ec0: 73 20 62 75 67 20 65 78 69 73 74 65 64 20 66 6f  s bug existed fo
9ed0: 72 20 32 2e 32 2e 5b 30 2d 33 5d 2c 20 61 73 0a  r 2.2.[0-3], as.
9ee0: 20 20 20 20 77 65 6c 6c 20 61 73 20 66 6f 72 20      well as for 
9ef0: 2d 2d 64 69 73 61 62 6c 65 2d 74 6c 73 20 62 75  --disable-tls bu
9f00: 69 6c 64 73 20 69 6e 20 65 61 72 6c 69 65 72 20  ilds in earlier 
9f10: 72 65 6c 65 61 73 65 73 2e 0a 20 20 2d 20 44 6f  releases..  - Do
9f20: 20 6e 6f 74 20 61 73 73 75 6d 65 20 61 20 34 20   not assume a 4 
9f30: 4b 69 42 20 70 61 67 65 20 73 69 7a 65 20 69 6e  KiB page size in
9f40: 20 74 65 73 74 2f 72 61 6c 6c 6f 63 6d 2e 63 2e   test/rallocm.c.
9f50: 0a 0a 2a 20 32 2e 32 2e 33 20 28 41 75 67 75 73  ..* 2.2.3 (Augus
9f60: 74 20 33 31 2c 20 32 30 31 31 29 0a 0a 20 20 54  t 31, 2011)..  T
9f70: 68 69 73 20 76 65 72 73 69 6f 6e 20 66 69 78 65  his version fixe
9f80: 73 20 6e 75 6d 65 72 6f 75 73 20 62 75 67 73 20  s numerous bugs 
9f90: 72 65 6c 61 74 65 64 20 74 6f 20 68 65 61 70 20  related to heap 
9fa0: 70 72 6f 66 69 6c 69 6e 67 2e 0a 0a 20 20 42 75  profiling...  Bu
9fb0: 67 20 66 69 78 65 73 3a 0a 20 20 2d 20 46 69 78  g fixes:.  - Fix
9fc0: 20 61 20 70 72 6f 66 2d 72 65 6c 61 74 65 64 20   a prof-related 
9fd0: 72 61 63 65 20 63 6f 6e 64 69 74 69 6f 6e 2e 20  race condition. 
9fe0: 20 54 68 69 73 20 62 75 67 20 63 6f 75 6c 64 20   This bug could 
9ff0: 63 61 75 73 65 20 6d 65 6d 6f 72 79 20 63 6f 72  cause memory cor
a000: 72 75 70 74 69 6f 6e 2c 0a 20 20 20 20 62 75 74  ruption,.    but
a010: 20 6f 6e 6c 79 20 6f 63 63 75 72 72 65 64 20 69   only occurred i
a020: 6e 20 6e 6f 6e 2d 64 65 66 61 75 6c 74 20 63 6f  n non-default co
a030: 6e 66 69 67 75 72 61 74 69 6f 6e 73 20 28 70 72  nfigurations (pr
a040: 6f 66 5f 61 63 63 75 6d 3a 66 61 6c 73 65 29 2e  of_accum:false).
a050: 0a 20 20 2d 20 46 69 78 20 6f 66 66 2d 62 79 2d  .  - Fix off-by-
a060: 6f 6e 65 20 62 61 63 6b 74 72 61 63 69 6e 67 20  one backtracing 
a070: 69 73 73 75 65 73 20 28 6d 61 6b 65 20 73 75 72  issues (make sur
a080: 65 20 74 68 61 74 20 70 72 6f 66 5f 61 6c 6c 6f  e that prof_allo
a090: 63 5f 70 72 65 70 28 29 20 69 73 0a 20 20 20 20  c_prep() is.    
a0a0: 65 78 63 6c 75 64 65 64 20 66 72 6f 6d 20 62 61  excluded from ba
a0b0: 63 6b 74 72 61 63 65 73 29 2e 0a 20 20 2d 20 46  cktraces)..  - F
a0c0: 69 78 20 61 20 70 72 6f 66 2d 72 65 6c 61 74 65  ix a prof-relate
a0d0: 64 20 62 75 67 20 69 6e 20 72 65 61 6c 6c 6f 63  d bug in realloc
a0e0: 28 29 20 28 6f 6e 6c 79 20 74 72 69 67 67 65 72  () (only trigger
a0f0: 65 64 20 62 79 20 4f 4f 4d 20 65 72 72 6f 72 73  ed by OOM errors
a100: 29 2e 0a 20 20 2d 20 46 69 78 20 70 72 6f 66 2d  )..  - Fix prof-
a110: 72 65 6c 61 74 65 64 20 62 75 67 73 20 69 6e 20  related bugs in 
a120: 61 6c 6c 6f 63 6d 28 29 20 61 6e 64 20 72 61 6c  allocm() and ral
a130: 6c 6f 63 6d 28 29 2e 0a 20 20 2d 20 46 69 78 20  locm()..  - Fix 
a140: 70 72 6f 66 5f 74 64 61 74 61 5f 63 6c 65 61 6e  prof_tdata_clean
a150: 75 70 28 29 20 66 6f 72 20 2d 2d 64 69 73 61 62  up() for --disab
a160: 6c 65 2d 74 6c 73 20 62 75 69 6c 64 73 2e 0a 20  le-tls builds.. 
a170: 20 2d 20 46 69 78 20 61 20 72 65 6c 61 74 69 76   - Fix a relativ
a180: 65 20 69 6e 63 6c 75 64 65 20 70 61 74 68 2c 20  e include path, 
a190: 74 6f 20 66 69 78 20 6f 62 6a 64 69 72 20 62 75  to fix objdir bu
a1a0: 69 6c 64 73 2e 0a 0a 2a 20 32 2e 32 2e 32 20 28  ilds...* 2.2.2 (
a1b0: 4a 75 6c 79 20 33 30 2c 20 32 30 31 31 29 0a 0a  July 30, 2011)..
a1c0: 20 20 42 75 67 20 66 69 78 65 73 3a 0a 20 20 2d    Bug fixes:.  -
a1d0: 20 46 69 78 20 61 20 62 75 69 6c 64 20 65 72 72   Fix a build err
a1e0: 6f 72 20 66 6f 72 20 2d 2d 64 69 73 61 62 6c 65  or for --disable
a1f0: 2d 74 63 61 63 68 65 2e 0a 20 20 2d 20 46 69 78  -tcache..  - Fix
a200: 20 61 73 73 65 72 74 69 6f 6e 73 20 69 6e 20 61   assertions in a
a210: 72 65 6e 61 5f 70 75 72 67 65 28 29 20 28 66 6f  rena_purge() (fo
a220: 72 20 72 65 61 6c 20 74 68 69 73 20 74 69 6d 65  r real this time
a230: 29 2e 0a 20 20 2d 20 41 64 64 20 74 68 65 20 2d  )..  - Add the -
a240: 2d 77 69 74 68 2d 70 72 69 76 61 74 65 2d 6e 61  -with-private-na
a250: 6d 65 73 70 61 63 65 20 6f 70 74 69 6f 6e 2e 20  mespace option. 
a260: 20 54 68 69 73 20 69 73 20 61 20 77 6f 72 6b 61   This is a worka
a270: 72 6f 75 6e 64 20 66 6f 72 20 73 79 6d 62 6f 6c  round for symbol
a280: 0a 20 20 20 20 63 6f 6e 66 6c 69 63 74 73 20 74  .    conflicts t
a290: 68 61 74 20 63 61 6e 20 69 6e 61 64 76 65 72 74  hat can inadvert
a2a0: 65 6e 74 6c 79 20 61 72 69 73 65 20 77 68 65 6e  ently arise when
a2b0: 20 75 73 69 6e 67 20 73 74 61 74 69 63 20 6c 69   using static li
a2c0: 62 72 61 72 69 65 73 2e 0a 0a 2a 20 32 2e 32 2e  braries...* 2.2.
a2d0: 31 20 28 4d 61 72 63 68 20 33 30 2c 20 32 30 31  1 (March 30, 201
a2e0: 31 29 0a 0a 20 20 42 75 67 20 66 69 78 65 73 3a  1)..  Bug fixes:
a2f0: 0a 20 20 2d 20 49 6d 70 6c 65 6d 65 6e 74 20 61  .  - Implement a
a300: 74 6f 6d 69 63 20 6f 70 65 72 61 74 69 6f 6e 73  tomic operations
a310: 20 66 6f 72 20 78 38 36 2f 78 36 34 2e 20 20 54   for x86/x64.  T
a320: 68 69 73 20 66 69 78 65 73 20 63 6f 6d 70 69 6c  his fixes compil
a330: 61 74 69 6f 6e 20 66 61 69 6c 75 72 65 73 0a 20  ation failures. 
a340: 20 20 20 66 6f 72 20 76 65 72 73 69 6f 6e 73 20     for versions 
a350: 6f 66 20 67 63 63 20 74 68 61 74 20 61 72 65 20  of gcc that are 
a360: 73 74 69 6c 6c 20 69 6e 20 77 69 64 65 20 75 73  still in wide us
a370: 65 2e 0a 20 20 2d 20 46 69 78 20 61 6e 20 61 73  e..  - Fix an as
a380: 73 65 72 74 69 6f 6e 20 69 6e 20 61 72 65 6e 61  sertion in arena
a390: 5f 70 75 72 67 65 28 29 2e 0a 0a 2a 20 32 2e 32  _purge()...* 2.2
a3a0: 2e 30 20 28 4d 61 72 63 68 20 32 32 2c 20 32 30  .0 (March 22, 20
a3b0: 31 31 29 0a 0a 20 20 54 68 69 73 20 76 65 72 73  11)..  This vers
a3c0: 69 6f 6e 20 69 6e 63 6f 72 70 6f 72 61 74 65 73  ion incorporates
a3d0: 20 73 65 76 65 72 61 6c 20 69 6d 70 72 6f 76 65   several improve
a3e0: 6d 65 6e 74 73 20 74 6f 20 61 6c 67 6f 72 69 74  ments to algorit
a3f0: 68 6d 73 20 61 6e 64 20 64 61 74 61 0a 20 20 73  hms and data.  s
a400: 74 72 75 63 74 75 72 65 73 20 74 68 61 74 20 74  tructures that t
a410: 65 6e 64 20 74 6f 20 72 65 64 75 63 65 20 66 72  end to reduce fr
a420: 61 67 6d 65 6e 74 61 74 69 6f 6e 20 61 6e 64 20  agmentation and 
a430: 69 6e 63 72 65 61 73 65 20 73 70 65 65 64 2e 0a  increase speed..
a440: 0a 20 20 4e 65 77 20 66 65 61 74 75 72 65 73 3a  .  New features:
a450: 0a 20 20 2d 20 41 64 64 20 74 68 65 20 22 73 74  .  - Add the "st
a460: 61 74 73 2e 63 61 63 74 69 76 65 22 20 6d 61 6c  ats.cactive" mal
a470: 6c 63 74 6c 2e 0a 20 20 2d 20 55 70 64 61 74 65  lctl..  - Update
a480: 20 70 70 72 6f 66 20 28 66 72 6f 6d 20 67 6f 6f   pprof (from goo
a490: 67 6c 65 2d 70 65 72 66 74 6f 6f 6c 73 20 31 2e  gle-perftools 1.
a4a0: 37 29 2e 0a 20 20 2d 20 49 6d 70 72 6f 76 65 20  7)..  - Improve 
a4b0: 62 61 63 6b 74 72 61 63 69 6e 67 2d 72 65 6c 61  backtracing-rela
a4c0: 74 65 64 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  ted configuratio
a4d0: 6e 20 6c 6f 67 69 63 2c 20 61 6e 64 20 61 64 64  n logic, and add
a4e0: 20 74 68 65 0a 20 20 20 20 2d 2d 64 69 73 61 62   the.    --disab
a4f0: 6c 65 2d 70 72 6f 66 2d 6c 69 62 67 63 63 20 6f  le-prof-libgcc o
a500: 70 74 69 6f 6e 2e 0a 0a 20 20 42 75 67 20 66 69  ption...  Bug fi
a510: 78 65 73 3a 0a 20 20 2d 20 43 68 61 6e 67 65 20  xes:.  - Change 
a520: 64 65 66 61 75 6c 74 20 73 79 6d 62 6f 6c 20 76  default symbol v
a530: 69 73 69 62 69 6c 69 74 79 20 66 72 6f 6d 20 22  isibility from "
a540: 69 6e 74 65 72 6e 61 6c 22 2c 20 74 6f 20 22 68  internal", to "h
a550: 69 64 64 65 6e 22 2c 20 77 68 69 63 68 0a 20 20  idden", which.  
a560: 20 20 64 65 63 72 65 61 73 65 73 20 74 68 65 20    decreases the 
a570: 6f 76 65 72 68 65 61 64 20 6f 66 20 6c 69 62 72  overhead of libr
a580: 61 72 79 2d 69 6e 74 65 72 6e 61 6c 20 66 75 6e  ary-internal fun
a590: 63 74 69 6f 6e 20 63 61 6c 6c 73 2e 0a 20 20 2d  ction calls..  -
a5a0: 20 46 69 78 20 73 79 6d 62 6f 6c 20 76 69 73 69   Fix symbol visi
a5b0: 62 69 6c 69 74 79 20 73 6f 20 74 68 61 74 20 69  bility so that i
a5c0: 74 20 69 73 20 61 6c 73 6f 20 73 65 74 20 6f 6e  t is also set on
a5d0: 20 4f 53 20 58 2e 0a 20 20 2d 20 46 69 78 20 61   OS X..  - Fix a
a5e0: 20 62 75 69 6c 64 20 64 65 70 65 6e 64 65 6e 63   build dependenc
a5f0: 79 20 72 65 67 72 65 73 73 69 6f 6e 20 63 61 75  y regression cau
a600: 73 65 64 20 62 79 20 74 68 65 20 69 6e 74 72 6f  sed by the intro
a610: 64 75 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 2e  duction of the .
a620: 70 69 63 2e 6f 0a 20 20 20 20 73 75 66 66 69 78  pic.o.    suffix
a630: 20 66 6f 72 20 50 49 43 20 6f 62 6a 65 63 74 20   for PIC object 
a640: 66 69 6c 65 73 2e 0a 20 20 2d 20 41 64 64 20 6d  files..  - Add m
a650: 69 73 73 69 6e 67 20 63 68 65 63 6b 73 20 66 6f  issing checks fo
a660: 72 20 6d 75 74 65 78 20 69 6e 69 74 69 61 6c 69  r mutex initiali
a670: 7a 61 74 69 6f 6e 20 66 61 69 6c 75 72 65 73 2e  zation failures.
a680: 0a 20 20 2d 20 44 6f 6e 27 74 20 75 73 65 20 6c  .  - Don't use l
a690: 69 62 67 63 63 2d 62 61 73 65 64 20 62 61 63 6b  ibgcc-based back
a6a0: 74 72 61 63 69 6e 67 20 65 78 63 65 70 74 20 6f  tracing except o
a6b0: 6e 20 78 36 34 2c 20 77 68 65 72 65 20 69 74 20  n x64, where it 
a6c0: 69 73 20 6b 6e 6f 77 6e 20 74 6f 20 77 6f 72 6b  is known to work
a6d0: 2e 0a 20 20 2d 20 46 69 78 20 64 65 61 64 6c 6f  ..  - Fix deadlo
a6e0: 63 6b 73 20 6f 6e 20 4f 53 20 58 20 74 68 61 74  cks on OS X that
a6f0: 20 77 65 72 65 20 64 75 65 20 74 6f 20 6d 65 6d   were due to mem
a700: 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 69  ory allocation i
a710: 6e 0a 20 20 20 20 70 74 68 72 65 61 64 5f 6d 75  n.    pthread_mu
a720: 74 65 78 5f 6c 6f 63 6b 28 29 2e 0a 20 20 2d 20  tex_lock()..  - 
a730: 48 65 61 70 20 70 72 6f 66 69 6c 69 6e 67 2d 73  Heap profiling-s
a740: 70 65 63 69 66 69 63 20 66 69 78 65 73 3a 0a 20  pecific fixes:. 
a750: 20 20 20 2b 20 46 69 78 20 6d 65 6d 6f 72 79 20     + Fix memory 
a760: 63 6f 72 72 75 70 74 69 6f 6e 20 64 75 65 20 74  corruption due t
a770: 6f 20 69 6e 74 65 67 65 72 20 6f 76 65 72 66 6c  o integer overfl
a780: 6f 77 20 69 6e 20 73 6d 61 6c 6c 20 72 65 67 69  ow in small regi
a790: 6f 6e 20 69 6e 64 65 78 0a 20 20 20 20 20 20 63  on index.      c
a7a0: 6f 6d 70 75 74 61 74 69 6f 6e 2c 20 77 68 65 6e  omputation, when
a7b0: 20 75 73 69 6e 67 20 61 20 73 6d 61 6c 6c 20 65   using a small e
a7c0: 6e 6f 75 67 68 20 73 61 6d 70 6c 65 20 69 6e 74  nough sample int
a7d0: 65 72 76 61 6c 20 74 68 61 74 20 70 72 6f 66 69  erval that profi
a7e0: 6c 69 6e 67 0a 20 20 20 20 20 20 63 6f 6e 74 65  ling.      conte
a7f0: 78 74 20 70 6f 69 6e 74 65 72 73 20 61 72 65 20  xt pointers are 
a800: 73 74 6f 72 65 64 20 69 6e 20 73 6d 61 6c 6c 20  stored in small 
a810: 72 75 6e 20 68 65 61 64 65 72 73 2e 0a 20 20 20  run headers..   
a820: 20 2b 20 46 69 78 20 61 20 62 6f 6f 74 73 74 72   + Fix a bootstr
a830: 61 70 20 6f 72 64 65 72 69 6e 67 20 62 75 67 20  ap ordering bug 
a840: 74 68 61 74 20 6f 6e 6c 79 20 6f 63 63 75 72 72  that only occurr
a850: 65 64 20 77 69 74 68 20 54 4c 53 20 64 69 73 61  ed with TLS disa
a860: 62 6c 65 64 2e 0a 20 20 20 20 2b 20 46 69 78 20  bled..    + Fix 
a870: 61 20 72 61 6c 6c 6f 63 6d 28 29 20 72 73 69 7a  a rallocm() rsiz
a880: 65 20 62 75 67 2e 0a 20 20 20 20 2b 20 46 69 78  e bug..    + Fix
a890: 20 65 72 72 6f 72 20 64 65 74 65 63 74 69 6f 6e   error detection
a8a0: 20 62 75 67 73 20 66 6f 72 20 61 6c 69 67 6e 65   bugs for aligne
a8b0: 64 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  d memory allocat
a8c0: 69 6f 6e 2e 0a 0a 2a 20 32 2e 31 2e 33 20 28 4d  ion...* 2.1.3 (M
a8d0: 61 72 63 68 20 31 34 2c 20 32 30 31 31 29 0a 0a  arch 14, 2011)..
a8e0: 20 20 42 75 67 20 66 69 78 65 73 3a 0a 20 20 2d    Bug fixes:.  -
a8f0: 20 46 69 78 20 61 20 63 70 70 20 6c 6f 67 69 63   Fix a cpp logic
a900: 20 72 65 67 72 65 73 73 69 6f 6e 20 28 64 75 65   regression (due
a910: 20 74 6f 20 74 68 65 20 22 74 68 72 65 61 64 2e   to the "thread.
a920: 7b 64 65 2c 7d 61 6c 6c 6f 63 61 74 65 64 70 22  {de,}allocatedp"
a930: 20 6d 61 6c 6c 63 74 6c 20 66 69 78 0a 20 20 20   mallctl fix.   
a940: 20 66 6f 72 20 4f 53 20 58 20 69 6e 20 32 2e 31   for OS X in 2.1
a950: 2e 32 29 2e 0a 20 20 2d 20 46 69 78 20 61 20 22  .2)..  - Fix a "
a960: 74 68 72 65 61 64 2e 61 72 65 6e 61 22 20 6d 61  thread.arena" ma
a970: 6c 6c 63 74 6c 20 62 75 67 2e 0a 20 20 2d 20 46  llctl bug..  - F
a980: 69 78 20 61 20 74 68 72 65 61 64 20 63 61 63 68  ix a thread cach
a990: 65 20 73 74 61 74 73 20 6d 65 72 67 69 6e 67 20  e stats merging 
a9a0: 62 75 67 2e 0a 0a 2a 20 32 2e 31 2e 32 20 28 4d  bug...* 2.1.2 (M
a9b0: 61 72 63 68 20 32 2c 20 32 30 31 31 29 0a 0a 20  arch 2, 2011).. 
a9c0: 20 42 75 67 20 66 69 78 65 73 3a 0a 20 20 2d 20   Bug fixes:.  - 
a9d0: 46 69 78 20 22 74 68 72 65 61 64 2e 7b 64 65 2c  Fix "thread.{de,
a9e0: 7d 61 6c 6c 6f 63 61 74 65 64 70 22 20 6d 61 6c  }allocatedp" mal
a9f0: 6c 63 74 6c 20 66 6f 72 20 4f 53 20 58 2e 0a 20  lctl for OS X.. 
aa00: 20 2d 20 41 64 64 20 6d 69 73 73 69 6e 67 20 6a   - Add missing j
aa10: 65 6d 61 6c 6c 6f 63 2e 61 20 74 6f 20 62 75 69  emalloc.a to bui
aa20: 6c 64 20 73 79 73 74 65 6d 2e 0a 0a 2a 20 32 2e  ld system...* 2.
aa30: 31 2e 31 20 28 4a 61 6e 75 61 72 79 20 33 31 2c  1.1 (January 31,
aa40: 20 32 30 31 31 29 0a 0a 20 20 42 75 67 20 66 69   2011)..  Bug fi
aa50: 78 65 73 3a 0a 20 20 2d 20 46 69 78 20 61 6c 69  xes:.  - Fix ali
aa60: 67 6e 65 64 20 68 75 67 65 20 72 65 61 6c 6c 6f  gned huge reallo
aa70: 63 61 74 69 6f 6e 20 28 61 66 66 65 63 74 65 64  cation (affected
aa80: 20 61 6c 6c 6f 63 6d 28 29 29 2e 0a 20 20 2d 20   allocm())..  - 
aa90: 46 69 78 20 74 68 65 20 41 4c 4c 4f 43 4d 5f 4c  Fix the ALLOCM_L
aaa0: 47 5f 41 4c 49 47 4e 20 6d 61 63 72 6f 20 64 65  G_ALIGN macro de
aab0: 66 69 6e 69 74 69 6f 6e 2e 0a 20 20 2d 20 46 69  finition..  - Fi
aac0: 78 20 61 20 68 65 61 70 20 64 75 6d 70 69 6e 67  x a heap dumping
aad0: 20 64 65 61 64 6c 6f 63 6b 2e 0a 20 20 2d 20 46   deadlock..  - F
aae0: 69 78 20 61 20 22 74 68 72 65 61 64 2e 61 72 65  ix a "thread.are
aaf0: 6e 61 22 20 6d 61 6c 6c 63 74 6c 20 62 75 67 2e  na" mallctl bug.
ab00: 0a 0a 2a 20 32 2e 31 2e 30 20 28 44 65 63 65 6d  ..* 2.1.0 (Decem
ab10: 62 65 72 20 33 2c 20 32 30 31 30 29 0a 0a 20 20  ber 3, 2010)..  
ab20: 54 68 69 73 20 76 65 72 73 69 6f 6e 20 69 6e 63  This version inc
ab30: 6f 72 70 6f 72 61 74 65 73 20 73 6f 6d 65 20 6f  orporates some o
ab40: 70 74 69 6d 69 7a 61 74 69 6f 6e 73 20 74 68 61  ptimizations tha
ab50: 74 20 63 61 6e 27 74 20 71 75 69 74 65 20 62 65  t can't quite be
ab60: 20 63 6f 6e 73 69 64 65 72 65 64 0a 20 20 62 75   considered.  bu
ab70: 67 20 66 69 78 65 73 2e 0a 0a 20 20 4e 65 77 20  g fixes...  New 
ab80: 66 65 61 74 75 72 65 73 3a 0a 20 20 2d 20 55 73  features:.  - Us
ab90: 65 20 4c 69 6e 75 78 27 73 20 6d 72 65 6d 61 70  e Linux's mremap
aba0: 28 32 29 20 66 6f 72 20 68 75 67 65 20 6f 62 6a  (2) for huge obj
abb0: 65 63 74 20 72 65 61 6c 6c 6f 63 61 74 69 6f 6e  ect reallocation
abc0: 20 77 68 65 6e 20 70 6f 73 73 69 62 6c 65 2e 0a   when possible..
abd0: 20 20 2d 20 41 76 6f 69 64 20 6c 6f 63 6b 69 6e    - Avoid lockin
abe0: 67 20 69 6e 20 6d 61 6c 6c 63 74 6c 2a 28 29 20  g in mallctl*() 
abf0: 77 68 65 6e 20 70 6f 73 73 69 62 6c 65 2e 0a 20  when possible.. 
ac00: 20 2d 20 41 64 64 20 74 68 65 20 22 74 68 72 65   - Add the "thre
ac10: 61 64 2e 5b 64 65 5d 61 6c 6c 6f 63 61 74 65 64  ad.[de]allocated
ac20: 70 22 20 6d 61 6c 6c 63 74 6c 27 73 2e 0a 20 20  p" mallctl's..  
ac30: 2d 20 43 6f 6e 76 65 72 74 20 74 68 65 20 6d 61  - Convert the ma
ac40: 6e 75 61 6c 20 70 61 67 65 20 73 6f 75 72 63 65  nual page source
ac50: 20 66 72 6f 6d 20 72 6f 66 66 20 74 6f 20 44 6f   from roff to Do
ac60: 63 42 6f 6f 6b 2c 20 61 6e 64 20 67 65 6e 65 72  cBook, and gener
ac70: 61 74 65 20 62 6f 74 68 20 72 6f 66 66 0a 20 20  ate both roff.  
ac80: 20 20 61 6e 64 20 48 54 4d 4c 20 6d 61 6e 75 61    and HTML manua
ac90: 6c 73 2e 0a 0a 20 20 42 75 67 20 66 69 78 65 73  ls...  Bug fixes
aca0: 3a 0a 20 20 2d 20 46 69 78 20 61 20 63 72 61 73  :.  - Fix a cras
acb0: 68 20 64 75 65 20 74 6f 20 69 6e 63 6f 72 72 65  h due to incorre
acc0: 63 74 20 62 6f 6f 74 73 74 72 61 70 20 6f 72 64  ct bootstrap ord
acd0: 65 72 69 6e 67 2e 20 20 54 68 69 73 20 6f 6e 6c  ering.  This onl
ace0: 79 20 69 6d 70 61 63 74 65 64 0a 20 20 20 20 2d  y impacted.    -
acf0: 2d 65 6e 61 62 6c 65 2d 64 65 62 75 67 20 2d 2d  -enable-debug --
ad00: 65 6e 61 62 6c 65 2d 64 73 73 20 63 6f 6e 66 69  enable-dss confi
ad10: 67 75 72 61 74 69 6f 6e 73 2e 0a 20 20 2d 20 46  gurations..  - F
ad20: 69 78 20 61 20 6d 69 6e 6f 72 20 73 74 61 74 69  ix a minor stati
ad30: 73 74 69 63 73 20 62 75 67 20 66 6f 72 20 6d 61  stics bug for ma
ad40: 6c 6c 63 74 6c 28 22 73 77 61 70 2e 61 76 61 69  llctl("swap.avai
ad50: 6c 22 2c 20 2e 2e 2e 29 2e 0a 0a 2a 20 32 2e 30  l", ...)...* 2.0
ad60: 2e 31 20 28 4f 63 74 6f 62 65 72 20 32 39 2c 20  .1 (October 29, 
ad70: 32 30 31 30 29 0a 0a 20 20 42 75 67 20 66 69 78  2010)..  Bug fix
ad80: 65 73 3a 0a 20 20 2d 20 46 69 78 20 61 20 72 61  es:.  - Fix a ra
ad90: 63 65 20 63 6f 6e 64 69 74 69 6f 6e 20 69 6e 20  ce condition in 
ada0: 68 65 61 70 20 70 72 6f 66 69 6c 69 6e 67 20 74  heap profiling t
adb0: 68 61 74 20 63 6f 75 6c 64 20 63 61 75 73 65 20  hat could cause 
adc0: 75 6e 64 65 66 69 6e 65 64 20 62 65 68 61 76 69  undefined behavi
add0: 6f 72 0a 20 20 20 20 69 66 20 22 6f 70 74 2e 70  or.    if "opt.p
ade0: 72 6f 66 5f 61 63 63 75 6d 22 20 77 65 72 65 20  rof_accum" were 
adf0: 64 69 73 61 62 6c 65 64 2e 0a 20 20 2d 20 41 64  disabled..  - Ad
ae00: 64 20 6d 69 73 73 69 6e 67 20 6d 75 74 65 78 20  d missing mutex 
ae10: 75 6e 6c 6f 63 6b 73 20 66 6f 72 20 73 6f 6d 65  unlocks for some
ae20: 20 4f 4f 4d 20 65 72 72 6f 72 20 70 61 74 68 73   OOM error paths
ae30: 20 69 6e 20 74 68 65 20 68 65 61 70 20 70 72 6f   in the heap pro
ae40: 66 69 6c 69 6e 67 0a 20 20 20 20 63 6f 64 65 2e  filing.    code.
ae50: 0a 20 20 2d 20 46 69 78 20 61 20 63 6f 6d 70 69  .  - Fix a compi
ae60: 6c 61 74 69 6f 6e 20 65 72 72 6f 72 20 66 6f 72  lation error for
ae70: 20 6e 6f 6e 2d 43 39 39 20 62 75 69 6c 64 73 2e   non-C99 builds.
ae80: 0a 0a 2a 20 32 2e 30 2e 30 20 28 4f 63 74 6f 62  ..* 2.0.0 (Octob
ae90: 65 72 20 32 34 2c 20 32 30 31 30 29 0a 0a 20 20  er 24, 2010)..  
aea0: 54 68 69 73 20 76 65 72 73 69 6f 6e 20 66 6f 63  This version foc
aeb0: 75 73 65 73 20 6f 6e 20 74 68 65 20 65 78 70 65  uses on the expe
aec0: 72 69 6d 65 6e 74 61 6c 20 2a 61 6c 6c 6f 63 6d  rimental *allocm
aed0: 28 29 20 41 50 49 2c 20 61 6e 64 20 6f 6e 20 69  () API, and on i
aee0: 6d 70 72 6f 76 65 64 0a 20 20 72 75 6e 2d 74 69  mproved.  run-ti
aef0: 6d 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  me configuration
af00: 2f 69 6e 74 72 6f 73 70 65 63 74 69 6f 6e 2e 20  /introspection. 
af10: 20 4e 6f 6e 65 74 68 65 6c 65 73 73 2c 20 6e 75   Nonetheless, nu
af20: 6d 65 72 6f 75 73 20 70 65 72 66 6f 72 6d 61 6e  merous performan
af30: 63 65 0a 20 20 69 6d 70 72 6f 76 65 6d 65 6e 74  ce.  improvement
af40: 73 20 61 72 65 20 61 6c 73 6f 20 69 6e 63 6c 75  s are also inclu
af50: 64 65 64 2e 0a 0a 20 20 4e 65 77 20 66 65 61 74  ded...  New feat
af60: 75 72 65 73 3a 0a 20 20 2d 20 49 6d 70 6c 65 6d  ures:.  - Implem
af70: 65 6e 74 20 74 68 65 20 65 78 70 65 72 69 6d 65  ent the experime
af80: 6e 74 61 6c 20 7b 2c 72 2c 73 2c 64 7d 61 6c 6c  ntal {,r,s,d}all
af90: 6f 63 6d 28 29 20 41 50 49 2c 20 77 68 69 63 68  ocm() API, which
afa0: 20 70 72 6f 76 69 64 65 73 20 61 20 73 75 70 65   provides a supe
afb0: 72 73 65 74 0a 20 20 20 20 6f 66 20 74 68 65 20  rset.    of the 
afc0: 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 61 76  functionality av
afd0: 61 69 6c 61 62 6c 65 20 76 69 61 20 6d 61 6c 6c  ailable via mall
afe0: 6f 63 28 29 2c 20 63 61 6c 6c 6f 63 28 29 2c 20  oc(), calloc(), 
aff0: 70 6f 73 69 78 5f 6d 65 6d 61 6c 69 67 6e 28 29  posix_memalign()
b000: 2c 0a 20 20 20 20 72 65 61 6c 6c 6f 63 28 29 2c  ,.    realloc(),
b010: 20 6d 61 6c 6c 6f 63 5f 75 73 61 62 6c 65 5f 73   malloc_usable_s
b020: 69 7a 65 28 29 2c 20 61 6e 64 20 66 72 65 65 28  ize(), and free(
b030: 29 2e 20 20 54 68 65 73 65 20 66 75 6e 63 74 69  ).  These functi
b040: 6f 6e 73 20 63 61 6e 20 62 65 20 75 73 65 64 20  ons can be used 
b050: 74 6f 0a 20 20 20 20 61 6c 6c 6f 63 61 74 65 2f  to.    allocate/
b060: 72 65 61 6c 6c 6f 63 61 74 65 20 61 6c 69 67 6e  reallocate align
b070: 65 64 20 7a 65 72 6f 65 64 20 6d 65 6d 6f 72 79  ed zeroed memory
b080: 2c 20 61 73 6b 20 66 6f 72 20 6f 70 74 69 6f 6e  , ask for option
b090: 61 6c 20 65 78 74 72 61 20 6d 65 6d 6f 72 79 0a  al extra memory.
b0a0: 20 20 20 20 64 75 72 69 6e 67 20 72 65 61 6c 6c      during reall
b0b0: 6f 63 61 74 69 6f 6e 2c 20 70 72 65 76 65 6e 74  ocation, prevent
b0c0: 20 6f 62 6a 65 63 74 20 6d 6f 76 65 6d 65 6e 74   object movement
b0d0: 20 64 75 72 69 6e 67 20 72 65 61 6c 6c 6f 63 61   during realloca
b0e0: 74 69 6f 6e 2c 20 65 74 63 2e 0a 20 20 2d 20 52  tion, etc..  - R
b0f0: 65 70 6c 61 63 65 20 4a 45 4d 41 4c 4c 4f 43 5f  eplace JEMALLOC_
b100: 4f 50 54 49 4f 4e 53 2f 4a 45 4d 41 4c 4c 4f 43  OPTIONS/JEMALLOC
b110: 5f 50 52 4f 46 5f 50 52 45 46 49 58 20 77 69 74  _PROF_PREFIX wit
b120: 68 20 4d 41 4c 4c 4f 43 5f 43 4f 4e 46 2c 20 77  h MALLOC_CONF, w
b130: 68 69 63 68 20 69 73 0a 20 20 20 20 6d 6f 72 65  hich is.    more
b140: 20 68 75 6d 61 6e 2d 72 65 61 64 61 62 6c 65 2c   human-readable,
b150: 20 61 6e 64 20 6d 6f 72 65 20 66 6c 65 78 69 62   and more flexib
b160: 6c 65 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65  le.  For example
b170: 3a 0a 20 20 20 20 20 20 4a 45 4d 41 4c 4c 4f 43  :.      JEMALLOC
b180: 5f 4f 50 54 49 4f 4e 53 3d 41 4a 50 0a 20 20 20  _OPTIONS=AJP.   
b190: 20 69 73 20 6e 6f 77 3a 0a 20 20 20 20 20 20 4d   is now:.      M
b1a0: 41 4c 4c 4f 43 5f 43 4f 4e 46 3d 61 62 6f 72 74  ALLOC_CONF=abort
b1b0: 3a 74 72 75 65 2c 66 69 6c 6c 3a 74 72 75 65 2c  :true,fill:true,
b1c0: 73 74 61 74 73 5f 70 72 69 6e 74 3a 74 72 75 65  stats_print:true
b1d0: 0a 20 20 2d 20 50 6f 72 74 20 74 6f 20 41 70 70  .  - Port to App
b1e0: 6c 65 20 4f 53 20 58 2e 20 20 53 70 6f 6e 73 6f  le OS X.  Sponso
b1f0: 72 65 64 20 62 79 20 4d 6f 7a 69 6c 6c 61 2e 0a  red by Mozilla..
b200: 20 20 2d 20 4d 61 6b 65 20 69 74 20 70 6f 73 73    - Make it poss
b210: 69 62 6c 65 20 66 6f 72 20 74 68 65 20 61 70 70  ible for the app
b220: 6c 69 63 61 74 69 6f 6e 20 74 6f 20 63 6f 6e 74  lication to cont
b230: 72 6f 6c 20 74 68 72 65 61 64 2d 2d 3e 61 72 65  rol thread-->are
b240: 6e 61 20 6d 61 70 70 69 6e 67 73 20 76 69 61 0a  na mappings via.
b250: 20 20 20 20 74 68 65 20 22 74 68 72 65 61 64 2e      the "thread.
b260: 61 72 65 6e 61 22 20 6d 61 6c 6c 63 74 6c 2e 0a  arena" mallctl..
b270: 20 20 2d 20 41 64 64 20 63 6f 6d 70 69 6c 65 2d    - Add compile-
b280: 74 69 6d 65 20 73 75 70 70 6f 72 74 20 66 6f 72  time support for
b290: 20 61 6c 6c 20 54 4c 53 2d 72 65 6c 61 74 65 64   all TLS-related
b2a0: 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 76   functionality v
b2b0: 69 61 20 70 74 68 72 65 61 64 73 20 54 53 44 2e  ia pthreads TSD.
b2c0: 0a 20 20 20 20 54 68 69 73 20 69 73 20 6d 61 69  .    This is mai
b2d0: 6e 6c 79 20 6f 66 20 69 6e 74 65 72 65 73 74 20  nly of interest 
b2e0: 66 6f 72 20 4f 53 20 58 2c 20 77 68 69 63 68 20  for OS X, which 
b2f0: 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74  does not support
b300: 20 54 4c 53 2c 20 62 75 74 20 68 61 73 20 61 0a   TLS, but has a.
b310: 20 20 20 20 54 53 44 20 69 6d 70 6c 65 6d 65 6e      TSD implemen
b320: 74 61 74 69 6f 6e 20 77 69 74 68 20 73 69 6d 69  tation with simi
b330: 6c 61 72 20 70 65 72 66 6f 72 6d 61 6e 63 65 2e  lar performance.
b340: 0a 20 20 2d 20 4f 76 65 72 72 69 64 65 20 6d 65  .  - Override me
b350: 6d 61 6c 69 67 6e 28 29 20 61 6e 64 20 76 61 6c  malign() and val
b360: 6c 6f 63 28 29 20 69 66 20 74 68 65 79 20 61 72  loc() if they ar
b370: 65 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68  e provided by th
b380: 65 20 73 79 73 74 65 6d 2e 0a 20 20 2d 20 41 64  e system..  - Ad
b390: 64 20 74 68 65 20 22 61 72 65 6e 61 73 2e 70 75  d the "arenas.pu
b3a0: 72 67 65 22 20 6d 61 6c 6c 63 74 6c 2c 20 77 68  rge" mallctl, wh
b3b0: 69 63 68 20 63 61 6e 20 62 65 20 75 73 65 64 20  ich can be used 
b3c0: 74 6f 20 73 79 6e 63 68 72 6f 6e 6f 75 73 6c 79  to synchronously
b3d0: 20 70 75 72 67 65 20 61 6c 6c 0a 20 20 20 20 64   purge all.    d
b3e0: 69 72 74 79 20 75 6e 75 73 65 64 20 70 61 67 65  irty unused page
b3f0: 73 2e 0a 20 20 2d 20 4d 61 6b 65 20 63 75 6d 75  s..  - Make cumu
b400: 6c 61 74 69 76 65 20 68 65 61 70 20 70 72 6f 66  lative heap prof
b410: 69 6c 69 6e 67 20 64 61 74 61 20 6f 70 74 69 6f  iling data optio
b420: 6e 61 6c 2c 20 73 6f 20 74 68 61 74 20 69 74 20  nal, so that it 
b430: 69 73 20 70 6f 73 73 69 62 6c 65 20 74 6f 0a 20  is possible to. 
b440: 20 20 20 6c 69 6d 69 74 20 74 68 65 20 61 6d 6f     limit the amo
b450: 75 6e 74 20 6f 66 20 6d 65 6d 6f 72 79 20 63 6f  unt of memory co
b460: 6e 73 75 6d 65 64 20 62 79 20 68 65 61 70 20 70  nsumed by heap p
b470: 72 6f 66 69 6c 69 6e 67 20 64 61 74 61 20 73 74  rofiling data st
b480: 72 75 63 74 75 72 65 73 2e 0a 20 20 2d 20 41 64  ructures..  - Ad
b490: 64 20 70 65 72 20 74 68 72 65 61 64 20 61 6c 6c  d per thread all
b4a0: 6f 63 61 74 69 6f 6e 20 63 6f 75 6e 74 65 72 73  ocation counters
b4b0: 20 74 68 61 74 20 63 61 6e 20 62 65 20 61 63 63   that can be acc
b4c0: 65 73 73 65 64 20 76 69 61 20 74 68 65 0a 20 20  essed via the.  
b4d0: 20 20 22 74 68 72 65 61 64 2e 61 6c 6c 6f 63 61    "thread.alloca
b4e0: 74 65 64 22 20 61 6e 64 20 22 74 68 72 65 61 64  ted" and "thread
b4f0: 2e 64 65 61 6c 6c 6f 63 61 74 65 64 22 20 6d 61  .deallocated" ma
b500: 6c 6c 63 74 6c 73 2e 0a 0a 20 20 49 6e 63 6f 6d  llctls...  Incom
b510: 70 61 74 69 62 6c 65 20 63 68 61 6e 67 65 73 3a  patible changes:
b520: 0a 20 20 2d 20 52 65 6d 6f 76 65 20 4a 45 4d 41  .  - Remove JEMA
b530: 4c 4c 4f 43 5f 4f 50 54 49 4f 4e 53 20 61 6e 64  LLOC_OPTIONS and
b540: 20 6d 61 6c 6c 6f 63 5f 6f 70 74 69 6f 6e 73 20   malloc_options 
b550: 28 73 65 65 20 4d 41 4c 4c 4f 43 5f 43 4f 4e 46  (see MALLOC_CONF
b560: 20 61 62 6f 76 65 29 2e 0a 20 20 2d 20 49 6e 63   above)..  - Inc
b570: 72 65 61 73 65 20 64 65 66 61 75 6c 74 20 62 61  rease default ba
b580: 63 6b 74 72 61 63 65 20 64 65 70 74 68 20 66 72  cktrace depth fr
b590: 6f 6d 20 34 20 74 6f 20 31 32 38 20 66 6f 72 20  om 4 to 128 for 
b5a0: 68 65 61 70 20 70 72 6f 66 69 6c 69 6e 67 2e 0a  heap profiling..
b5b0: 20 20 2d 20 44 69 73 61 62 6c 65 20 69 6e 74 65    - Disable inte
b5c0: 72 76 61 6c 2d 62 61 73 65 64 20 70 72 6f 66 69  rval-based profi
b5d0: 6c 65 20 64 75 6d 70 73 20 62 79 20 64 65 66 61  le dumps by defa
b5e0: 75 6c 74 2e 0a 0a 20 20 42 75 67 20 66 69 78 65  ult...  Bug fixe
b5f0: 73 3a 0a 20 20 2d 20 52 65 6d 6f 76 65 20 62 61  s:.  - Remove ba
b600: 64 20 61 73 73 65 72 74 69 6f 6e 73 20 69 6e 20  d assertions in 
b610: 66 6f 72 6b 20 68 61 6e 64 6c 65 72 20 66 75 6e  fork handler fun
b620: 63 74 69 6f 6e 73 2e 20 20 54 68 65 73 65 20 61  ctions.  These a
b630: 73 73 65 72 74 69 6f 6e 73 20 63 6f 75 6c 64 0a  ssertions could.
b640: 20 20 20 20 63 61 75 73 65 20 61 62 6f 72 74 73      cause aborts
b650: 20 66 6f 72 20 73 6f 6d 65 20 63 6f 6d 62 69 6e   for some combin
b660: 61 74 69 6f 6e 73 20 6f 66 20 63 6f 6e 66 69 67  ations of config
b670: 75 72 65 20 73 65 74 74 69 6e 67 73 2e 0a 20 20  ure settings..  
b680: 2d 20 46 69 78 20 73 74 72 65 72 72 6f 72 5f 72  - Fix strerror_r
b690: 28 29 20 75 73 61 67 65 20 74 6f 20 64 65 61 6c  () usage to deal
b6a0: 20 77 69 74 68 20 6e 6f 6e 2d 73 74 61 6e 64 61   with non-standa
b6b0: 72 64 20 73 65 6d 61 6e 74 69 63 73 20 69 6e 20  rd semantics in 
b6c0: 47 4e 55 20 6c 69 62 63 2e 0a 20 20 2d 20 46 69  GNU libc..  - Fi
b6d0: 78 20 6c 65 61 6b 20 63 6f 6e 74 65 78 74 20 72  x leak context r
b6e0: 65 70 6f 72 74 69 6e 67 2e 20 20 54 68 69 73 20  eporting.  This 
b6f0: 62 75 67 20 74 65 6e 64 65 64 20 74 6f 20 63 61  bug tended to ca
b700: 75 73 65 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  use the number o
b710: 66 20 63 6f 6e 74 65 78 74 73 0a 20 20 20 20 74  f contexts.    t
b720: 6f 20 62 65 20 75 6e 64 65 72 72 65 70 6f 72 74  o be underreport
b730: 65 64 20 28 74 68 6f 75 67 68 20 74 68 65 20 72  ed (though the r
b740: 65 70 6f 72 74 65 64 20 6e 75 6d 62 65 72 20 6f  eported number o
b750: 66 20 6f 62 6a 65 63 74 73 20 61 6e 64 20 62 79  f objects and by
b760: 74 65 73 20 77 65 72 65 0a 20 20 20 20 63 6f 72  tes were.    cor
b770: 72 65 63 74 29 2e 0a 20 20 2d 20 46 69 78 20 61  rect)..  - Fix a
b780: 20 72 65 61 6c 6c 6f 63 28 29 20 62 75 67 20 66   realloc() bug f
b790: 6f 72 20 6c 61 72 67 65 20 69 6e 2d 70 6c 61 63  or large in-plac
b7a0: 65 20 67 72 6f 77 69 6e 67 20 72 65 61 6c 6c 6f  e growing reallo
b7b0: 63 61 74 69 6f 6e 2e 20 20 54 68 69 73 20 62 75  cation.  This bu
b7c0: 67 20 63 6f 75 6c 64 0a 20 20 20 20 63 61 75 73  g could.    caus
b7d0: 65 20 6d 65 6d 6f 72 79 20 63 6f 72 72 75 70 74  e memory corrupt
b7e0: 69 6f 6e 2c 20 62 75 74 20 69 74 20 77 61 73 20  ion, but it was 
b7f0: 68 61 72 64 20 74 6f 20 74 72 69 67 67 65 72 2e  hard to trigger.
b800: 0a 20 20 2d 20 46 69 78 20 61 6e 20 61 6c 6c 6f  .  - Fix an allo
b810: 63 61 74 69 6f 6e 20 62 75 67 20 66 6f 72 20 73  cation bug for s
b820: 6d 61 6c 6c 20 61 6c 6c 6f 63 61 74 69 6f 6e 73  mall allocations
b830: 20 74 68 61 74 20 63 6f 75 6c 64 20 62 65 20 74   that could be t
b840: 72 69 67 67 65 72 65 64 20 69 66 0a 20 20 20 20  riggered if.    
b850: 6d 75 6c 74 69 70 6c 65 20 74 68 72 65 61 64 73  multiple threads
b860: 20 72 61 63 65 64 20 74 6f 20 63 72 65 61 74 65   raced to create
b870: 20 61 20 6e 65 77 20 72 75 6e 20 6f 66 20 62 61   a new run of ba
b880: 63 6b 69 6e 67 20 70 61 67 65 73 2e 0a 20 20 2d  cking pages..  -
b890: 20 45 6e 68 61 6e 63 65 20 74 68 65 20 68 65 61   Enhance the hea
b8a0: 70 20 70 72 6f 66 69 6c 65 72 20 74 6f 20 74 72  p profiler to tr
b8b0: 69 67 67 65 72 20 73 61 6d 70 6c 65 73 20 62 61  igger samples ba
b8c0: 73 65 64 20 6f 6e 20 75 73 61 62 6c 65 20 73 69  sed on usable si
b8d0: 7a 65 2c 20 72 61 74 68 65 72 0a 20 20 20 20 74  ze, rather.    t
b8e0: 68 61 6e 20 72 65 71 75 65 73 74 20 73 69 7a 65  han request size
b8f0: 2e 0a 20 20 2d 20 46 69 78 20 61 20 68 65 61 70  ..  - Fix a heap
b900: 20 70 72 6f 66 69 6c 69 6e 67 20 62 75 67 20 64   profiling bug d
b910: 75 65 20 74 6f 20 73 6f 6d 65 74 69 6d 65 73 20  ue to sometimes 
b920: 6c 6f 73 69 6e 67 20 74 72 61 63 6b 20 6f 66 20  losing track of 
b930: 72 65 71 75 65 73 74 65 64 20 6f 62 6a 65 63 74  requested object
b940: 0a 20 20 20 20 73 69 7a 65 20 66 6f 72 20 73 61  .    size for sa
b950: 6d 70 6c 65 64 20 6f 62 6a 65 63 74 73 2e 0a 0a  mpled objects...
b960: 2a 20 31 2e 30 2e 33 20 28 41 75 67 75 73 74 20  * 1.0.3 (August 
b970: 31 32 2c 20 32 30 31 30 29 0a 0a 20 20 42 75 67  12, 2010)..  Bug
b980: 20 66 69 78 65 73 3a 0a 20 20 2d 20 46 69 78 20   fixes:.  - Fix 
b990: 74 68 65 20 6c 69 62 75 6e 77 69 6e 64 2d 62 61  the libunwind-ba
b9a0: 73 65 64 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  sed implementati
b9b0: 6f 6e 20 6f 66 20 73 74 61 63 6b 20 62 61 63 6b  on of stack back
b9c0: 74 72 61 63 69 6e 67 20 28 75 73 65 64 20 66 6f  tracing (used fo
b9d0: 72 20 68 65 61 70 0a 20 20 20 20 70 72 6f 66 69  r heap.    profi
b9e0: 6c 69 6e 67 29 2e 20 20 54 68 69 73 20 62 75 67  ling).  This bug
b9f0: 20 63 6f 75 6c 64 20 63 61 75 73 65 20 7a 65 72   could cause zer
ba00: 6f 2d 6c 65 6e 67 74 68 20 62 61 63 6b 74 72 61  o-length backtra
ba10: 63 65 73 20 74 6f 20 62 65 20 72 65 70 6f 72 74  ces to be report
ba20: 65 64 2e 0a 20 20 2d 20 41 64 64 20 61 20 6d 69  ed..  - Add a mi
ba30: 73 73 69 6e 67 20 6d 75 74 65 78 20 75 6e 6c 6f  ssing mutex unlo
ba40: 63 6b 20 69 6e 20 6c 69 62 72 61 72 79 20 69 6e  ck in library in
ba50: 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 63 6f 64  itialization cod
ba60: 65 2e 20 20 49 66 20 6d 75 6c 74 69 70 6c 65 0a  e.  If multiple.
ba70: 20 20 20 20 74 68 72 65 61 64 73 20 72 61 63 65      threads race
ba80: 64 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a 65 20  d to initialize 
ba90: 6d 61 6c 6c 6f 63 2c 20 73 6f 6d 65 20 6f 66 20  malloc, some of 
baa0: 74 68 65 6d 20 63 6f 75 6c 64 20 65 6e 64 20 75  them could end u
bab0: 70 20 70 65 72 6d 61 6e 65 6e 74 6c 79 0a 20 20  p permanently.  
bac0: 20 20 62 6c 6f 63 6b 65 64 2e 0a 0a 2a 20 31 2e    blocked...* 1.
bad0: 30 2e 32 20 28 4d 61 79 20 31 31 2c 20 32 30 31  0.2 (May 11, 201
bae0: 30 29 0a 0a 20 20 42 75 67 20 66 69 78 65 73 3a  0)..  Bug fixes:
baf0: 0a 20 20 2d 20 46 69 78 20 6a 75 6e 6b 20 66 69  .  - Fix junk fi
bb00: 6c 6c 69 6e 67 20 6f 66 20 6c 61 72 67 65 20 6f  lling of large o
bb10: 62 6a 65 63 74 73 2c 20 77 68 69 63 68 20 63 6f  bjects, which co
bb20: 75 6c 64 20 63 61 75 73 65 20 6d 65 6d 6f 72 79  uld cause memory
bb30: 20 63 6f 72 72 75 70 74 69 6f 6e 2e 0a 20 20 2d   corruption..  -
bb40: 20 41 64 64 20 4d 41 50 5f 4e 4f 52 45 53 45 52   Add MAP_NORESER
bb50: 56 45 20 73 75 70 70 6f 72 74 20 66 6f 72 20 63  VE support for c
bb60: 68 75 6e 6b 20 6d 61 70 70 69 6e 67 2c 20 62 65  hunk mapping, be
bb70: 63 61 75 73 65 20 6f 74 68 65 72 77 69 73 65 20  cause otherwise 
bb80: 76 69 72 74 75 61 6c 0a 20 20 20 20 6d 65 6d 6f  virtual.    memo
bb90: 72 79 20 6c 69 6d 69 74 73 20 63 6f 75 6c 64 20  ry limits could 
bba0: 63 61 75 73 65 20 73 77 61 70 20 66 69 6c 65 20  cause swap file 
bbb0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 74 6f  configuration to
bbc0: 20 66 61 69 6c 2e 20 20 43 6f 6e 74 72 69 62 75   fail.  Contribu
bbd0: 74 65 64 20 62 79 0a 20 20 20 20 4a 6f 72 64 61  ted by.    Jorda
bbe0: 6e 20 44 65 4c 6f 6e 67 2e 0a 0a 2a 20 31 2e 30  n DeLong...* 1.0
bbf0: 2e 31 20 28 41 70 72 69 6c 20 31 34 2c 20 32 30  .1 (April 14, 20
bc00: 31 30 29 0a 0a 20 20 42 75 67 20 66 69 78 65 73  10)..  Bug fixes
bc10: 3a 0a 20 20 2d 20 46 69 78 20 63 6f 6d 70 69 6c  :.  - Fix compil
bc20: 61 74 69 6f 6e 20 77 68 65 6e 20 2d 2d 65 6e 61  ation when --ena
bc30: 62 6c 65 2d 66 69 6c 6c 20 69 73 20 73 70 65 63  ble-fill is spec
bc40: 69 66 69 65 64 2e 0a 20 20 2d 20 46 69 78 20 74  ified..  - Fix t
bc50: 68 72 65 61 64 73 2d 72 65 6c 61 74 65 64 20 70  hreads-related p
bc60: 72 6f 66 69 6c 69 6e 67 20 62 75 67 73 20 74 68  rofiling bugs th
bc70: 61 74 20 61 66 66 65 63 74 65 64 20 61 63 63 75  at affected accu
bc80: 72 61 63 79 20 61 6e 64 20 63 61 75 73 65 64 20  racy and caused 
bc90: 6d 65 6d 6f 72 79 0a 20 20 20 20 74 6f 20 62 65  memory.    to be
bca0: 20 6c 65 61 6b 65 64 20 64 75 72 69 6e 67 20 74   leaked during t
bcb0: 68 72 65 61 64 20 65 78 69 74 2e 0a 20 20 2d 20  hread exit..  - 
bcc0: 46 69 78 20 64 69 72 74 79 20 70 61 67 65 20 70  Fix dirty page p
bcd0: 75 72 67 69 6e 67 20 72 61 63 65 20 63 6f 6e 64  urging race cond
bce0: 69 74 69 6f 6e 73 20 74 68 61 74 20 63 6f 75 6c  itions that coul
bcf0: 64 20 63 61 75 73 65 20 63 72 61 73 68 65 73 2e  d cause crashes.
bd00: 0a 20 20 2d 20 46 69 78 20 63 72 61 73 68 20 69  .  - Fix crash i
bd10: 6e 20 74 63 61 63 68 65 20 66 6c 75 73 68 69 6e  n tcache flushin
bd20: 67 20 63 6f 64 65 20 64 75 72 69 6e 67 20 74 68  g code during th
bd30: 72 65 61 64 20 64 65 73 74 72 75 63 74 69 6f 6e  read destruction
bd40: 2e 0a 0a 2a 20 31 2e 30 2e 30 20 28 41 70 72 69  ...* 1.0.0 (Apri
bd50: 6c 20 31 31 2c 20 32 30 31 30 29 0a 0a 20 20 54  l 11, 2010)..  T
bd60: 68 69 73 20 72 65 6c 65 61 73 65 20 66 6f 63 75  his release focu
bd70: 73 65 73 20 6f 6e 20 73 70 65 65 64 20 61 6e 64  ses on speed and
bd80: 20 72 75 6e 2d 74 69 6d 65 20 69 6e 74 72 6f 73   run-time intros
bd90: 70 65 63 74 69 6f 6e 2e 20 20 4e 75 6d 65 72 6f  pection.  Numero
bda0: 75 73 0a 20 20 61 6c 67 6f 72 69 74 68 6d 69 63  us.  algorithmic
bdb0: 20 69 6d 70 72 6f 76 65 6d 65 6e 74 73 20 6d 61   improvements ma
bdc0: 6b 65 20 74 68 69 73 20 72 65 6c 65 61 73 65 20  ke this release 
bdd0: 73 75 62 73 74 61 6e 74 69 61 6c 6c 79 20 66 61  substantially fa
bde0: 73 74 65 72 20 74 68 61 6e 20 69 74 73 0a 20 20  ster than its.  
bdf0: 70 72 65 64 65 63 65 73 73 6f 72 73 2e 0a 0a 20  predecessors... 
be00: 20 4e 65 77 20 66 65 61 74 75 72 65 73 3a 0a 20   New features:. 
be10: 20 2d 20 49 6d 70 6c 65 6d 65 6e 74 20 61 75 74   - Implement aut
be20: 6f 63 6f 6e 66 2d 62 61 73 65 64 20 63 6f 6e 66  oconf-based conf
be30: 69 67 75 72 61 74 69 6f 6e 20 73 79 73 74 65 6d  iguration system
be40: 2e 0a 20 20 2d 20 41 64 64 20 6d 61 6c 6c 63 74  ..  - Add mallct
be50: 6c 2a 28 29 2c 20 66 6f 72 20 74 68 65 20 70 75  l*(), for the pu
be60: 72 70 6f 73 65 73 20 6f 66 20 69 6e 74 72 6f 73  rposes of intros
be70: 70 65 63 74 69 6f 6e 20 61 6e 64 20 72 75 6e 2d  pection and run-
be80: 74 69 6d 65 0a 20 20 20 20 63 6f 6e 66 69 67 75  time.    configu
be90: 72 61 74 69 6f 6e 2e 0a 20 20 2d 20 4d 61 6b 65  ration..  - Make
bea0: 20 69 74 20 70 6f 73 73 69 62 6c 65 20 66 6f 72   it possible for
beb0: 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e   the application
bec0: 20 74 6f 20 6d 61 6e 75 61 6c 6c 79 20 66 6c 75   to manually flu
bed0: 73 68 20 61 20 74 68 72 65 61 64 27 73 20 63 61  sh a thread's ca
bee0: 63 68 65 2c 20 76 69 61 0a 20 20 20 20 74 68 65  che, via.    the
bef0: 20 22 74 63 61 63 68 65 2e 66 6c 75 73 68 22 20   "tcache.flush" 
bf00: 6d 61 6c 6c 63 74 6c 2e 0a 20 20 2d 20 42 61 73  mallctl..  - Bas
bf10: 65 20 6d 61 78 69 6d 75 6d 20 64 69 72 74 79 20  e maximum dirty 
bf20: 70 61 67 65 20 63 6f 75 6e 74 20 6f 6e 20 70 72  page count on pr
bf30: 6f 70 6f 72 74 69 6f 6e 20 6f 66 20 61 63 74 69  oportion of acti
bf40: 76 65 20 6d 65 6d 6f 72 79 2e 0a 20 20 2d 20 43  ve memory..  - C
bf50: 6f 6d 70 75 74 65 20 76 61 72 69 6f 75 73 20 61  ompute various a
bf60: 64 64 69 74 69 6f 6e 61 6c 20 72 75 6e 2d 74 69  dditional run-ti
bf70: 6d 65 20 73 74 61 74 69 73 74 69 63 73 2c 20 69  me statistics, i
bf80: 6e 63 6c 75 64 69 6e 67 20 70 65 72 20 73 69 7a  ncluding per siz
bf90: 65 20 63 6c 61 73 73 0a 20 20 20 20 73 74 61 74  e class.    stat
bfa0: 69 73 74 69 63 73 20 66 6f 72 20 6c 61 72 67 65  istics for large
bfb0: 20 6f 62 6a 65 63 74 73 2e 0a 20 20 2d 20 45 78   objects..  - Ex
bfc0: 70 6f 73 65 20 6d 61 6c 6c 6f 63 5f 73 74 61 74  pose malloc_stat
bfd0: 73 5f 70 72 69 6e 74 28 29 2c 20 77 68 69 63 68  s_print(), which
bfe0: 20 63 61 6e 20 62 65 20 63 61 6c 6c 65 64 20 72   can be called r
bff0: 65 70 65 61 74 65 64 6c 79 20 62 79 20 74 68 65  epeatedly by the
c000: 0a 20 20 20 20 61 70 70 6c 69 63 61 74 69 6f 6e  .    application
c010: 2e 0a 20 20 2d 20 53 69 6d 70 6c 69 66 79 20 74  ..  - Simplify t
c020: 68 65 20 6d 61 6c 6c 6f 63 5f 6d 65 73 73 61 67  he malloc_messag
c030: 65 28 29 20 73 69 67 6e 61 74 75 72 65 20 74 6f  e() signature to
c040: 20 6f 6e 6c 79 20 74 61 6b 65 20 6f 6e 65 20 73   only take one s
c050: 74 72 69 6e 67 20 61 72 67 75 6d 65 6e 74 2c 0a  tring argument,.
c060: 20 20 20 20 61 6e 64 20 69 6e 63 6f 72 70 6f 72      and incorpor
c070: 61 74 65 20 61 6e 20 6f 70 61 71 75 65 20 64 61  ate an opaque da
c080: 74 61 20 70 6f 69 6e 74 65 72 20 61 72 67 75 6d  ta pointer argum
c090: 65 6e 74 20 66 6f 72 20 75 73 65 20 62 79 20 74  ent for use by t
c0a0: 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 0a 20  he application. 
c0b0: 20 20 20 69 6e 20 63 6f 6d 62 69 6e 61 74 69 6f     in combinatio
c0c0: 6e 20 77 69 74 68 20 6d 61 6c 6c 6f 63 5f 73 74  n with malloc_st
c0d0: 61 74 73 5f 70 72 69 6e 74 28 29 2e 0a 20 20 2d  ats_print()..  -
c0e0: 20 41 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72   Add support for
c0f0: 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 62 61 63 6b   allocation back
c100: 65 64 20 62 79 20 6f 6e 65 20 6f 72 20 6d 6f 72  ed by one or mor
c110: 65 20 73 77 61 70 20 66 69 6c 65 73 2c 20 61 6e  e swap files, an
c120: 64 20 61 6c 6c 6f 77 20 74 68 65 0a 20 20 20 20  d allow the.    
c130: 61 70 70 6c 69 63 61 74 69 6f 6e 20 74 6f 20 64  application to d
c140: 69 73 61 62 6c 65 20 6f 76 65 72 2d 63 6f 6d 6d  isable over-comm
c150: 69 74 20 69 66 20 73 77 61 70 20 66 69 6c 65 73  it if swap files
c160: 20 61 72 65 20 69 6e 20 75 73 65 2e 0a 20 20 2d   are in use..  -
c170: 20 49 6d 70 6c 65 6d 65 6e 74 20 61 6c 6c 6f 63   Implement alloc
c180: 61 74 69 6f 6e 20 70 72 6f 66 69 6c 69 6e 67 20  ation profiling 
c190: 61 6e 64 20 6c 65 61 6b 20 63 68 65 63 6b 69 6e  and leak checkin
c1a0: 67 2e 0a 0a 20 20 52 65 6d 6f 76 65 64 20 66 65  g...  Removed fe
c1b0: 61 74 75 72 65 73 3a 0a 20 20 2d 20 52 65 6d 6f  atures:.  - Remo
c1c0: 76 65 20 74 68 65 20 64 79 6e 61 6d 69 63 20 61  ve the dynamic a
c1d0: 72 65 6e 61 20 72 65 62 61 6c 61 6e 63 69 6e 67  rena rebalancing
c1e0: 20 63 6f 64 65 2c 20 73 69 6e 63 65 20 74 68 72   code, since thr
c1f0: 65 61 64 2d 73 70 65 63 69 66 69 63 20 63 61 63  ead-specific cac
c200: 68 69 6e 67 0a 20 20 20 20 72 65 64 75 63 65 73  hing.    reduces
c210: 20 69 74 73 20 75 74 69 6c 69 74 79 2e 0a 0a 20   its utility... 
c220: 20 42 75 67 20 66 69 78 65 73 3a 0a 20 20 2d 20   Bug fixes:.  - 
c230: 4d 6f 64 69 66 79 20 63 68 75 6e 6b 20 61 6c 6c  Modify chunk all
c240: 6f 63 61 74 69 6f 6e 20 74 6f 20 77 6f 72 6b 20  ocation to work 
c250: 77 68 65 6e 20 61 64 64 72 65 73 73 20 73 70 61  when address spa
c260: 63 65 20 6c 61 79 6f 75 74 20 72 61 6e 64 6f 6d  ce layout random
c270: 69 7a 61 74 69 6f 6e 0a 20 20 20 20 28 41 53 4c  ization.    (ASL
c280: 52 29 20 69 73 20 69 6e 20 75 73 65 2e 0a 20 20  R) is in use..  
c290: 2d 20 46 69 78 20 74 68 72 65 61 64 20 63 6c 65  - Fix thread cle
c2a0: 61 6e 75 70 20 62 75 67 73 20 72 65 6c 61 74 65  anup bugs relate
c2b0: 64 20 74 6f 20 54 4c 53 20 64 65 73 74 72 75 63  d to TLS destruc
c2c0: 74 69 6f 6e 2e 0a 20 20 2d 20 48 61 6e 64 6c 65  tion..  - Handle
c2d0: 20 30 2d 73 69 7a 65 20 61 6c 6c 6f 63 61 74 69   0-size allocati
c2e0: 6f 6e 20 72 65 71 75 65 73 74 73 20 69 6e 20 70  on requests in p
c2f0: 6f 73 69 78 5f 6d 65 6d 61 6c 69 67 6e 28 29 2e  osix_memalign().
c300: 0a 20 20 2d 20 46 69 78 20 61 20 63 68 75 6e 6b  .  - Fix a chunk
c310: 20 6c 65 61 6b 2e 20 20 54 68 65 20 6c 65 61 6b   leak.  The leak
c320: 65 64 20 63 68 75 6e 6b 73 20 77 65 72 65 20 6e  ed chunks were n
c330: 65 76 65 72 20 74 6f 75 63 68 65 64 2c 20 73 6f  ever touched, so
c340: 20 74 68 69 73 20 69 6d 70 61 63 74 65 64 0a 20   this impacted. 
c350: 20 20 20 76 69 72 74 75 61 6c 20 6d 65 6d 6f 72     virtual memor
c360: 79 20 75 73 61 67 65 2c 20 62 75 74 20 6e 6f 74  y usage, but not
c370: 20 70 68 79 73 69 63 61 6c 20 6d 65 6d 6f 72 79   physical memory
c380: 20 75 73 61 67 65 2e 0a 0a 2a 20 6c 69 6e 75 78   usage...* linux
c390: 5f 32 30 30 38 30 38 32 5b 37 38 5d 61 20 28 41  _2008082[78]a (A
c3a0: 75 67 75 73 74 20 32 37 2f 32 38 2c 20 32 30 30  ugust 27/28, 200
c3b0: 38 29 0a 0a 20 20 54 68 65 73 65 20 73 6e 61 70  8)..  These snap
c3c0: 73 68 6f 74 20 72 65 6c 65 61 73 65 73 20 61 72  shot releases ar
c3d0: 65 20 74 68 65 20 73 69 6d 70 6c 65 20 72 65 73  e the simple res
c3e0: 75 6c 74 20 6f 66 20 69 6e 63 6f 72 70 6f 72 61  ult of incorpora
c3f0: 74 69 6e 67 20 4c 69 6e 75 78 2d 73 70 65 63 69  ting Linux-speci
c400: 66 69 63 0a 20 20 73 75 70 70 6f 72 74 20 69 6e  fic.  support in
c410: 74 6f 20 74 68 65 20 46 72 65 65 42 53 44 20 6d  to the FreeBSD m
c420: 61 6c 6c 6f 63 20 73 6f 75 72 63 65 73 2e 0a 0a  alloc sources...
c430: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
c440: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
c450: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
c460: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
c470: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
c480: 0a 76 69 6d 3a 66 69 6c 65 74 79 70 65 3d 74 65  .vim:filetype=te
c490: 78 74 3a 74 65 78 74 77 69 64 74 68 3d 38 30 0a  xt:textwidth=80.