)]}'
{
  "commit": "9adc8ddad02d062e0b395d8079f051e8ae4552b4",
  "tree": "46da6e0a925cc4c1d7defaefc19d02868bf92f58",
  "parents": [
    "13c897093fd8d40ee3a5b13ff9c0b38c89e72bf1"
  ],
  "author": {
    "name": "jimingham",
    "email": "jingham@apple.com",
    "time": "Fri Jul 11 10:02:07 2025 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri Jul 11 10:02:07 2025 -0700"
  },
  "message": "When running OS Plugins from dSYM\u0027s, make sure start state is correct (#146441)\n\nThis is an odd corner case of the use of scripts loaded from dSYM\u0027s - a\nmacOS only feature, which can load OS Plugins that re-present the thread\nstate of the program we attach to. If we find out about and load the\ndSYM scripts when we discover a target in the course of attaching to it,\nwe can end up running the OS plugin before we\u0027ve started up the private\nstate thread. However, the os_plugin in that case will be running before\nwe broadcast the stop event to the public event listener. So it should\nformally use the private state and not the public state for the Python\ncode environment.\n\nThis patch says that if we have not yet started up the private state\nthread, then any thread that is servicing events is doing so on behalf\nof the private state machinery, and should see the private state, not\nthe public state.\n\nMost of the patch is getting a test that will actually reproduce the\nerror. Only the test `test_python_os_plugin_remote` actually reproduced\nthe error. In `test_python_os_plugin` we actually do start up the\nprivate state thread before handling the event. `test_python_os_plugin`\nis there for completeness sake.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d3477e115e2d85abd0b0e9c369e6e9812c2282c3",
      "old_mode": 33188,
      "old_path": "lldb/include/lldb/Host/HostThread.h",
      "new_id": "c969492f5b20ae0786e4af46970eb402ebc90521",
      "new_mode": 33188,
      "new_path": "lldb/include/lldb/Host/HostThread.h"
    },
    {
      "type": "modify",
      "old_id": "a8892e9c43225b4a7bb064e66d7ef15d3a886f7b",
      "old_mode": 33188,
      "old_path": "lldb/include/lldb/Target/Process.h",
      "new_id": "637b0774ec7dbbc03c6b2ed03789ed0e418e5321",
      "new_mode": 33188,
      "new_path": "lldb/include/lldb/Target/Process.h"
    },
    {
      "type": "modify",
      "old_id": "eec029be1c091dd0d9f8ea0fbaaa01090657449e",
      "old_mode": 33188,
      "old_path": "lldb/source/Host/common/HostThread.cpp",
      "new_id": "8822be016b0a11d3e88cacd6897abe948c8550ac",
      "new_mode": 33188,
      "new_path": "lldb/source/Host/common/HostThread.cpp"
    },
    {
      "type": "modify",
      "old_id": "bba1230c799206822cb0b1e5ae679c901aee3e05",
      "old_mode": 33188,
      "old_path": "lldb/source/Target/Process.cpp",
      "new_id": "2aa02fd58335ec504b711d72011d6050fc382af7",
      "new_mode": 33188,
      "new_path": "lldb/source/Target/Process.cpp"
    },
    {
      "type": "modify",
      "old_id": "9c6208e9e0a65ac48135c4fd5503b471ca806b62",
      "old_mode": 33188,
      "old_path": "lldb/source/Target/StackFrameList.cpp",
      "new_id": "16cd2548c2784c87258dc0b4ee2cb27049a5220a",
      "new_mode": 33188,
      "new_path": "lldb/source/Target/StackFrameList.cpp"
    },
    {
      "type": "modify",
      "old_id": "f4404d78492f98d496fcacbf0fbab65fdc52d865",
      "old_mode": 33188,
      "old_path": "lldb/test/API/functionalities/plugins/python_os_plugin/operating_system.py",
      "new_id": "de9900cae4b75e7475c72ec7ff5e4e1ba9a1276e",
      "new_mode": 33188,
      "new_path": "lldb/test/API/functionalities/plugins/python_os_plugin/operating_system.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "93618844a7a4d8d285ef4ae3e5cf3288acf878da",
      "new_mode": 33188,
      "new_path": "lldb/test/API/functionalities/plugins/python_os_plugin/os_plugin_in_dsym/Makefile"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f0d192be661bb11ab4d3facab0810b467c11fd64",
      "new_mode": 33188,
      "new_path": "lldb/test/API/functionalities/plugins/python_os_plugin/os_plugin_in_dsym/TestOSIndSYM.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8e03f395e61103ee678ce7ba61b6d197a29a4091",
      "new_mode": 33188,
      "new_path": "lldb/test/API/functionalities/plugins/python_os_plugin/os_plugin_in_dsym/main.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0f9cec670b73fa759822e15074ef10497c1ad9a2",
      "new_mode": 33188,
      "new_path": "lldb/test/API/functionalities/plugins/python_os_plugin/os_plugin_in_dsym/operating_system.py"
    }
  ]
}
