)]}'
{
  "commit": "5a7307e70ddab898d4d80ef71ff7bece611e7d97",
  "tree": "43fbb55f852ff2e2885a3da4ae0c3c8b3a176b95",
  "parents": [
    "f650ac686b9d957986e988f2d2a09413ec308f5f"
  ],
  "author": {
    "name": "Felip Moll",
    "email": "fmoll@nvidia.com",
    "time": "Sat Jun 13 01:27:02 2026 +0200"
  },
  "committer": {
    "name": "Felip Moll",
    "email": "fmoll@nvidia.com",
    "time": "Mon Jul 27 18:59:15 2026 +0200"
  },
  "message": "conmgr - Honor poll interrupt requested while not polling\n\nMirror the epoll backend lost-wakeup fix in the poll(2) backend.\n\npollctl_interrupt() silently ignored a request when pctl.polling was\nfalse. There is a window where the poll work is queued (mgr.poll_active\nis set) but the worker has not yet entered poll() and set pctl.polling.\nAn interrupt requested in that window - notably on shutdown - was lost,\nand the worker then blocked indefinitely in poll(timeout\u003d-1) with no\nfurther wakeup.\n\nRecord the request instead of dropping it when not polling, and have\n_poll() honor a pending request by skipping the blocking poll(). Both\nthe arming and the request are done under pctl.mutex, so every\ninterleaving is covered: _interrupt() either sees pctl.polling and sends\nthe wakeup byte, or it records the request and the imminent _poll()\nskips blocking.\n\nTicket: 25227\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9685df510bbbf3f7dddc1ef70b00b77633e6c89d",
      "old_mode": 33188,
      "old_path": "src/conmgr/poll.c",
      "new_id": "4748fc0c3c2038c409d839f152cdaf4adda9e018",
      "new_mode": 33188,
      "new_path": "src/conmgr/poll.c"
    }
  ]
}
