)]}'
{
  "commit": "f3c9ddf34aa40d4d39f38fe8a0c336ac8a0c457c",
  "tree": "f7e6c5cdee767f9a811c0e4801809e74a865c2c6",
  "parents": [
    "8ce32bf08819c991977c67296eb8ed79696aaaaf"
  ],
  "author": {
    "name": "Barret Rhoden",
    "email": "brho@cs.berkeley.edu",
    "time": "Thu Nov 14 20:58:19 2019 -0500"
  },
  "committer": {
    "name": "Barret Rhoden",
    "email": "brho@cs.berkeley.edu",
    "time": "Thu Nov 14 20:58:19 2019 -0500"
  },
  "message": "Show inlined functions with bt-akaros.sh (kernel)\n\nI noticed syzkaller was printing out additional backtrace lines with\ninfo about inlining functions.  addr2line does that for us, spitting the\ninfo out on two lines.  With a little Bash magic, we can parse those\nlines too.\n\nNow something like this:\n\n #04 [\u003c0xffffffffc2059e3e\u003e] in __try_wait_any.isra.7\n #05 [\u003c0xffffffffc205bf3a\u003e] in sys_waitpid\n #06 [\u003c0xffffffffc205c849\u003e] in syscall\n\nwill show up as:\n\n #04 [\u003c0xffffffffc2059e3e\u003e] in __try_wait_any() at kern/src/syscall.c:1221\n #05 [\u003c0xffffffffc205bf3a\u003e] in wait_any() at kern/src/syscall.c:1286\n #05 [\u003c   (inlined by)   \u003e] in sys_waitpid() at kern/src/syscall.c:1329\n #06 [\u003c0xffffffffc205c849\u003e] in syscall() at kern/src/syscall.c:2582\n\nFrame 5 is repeated twice.  The actual address, which the kernel\u0027s\nsymtab says in in sys_waitpid(), is actually in wait_any().  Both the\ninlined function (wait_any()) and the function it is in are reported.\n\nThe previous version of bt_akaros was printing the correct line number\n(1286); you\u0027d just have to notice when you opened the code that it is in\nwait_any(), which might not be obvious if you\u0027re looking at a slightly\ndifferent kernel source.\n\nOverall, this gives us more info when processing backtraces in that we\ncan see the inlining and call graph.  For example, here\u0027s a backtrace\nsyzkaller caught:\n\n #03 [\u003c0xffffffffc20496db\u003e] in kref_put\n #04 [\u003c0xffffffffc204d520\u003e] in proc_destroy\n #05 [\u003c0xffffffffc2058c36\u003e] in sys_proc_destroy\n\nThat doesn\u0027t tell us much.  It is much better with inlining:\n\n #03 [\u003c0xffffffffc20496db\u003e] in kref_put at include/kref.h:68\n #04 [\u003c     [inline]     \u003e] in proc_decref at src/process.c:587\n #04 [\u003c     [inline]     \u003e] in proc_disown_children at src/process.c:853\n #04 [\u003c0xffffffffc204d520\u003e] in proc_destroy at src/process.c:932\n #05 [\u003c0xffffffffc2058c36\u003e] in sys_proc_destroy at src/syscall.c:852\n\nNote this is independent of CONFIG_BETTER_BACKTRACES, which just sets\n-fno-optimize-sibling-calls.  This change is all about getting more info\nfrom the backtrace the kernel spits out.  BETTER_BACKTRACES is about\nmaking the kernel spit out more frames.\n\nSigned-off-by: Barret Rhoden \u003cbrho@cs.berkeley.edu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d1b13b05112e5e895ae59823fdd9ddc0abbdae8a",
      "old_mode": 33261,
      "old_path": "scripts/bt-akaros.sh",
      "new_id": "7bf6227ad93c216f6b808013f512f4e2f7a83592",
      "new_mode": 33261,
      "new_path": "scripts/bt-akaros.sh"
    }
  ]
}
