)]}'
{
  "commit": "072cd7c33627a90e9399d9d880d764407584b08e",
  "tree": "b1a90ba078deb976381376dcdf7d94b4b76250ae",
  "parents": [
    "2e3e76e5cde34786780f5b3723f495fdbdf37c84"
  ],
  "author": {
    "name": "Pablo Galindo Salgado",
    "email": "Pablogsal@gmail.com",
    "time": "Thu Feb 12 11:45:28 2026"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Feb 12 11:45:28 2026"
  },
  "message": "gh-142349: Fix refcount corruption in lazy import specialization (#144733)\n\nRemove spurious Py_DECREF on borrowed ref in LOAD_GLOBAL specialization\n\n_PyDict_LookupIndexAndValue() returns a borrowed reference via\n_Py_dict_lookup(), but specialize_load_global_lock_held() called\nPy_DECREF(value) on it when bailing out for lazy imports. Each time\nthe adaptive counter fired while a lazy import was still in globals,\nthis stole one reference from the dict\u0027s object. With 8+ threads\nracing through LOAD_GLOBAL during concurrent lazy import resolution,\nenough triggers accumulated to drive the refcount to zero while the\ndict and other threads still referenced the object, causing\nuse-after-free.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7c02e929d47d9e19ebd1b0cf0cb1948c921cc7f7",
      "old_mode": 33188,
      "old_path": "Python/specialize.c",
      "new_id": "5ba016f83ea077c5f890bde256ecece00551ddb2",
      "new_mode": 33188,
      "new_path": "Python/specialize.c"
    }
  ]
}
