The GitHub Actions job "CI" on tvm-ffi.git/pyobject has failed.
Run started by GitHub user cyx-6 (triggered by cyx-6).

Head commit for run:
ec8fe69700b317eef9e4dfdfba91b0b827a8e263 / Yaxing Cai <[email protected]>
[FEAT][Python] Enable PyObject-tying on free-threaded builds

Re-enable wrapper<->chandle identity tying on Py_GIL_DISABLED builds
(commit 5c2b1c9 had disabled it wholesale on FT). The tagged_pyobj word
becomes a per-word spin-lock that serializes every binding transition,
keeping a.x is a.x / stable id() / f(x) is x without data races.

tvm_ffi_python_helpers.h:
- Spin-lock encoded in tagged_pyobj (Locked bit) with __atomic_* CAS;
  GC-safe back-off (TVMFFIPyLockYield) detaches the thread state so a
  concurrent stop-the-world GC is never starved. Lock is held only across
  short park-free word/header edits; alloc/revive run lock-released.
- Active-hit revival uses PyUnstable_TryIncRef / EnableTryIncRef to close
  the borrowed-read UAF; a custom pre-bump tp_dealloc slot clears the
  Active binding before Cython's resurrection bump so TryIncRef stays
  authoritative.
- Total slot coverage over the closed cdef CObject family; the one
  registration-bypassing carrier (OpaquePyObject) is wrapped at init via
  TVMFFIPyInstallTypeSlotsForOpaque. The old per-death routing gate is gone
  and tp_dealloc's binding-clear is an unconditional FT no-op.
- Merge the make_ret claim marker into the existing InTransit bit (the two
  producers never overlap on one word: a claim holds a strong chandle ref,
  which gates off the tp_free/delete_space that touch InTransit for a
  dealloc), freeing tag bit 3 for future use.
- Reorganize into three by-role sections (alloc/revival/make_ret, dealloc,
  installation), one #ifdef Py_GIL_DISABLED split each. The GIL build is
  byte-identical (verified by a function-body-map diff: 36 fns, 0 changed).

.pxi: fold Detach/Attach/IsDetached into a single compare-and-rebind
(TVMFFIPyRebindPyObject) covering move / construct / detach; wrap
OpaquePyObject; drop now-stale comments.

tests: run identity tests on FT; add concurrent carrier-type stress
(Function/Error/multi-level-heap) and OpaquePyObject roundtrip/leak tests.

Report URL: https://github.com/apache/tvm-ffi/actions/runs/27466150805

With regards,
GitHub Actions via GitBox


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to