)]}'
{
  "log": [
    {
      "commit": "549e52200b6af3c33cba7ef759ea98b49fa40082",
      "tree": "bf86a923f9e99668414f03f47b41f5493ef33072",
      "parents": [
        "eb727252f22bd533ebfd40637c0718fdc9946221"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Feb 22 19:23:26 2016 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Feb 26 17:02:17 2016 -0800"
      },
      "message": "Move hard-coded values to constants.\n\nChange all of the hard-coded config values to be defined constants.\nAlso make sure to use these constants in the usage output.\n\nBug: 26739265\nChange-Id: I597a6d71279a2df9cc7e98c42ac70224261bac99\n"
    },
    {
      "commit": "0e2a0265798ed47cbbf6977f0f84cf81d93173a6",
      "tree": "888f3e9a96e38769cddae99ce0b9eb2881aa5c4d",
      "parents": [
        "f2d516b3f9ef901991387ee473140ea24feaab48"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Feb 22 19:14:26 2016 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Feb 22 19:14:26 2016 -0800"
      },
      "message": "Fix wrong guard values for 64 bit.\n\nI added the code to force alignments of 8 for 32 bit and 16 for 64 bit,\nbut I missed a couple of tests that failed due to this change. Fix the\nfailing tests.\n\nBug: 26739265\nChange-Id: Ice9932d1419e59c07483c4c9fcdb84970844f0a6\n"
    },
    {
      "commit": "f499dc91e774db4cb9d21f9a7c34704fa9b7ed39",
      "tree": "ed129781e91ae6015f625930c4c5fdec19265356",
      "parents": [
        "b539baab398ce20f9add5d6dfbadfdc7abdeb970"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Feb 19 18:13:29 2016 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Feb 19 18:13:29 2016 -0800"
      },
      "message": "Fix incorrect size of array.\n\nWhen using sscanf and \"%4s\", the array passed in must include space for\na nul terminator.\n\nBug: 26739265\nChange-Id: I0140a6100ca370666ae61689087ba41b4914789d\n"
    },
    {
      "commit": "d75d4bea54a788dada3f2538a33cc491e4c56ed4",
      "tree": "2afb4a19e32539b11eda85948225ef456b4cf638",
      "parents": [
        "2c75991359df165ca7cc7a6213fb227c0b5ed87c"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Feb 08 14:29:03 2016 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Feb 18 16:09:17 2016 -0800"
      },
      "message": "malloc_debug: reread /proc/pid/maps when entry is missing\n\nReread /proc/pid/maps on demand in case a new library has been loaded.\n\nChange-Id: Iac8109b3e6a07bf02c38300b21eecabf4bcd54df\n"
    },
    {
      "commit": "2c75991359df165ca7cc7a6213fb227c0b5ed87c",
      "tree": "4dc02df00481962e80acb454ee857fd5b2f8b2d4",
      "parents": [
        "2d4721c0c57fe2f7c1e1b40df4763a561b3cf856"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Feb 05 16:17:39 2016 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Feb 18 16:09:17 2016 -0800"
      },
      "message": "Add backtrace_string and export to libmemunreachable\n\nAdd backtrace_string to convert a malloc_debug backtrace to a string.\nAlso move the backtrace functions to libc_malloc_debug_backtrace so that\nlibmemunreachable can reuse them.\n\nChange-Id: I5ad67001c0b4d184903c762863a8588181d4873b\n"
    },
    {
      "commit": "2d4721c0c57fe2f7c1e1b40df4763a561b3cf856",
      "tree": "256b5519e32df5b56b6bc6a343f5ff50d16ddea0",
      "parents": [
        "869691c6f7691dd5bf343617aa185c32e0d3d160"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Feb 02 11:57:54 2016 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Feb 18 16:09:16 2016 -0800"
      },
      "message": "Export malloc_backtrace\n\nChange-Id: Ic1adb4dfd86b9ca698443a36263a3df2c91edda3\n"
    },
    {
      "commit": "869691c6f7691dd5bf343617aa185c32e0d3d160",
      "tree": "aa0cb5619aa90a899a31ca0ba250cb180c5d1302",
      "parents": [
        "aca201358b910e5a4b925c639902387fbdfd9016"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Jan 29 12:48:18 2016 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Feb 18 15:05:38 2016 -0800"
      },
      "message": "Export malloc_iterate and friends\n\nExport malloc_iterate, malloc_enable, and malloc_disable to be used by\nlibmemunreachable.\n\nChange-Id: I08a50349af82a95d096b6b4cbac37ababe4b9b06\n"
    },
    {
      "commit": "598cb89790ba93edbb392c567ecda32b39d64ff1",
      "tree": "28f8dc579b1462a232620d180ab5f32a88f687f4",
      "parents": [
        "2de48bc809bba48a7f209e209b3822bad010166f",
        "7a28a3cf1f8df36e30724e8b4021cddde0596118"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Feb 17 20:38:02 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 17 20:38:02 2016 +0000"
      },
      "message": "Merge \"malloc_debug: reset TrackData mutex after fork\""
    },
    {
      "commit": "72df6708c829a4c6494936fdfbda6dc7e68e647b",
      "tree": "17ede0d54b6f50c3598a3fcec56f50754067690d",
      "parents": [
        "72bca4b4105e24058f3f2eca024382bedb122a30"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Feb 11 15:51:31 2016 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Feb 12 17:30:30 2016 -0800"
      },
      "message": "Fix the default alignment of the allocations.\n\nIn order to enforce this constraint:\n\nThe pointer returned if the allocation succeeds shall be suitably\naligned so that it may be assigned to a pointer to any type of object\nand then used to access such an object in the space allocated.\n\nForce all allocations on 32 bit systems to have 8 byte alignment,\nand all allocations on 64 bit systems to have 16 byte alignment.\n\nAdd a test to verify that the allocator returns the correct alignments.\n\nBug: 26739265\nChange-Id: I9af53279617408676b94e4ec6481b3ed7ffafc6a\n"
    },
    {
      "commit": "7a28a3cf1f8df36e30724e8b4021cddde0596118",
      "tree": "2add78d5dcf97d4cb4f360fba7b512656be70313",
      "parents": [
        "9750a77b31f2fc6d548a02b3a9750c2794648fea"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sun Feb 07 22:51:15 2016 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Feb 12 16:41:14 2016 -0800"
      },
      "message": "malloc_debug: reset TrackData mutex after fork\n\nAdd a pthread_atfork handler to malloc_debug to lock the TrackData mutex\nduring fork and reset it in the child.  Ensures that the TrackData is\nconsistent when forking from a multi-threaded process, and that the\nmutex is in a defined state in the child.\n\nChange-Id: I0dfed30045a28551217ceac227d33b2e18894932\n"
    },
    {
      "commit": "701bb65511aed14da6c51179619785e5706fa5a6",
      "tree": "04cffebe6ad88578e7212d690318563b4bb3bfa5",
      "parents": [
        "4821db1b3ecc14828d4acf4abed26bb7d8b8cf6a"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Feb 02 13:09:59 2016 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Feb 02 13:22:40 2016 -0800"
      },
      "message": "Remove the unused TrackHeader structure.\n\nChange-Id: I07ae5de717e1fcfbe5dfe552a531db9f630da622\n"
    },
    {
      "commit": "7993b80f894db20af4d1d154221c42fea6171a3d",
      "tree": "fc99d36000a8f0853224d75296d96509a730ee05",
      "parents": [
        "50647711ebaf2360aca05cc94a2fdf431c1a153e"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Jan 28 18:35:05 2016 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jan 29 15:19:22 2016 -0800"
      },
      "message": "Add better free tracking.\n\nIncluded in this change:\n\n- Change the tag when a pointer is freed so it\u0027s easy to detect if\n  an already freed pointer is being used.\n- Move the free backtrace out of the header. This backtrace is only\n  used under only some circumstances, so no need to allocate space\n  in all headers for it.\n- Add new option free_track_backtrace_num_frames to specify how many\n  frames to record when the free occurs. This removes the dependency\n  on the backtrace option to get backtraces.\n\nBug: 26739265\nChange-Id: I76f5209507dcf46af67ada162a7cb2bf282116f2\n"
    },
    {
      "commit": "166c8535a5a4253bcb2b04bbd20a2a8c04c44f2c",
      "tree": "09ea8c0e5618aaee0434ad89b83c5ae05162642a",
      "parents": [
        "e4daf100b33fb17936b4d61e0ddfe679fcd04123"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jan 27 17:23:36 2016 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jan 27 18:13:09 2016 -0800"
      },
      "message": "Add min/max values for config values.\n\nThis is to only allow realistic values for some of the options.\n\nBug: 26739265\n\nChange-Id: I172d5401c27e5d638d80f1c93c678c26c4dae0fc\n"
    },
    {
      "commit": "1e185a5056f85e281f699a92114b758591ae3b92",
      "tree": "86a88c43ee354e576535d5121d2250dc6412ccb8",
      "parents": [
        "f2b67b85f5e192812212d3176c07e195c0ffa503"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Jan 25 17:23:38 2016 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Jan 25 17:27:40 2016 -0800"
      },
      "message": "Fix gcc test issues.\n\nChange-Id: I2b26b779f5198c7c9362a452b971260a8852aa7b\n"
    },
    {
      "commit": "f2b67b85f5e192812212d3176c07e195c0ffa503",
      "tree": "e2630c9e80cd0fa29601c63272663842a5a12e9c",
      "parents": [
        "63860cb8fd1adf3f679b9b4ad876323a8d65cd9d"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Jan 25 14:36:34 2016 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Jan 25 14:36:34 2016 -0800"
      },
      "message": "Fix build for gcc.\n\nGcc doesn\u0027t like the brace object initialization, so make all of\nthe Feature objects explicit.\n\nAlso, no arguments to the error_log macros make gcc unhappy, so add\nan option to turn these into warnings. These will be fixed when we\nadd the explicit _error and _warn log functions.\n\nChange-Id: I35af834dabb5548923e893dd980a751fdebfa13a\n"
    },
    {
      "commit": "63860cb8fd1adf3f679b9b4ad876323a8d65cd9d",
      "tree": "25aeae686d92efcb5e08a54e8cba1e8c31efe33b",
      "parents": [
        "ad9c3f34f762ed45cce5dbb93218124ed31f6873"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Nov 16 17:30:32 2015 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Jan 25 10:54:21 2016 -0800"
      },
      "message": "Malloc debug rewrite.\n\nThe major components of the rewrite:\n\n- Completely remove the qemu shared library code. Nobody was using it\n  and it appears to have broken at some point.\n- Adds the ability to enable/disable different options independently.\n- Adds a new option that can enable the backtrace on alloc/free when\n  a process gets a specific signal.\n- Adds a new way to enable malloc debug. If a special property is\n  set, and the process has an environment variable set, then debug\n  malloc will be enabled. This allows something that might be\n  a derivative of app_process to be started with an environment variable\n  being enabled.\n- get_malloc_leak_info() used to return one element for each pointer that\n  had the exact same backtrace. The new version returns information for\n  every one of the pointers with same backtrace. It turns out ddms already\n  automatically coalesces these, so the old method simply hid the fact\n  that there where multiple pointers with the same amount of backtrace.\n- Moved all of the malloc debug specific code into the library.\n  Nothing related to the malloc debug data structures remains in libc.\n- Removed the calls to the debug malloc cleanup routine. Instead, I\n  added an atexit call with the debug malloc cleanup routine. This gets\n  around most problems related to the timing of doing the cleanup.\n\nThe new properties and environment variables:\n\nlibc.debug.malloc.options\n  Set by option name (such as \"backtrace\"). Setting this to a bad value\n  will cause a usage statement to be printed to the log.\n\nlibc.debug.malloc.program\n  Same as before. If this is set, then only the program named will\n  be launched with malloc debug enabled. This is not a complete match,\n  but if any part of the property is in the program name, malloc debug is\n  enabled.\n\nlibc.debug.malloc.env_enabled\n  If set, then malloc debug is only enabled if the running process has the\n  environment variable LIBC_DEBUG_MALLOC_ENABLE set.\n\nBug: 19145921\n\nChange-Id: I7b0e58cc85cc6d4118173fe1f8627a391b64c0d7\n"
    }
  ]
}
