fix[next]: Fix nanobind segfault #2431
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Temporary fix for a segfault with at least nanobind 2.10.2. The circumstances of the environment are not really clear yet, but this looks like a nanobind issue on first sight. I could reproduce the error with python 3.10 & 3.12.
Error message:
Source of the error:
This innocent looking line in src/gt4py/next/otf/compilation/compiler.py triggers the error
After the
getattrcall the moduleimporter.import_from_path(src_dir / new_data.module)is garbage collected resulting in a call tonanobind::detail::nb_module_clear. This function (for unknown reasons) garbage collects the value stored instatic_pyobjects[pyobj_name::dl_version_tpl]which is used innanobind/include/nanobind/ndarray.hwhen calling the compiled program in src/gt4py/next/program_processors/runners/gtfn.py.Steps to debug: