)]}'
{
  "commit": "929a26a7cf80b2df9981595e6bcfcfc4a970052a",
  "tree": "7be5a0c2750044002a9577e85a2736248aa48d7e",
  "parents": [
    "0d7435f2138955b4b8aa9044eefbaff31ec33248"
  ],
  "author": {
    "name": "Donald Sharp",
    "email": "sharpd@cumulusnetworks.com",
    "time": "Wed Oct 28 19:59:30 2015 -0400"
  },
  "committer": {
    "name": "Donald Sharp",
    "email": "sharpd@cumulusnetworks.com",
    "time": "Tue Dec 08 14:12:10 2015 -0500"
  },
  "message": "lib: Memory reporting fails over 2GB\n\nThe old style mallinfo() function uses an \u0027int\u0027 to\nreport memory usage data to the program.  Unfortunately\nmodern architectures can chew through 2gb of memory like a\nbuzz saw hitting some warm butter, especially in the case\nof a memory leak or memory fragmentation.\n\nWhen a daemon uses more than 2gb of memory, just indicate it\u0027s\ngotten large and we don\u0027t know anymore.\n\nPre-change behavior:\nRobot-1# show memory\nSystem allocator statistics:\nTotal heap allocated: 16777216 TiB\nHolding block headers: 1288 KiB\nUsed small blocks: 0 bytes\nUsed ordinary blocks: 535 MiB\nFree small blocks: 768 bytes\nFree ordinary blocks: 16777216 TiB\nOrdinary blocks: 266107\nSmall blocks: 24\nHolding blocks: 2\n\nPost-change behavior:\nRobot-1# show memory\nSystem allocator statistics:\n  Total heap allocated:  1572 KiB\n  Holding block headers: \u003e 2GB\n  Used small blocks:     0 bytes\n  Used ordinary blocks:  1443 KiB\n  Free small blocks:     32 bytes\n  Free ordinary blocks:  129 KiB\n  Ordinary blocks:       2\n  Small blocks:          1\n  Holding blocks:        2\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a9149e10ff9d3854ad363cec35a6d53ea5687d53",
      "old_mode": 33188,
      "old_path": "lib/memory.c",
      "new_id": "172ddfc49c559d272b9888f7a36a2afbe98c7308",
      "new_mode": 33188,
      "new_path": "lib/memory.c"
    }
  ]
}
