)]}'
{
  "commit": "9b67ca0e410a17fbdef14de5e358782f0195ab96",
  "tree": "c8a9d3da21cde79392f261b032a1cd2924673e35",
  "parents": [
    "bcc44e25499d03b9d85b5fd5f07f8323934a75b8"
  ],
  "author": {
    "name": "Igor Sysoev",
    "email": "igor@sysoev.ru",
    "time": "Wed Nov 04 19:41:08 2009 +0000"
  },
  "committer": {
    "name": "Igor Sysoev",
    "email": "igor@sysoev.ru",
    "time": "Wed Nov 04 19:41:08 2009 +0000"
  },
  "message": "Fix a bug introduced in r2032: After a child process has read a terminate\nmessage from a channel, the process tries to read the channel again.\nThe kernel (at least FreeBSD) may preempt the process and sends a SIGIO\nsignal to a master process. The master process sends a new terminate message,\nthe kernel switches again to the the child process, and the child process\nreads the messages instead of an EAGAIN error. And this may repeat over\nand over. Being that the child process can not exit the cycle and test\nthe termination flag set by the message handler.\n\nThe fix disallow the master process to send a new terminate message on\nSIGIO signal reception. It may send the message only on SIGALARM signal.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "15a2a8bab63595f395470fa798619d40ca71f025",
      "old_mode": 33188,
      "old_path": "src/os/unix/ngx_process_cycle.c",
      "new_id": "4b740305462f62180e6b1e03378c9a300db9b742",
      "new_mode": 33188,
      "new_path": "src/os/unix/ngx_process_cycle.c"
    }
  ]
}
