)]}'
{
  "commit": "912176016cfe18b6a848f0999e4aa94b6e323572",
  "tree": "7c3ee5e9425301bfede2c01093a6465e1f321c8e",
  "parents": [
    "86aa07a7f09942727c4f267f8b233334be268d13"
  ],
  "author": {
    "name": "Jonas Devlieghere",
    "email": "jonas@devlieghere.com",
    "time": "Mon May 11 09:27:24 2026 -0500"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon May 11 09:27:24 2026 -0500"
  },
  "message": "[lldb] Release output lock across blocking el_wgetc in DisplayCompletions (#196686)\n\nDisplayCompletions held m_output_stream_sp-\u003eLock() across the blocking\nel_wgetc() call used by the \"More (Y/n/a)\" pager. Because the lock is a\nrecursive_mutex, this worked when Editline::Interrupt() ran on the same\nthread (the synchronous SIGINT handler), but deadlocks when Interrupt()\nruns on another thread: it blocks on the lock and can never call\nInterruptRead() to wake the editor thread.\n\nMirror the pattern already used by Editline::GetCharacter: drop the lock\nacross the blocking read and reacquire it afterward. The status check\nand the \"^C\\n\" / \"\\n\" prints stay under the lock.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "39b0a649a7f60edb9a4fd0c5710c090380fd4dda",
      "old_mode": 33188,
      "old_path": "lldb/source/Host/common/Editline.cpp",
      "new_id": "833516b0b2c2de964c5c735605d50452a4d317cc",
      "new_mode": 33188,
      "new_path": "lldb/source/Host/common/Editline.cpp"
    }
  ]
}
