)]}'
{
  "log": [
    {
      "commit": "ea26b33248663a836d2f0719cb4e46967b648fe2",
      "tree": "30c13529fed73bab313373ba3ad5a10c9795ced8",
      "parents": [
        "668fddb3ba36b52a16381513b1a0a42d9dd910e1"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Apr 15 14:13:52 2016 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Apr 15 14:13:52 2016 -0700"
      },
      "message": "Small fixes to malloc debug.\n\n- Change the printed name from pointer to allocation to be explicit about\n  what is wrong.\n- Change the signal to be SIGRTMAX - 19 instead of SIGRTMIN. This should\n  prevent problems if we have to reserve other real time signals.\n\nBug: 28218530\nChange-Id: Ic7d9c471929264d8e47bafaffc16e099840c9e71\n"
    },
    {
      "commit": "55a89a48f41da349735627c2ae8985895955b1ca",
      "tree": "c946bd9b7e1353787f278e5face49cae5d8f238d",
      "parents": [
        "03a16d3db7c5fff733d28250212821ec2ff5eccd"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Apr 07 17:14:53 2016 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Apr 12 15:36:53 2016 -0700"
      },
      "message": "Small refactor.\n\n- Move all ScopedDisableDebugCalls into the debug_XXX calls. This avoids\nany issues that might arise where every part of the code needs to properly\nguard anything that might allocate. Instead everything is already guarded.\n- Add a pointer to debug_data in all of the XXData classes. This avoids\ncalling individual functions passing in the debug_data pointer.\n- Flip the NO_HEADER_OPTIONS to an explicit HEADER_OPTIONS list since fewer\noptions actually require a header.\n- Move the extern of g_debug to the DebugData.h header.\n\nChange-Id: Ia213a391b4a44d9ce122a709d09fe4f1b5426f36\n"
    },
    {
      "commit": "d0919623a2ef56107590eca9a9522a250fb8bd4a",
      "tree": "b0e66ab45ca64f3fb90e03205ebd814f5c55c4f0",
      "parents": [
        "8d0af0bf8004c65f13b985643004a915d7e382eb"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Mar 15 22:39:39 2016 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Mar 16 17:38:08 2016 -0700"
      },
      "message": "Fix race in malloc debug option free_track.\n\nThe free track mechanism could fail if, at the same time a free occurs,\nanother thread is trying to free and verify the same allocation. This\ndoesn\u0027t work if the freed allocation is added to the list and we still\ndo work on it. The fix is to only add to the free list when we are done\nwith the allocation.\n\nAlso fix a problem where the usable size is computed incorrectly because\ntwo of the arguments where reversed.\n\nIn addition, add a check that the allocation being verified has the correct\ntag before trying to check the body of the allocation.\n\nAdd a test to catch the original failure.\n\nAdd a test for the tag being different.\n\nBug: 27601650\nChange-Id: Ie9200677d066255b8e668a48422f23f909f4ddee\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": "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"
    }
  ]
}
