)]}'
{
  "commit": "fca1083fd68676e670267c5cc91c8ac0eeef1ddb",
  "tree": "f780e9bbeeeeafefeb08370f468088ca6f0b56d9",
  "parents": [
    "2fcf77664f6501548ba0475bc28c2f03bb3801c7"
  ],
  "author": {
    "name": "Jonas Devlieghere",
    "email": "jonas@devlieghere.com",
    "time": "Mon May 11 10:09:08 2026 -0500"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon May 11 10:09:08 2026 -0500"
  },
  "message": "[lldb] Handle SIGINT via the MainLoop signal thread (on POSIX) (#196687)\n\nThe driver\u0027s async SIGINT handler called\nSBDebugger::DispatchInputInterrupt directly. That is not\nasync-signal-safe and can lead to a crash.\n\nRegister SIGINT with the existing signal-thread MainLoop instead so\nDispatchInputInterrupt runs in normal thread context. The Windows path\nis unchanged and keeps the legacy async handler.\n\nWhile DispatchInputInterrupt runs, the callback temporarily installs\nSIG_DFL so a second Ctrl-C still hard-terminates the process, preserving\nthe escape hatch users rely on when the debugger is unresponsive.\n\nMoving SIGINT off the main thread means a Ctrl-C no longer interrupts\nblocking syscalls there (e.g. a Python REPL waiting on input or\nsleeping), so Python never observes the queued interrupt and\nKeyboardInterrupt is not raised. To restore that behavior, after\ndispatching the interrupt the callback re-raises SIGINT on the main\nthread via pthread_kill; the resulting EINTR lets Python pick up the\npending interrupt. A skip flag suppresses the re-entry that this\nself-send produces. Because the callback only ever runs on the signal\nthread, the flag and the captured main-thread id live in the lambda\u0027s\ncaptures and need no synchronization.\n\nrdar://158218595",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d47d3daf1c3fcaaab5832e8b1f3887f6d2cfb2fd",
      "old_mode": 33188,
      "old_path": "lldb/tools/driver/Driver.cpp",
      "new_id": "e58286f9ff41e9582e9a58ddc2d0b2f6c89e01de",
      "new_mode": 33188,
      "new_path": "lldb/tools/driver/Driver.cpp"
    }
  ]
}
