commit | f3d592c4e2b172f0b6e89277664056a0d3bb833d | [log] [tgz] |
---|---|---|
author | Maksim Levental <maksim.levental@gmail.com> | Fri Jul 25 07:05:30 2025 -0500 |
committer | Copybara-Service <copybara-worker@google.com> | Fri Jul 25 05:09:52 2025 -0700 |
tree | ede5b76abbf9837c4965dd89578b6ba222fd5913 | |
parent | cb1f9a45131950b720155f11fe301b6ca60001d3 [diff] |
[mlir][python] fix PyDenseResourceElementsAttribute finalizer (#150561) This PR melds https://github.com/llvm/llvm-project/pull/150137 and https://github.com/llvm/llvm-project/pull/149414 *and* partially reverts https://github.com/llvm/llvm-project/pull/124832. The summary is the `PyDenseResourceElementsAttribute` finalizer/deleter has/had two problems 1. wasn't threadsafe (can be called from a different thread than that which currently holds the GIL) 2. can be called while the interpreter is "not initialized" https://github.com/llvm/llvm-project/pull/124832 for some reason decides to re-initialize the interpreter to avoid case 2 and runs afoul of the fact that `Py_IsInitialized` can be false during the finalization of the interpreter itself (e.g., at the end of a script). I don't know why this decision was made (I missed the PR) but I believe we should never be calling [Py_Initialize](https://docs.python.org/3/c-api/init.html#c.Py_Initialize): > In an application \*\*\*\***embedding Python**\*\*\*\*, this should be called before using any other Python/C API functions **but we aren't embedding Python**! So therefore we will only be in case 2 when the interpreter is being finalized and in that case we should just leak the buffer. Note, [lldb](https://github.com/llvm/llvm-project/blob/548ca9e97673a168023a616d311d901ca04b29a3/lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp#L81-L93) does a similar sort of thing for its finalizers. Co-authored-by: Anton Korobeynikov <anton@korobeynikov.info> Co-authored-by: Max Manainen <maximmanainen@gmail.com> Co-authored-by: Anton Korobeynikov <anton@korobeynikov.info> Co-authored-by: Max Manainen <maximmanainen@gmail.com> GitOrigin-RevId: 21774489f0a812254c110bebfff3aa9b6c4ad960
See https://mlir.llvm.org/ for more information.