)]}'
{
  "commit": "e13318fc9a77c502c4b1086e9a9cb6929905b079",
  "tree": "18edd186bde6c8ce9035083e7f9d9a66ff67aa14",
  "parents": [
    "df1135d0583e55fd85f0dab460453af4511159cf"
  ],
  "author": {
    "name": "Barret Rhoden",
    "email": "brho@cs.berkeley.edu",
    "time": "Mon Jul 11 15:53:45 2016 -0400"
  },
  "committer": {
    "name": "Barret Rhoden",
    "email": "brho@cs.berkeley.edu",
    "time": "Tue Jul 19 11:43:10 2016 -0400"
  },
  "message": "Add sanity checks to __prep_signal_handler()\n\nIf a uthread messed up its stack pointer and then segfaulted, the uthread\ncode would crash nastily when we attempted to inject the SIGSEGV.  This\nsanity check will catch common problems in this area.\n\nFor instance, put this in pthread_test:\n\n\tasm volatile (\"mov $0, %rsp; push %rax\");\n\nUltimately, using the uthread\u0027s stack in this manner is a bit dangerous.\n\nThis is especially true since  __prep_signal_handler() basically does an\nalloca for the context and ancillary state.  So any 2LS that uses signals\nneeds a suitable large uthread stack.\n\nSigned-off-by: Barret Rhoden \u003cbrho@cs.berkeley.edu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "bc7be777aa21cf9f7e50535f442aab64422e757a",
      "old_mode": 33188,
      "old_path": "user/parlib/signal.c",
      "new_id": "7d3553d3ec58571f5b6d559a1915723fd613f341",
      "new_mode": 33188,
      "new_path": "user/parlib/signal.c"
    }
  ]
}
