Skip to content

fix: pin eigency==3.4.0.7 to fix segfaults from ABI mismatch#44

Merged
ardiloot merged 1 commit intomasterfrom
fix/pin-eigency-version
Mar 6, 2026
Merged

fix: pin eigency==3.4.0.7 to fix segfaults from ABI mismatch#44
ardiloot merged 1 commit intomasterfrom
fix/pin-eigency-version

Conversation

@ardiloot
Copy link
Copy Markdown
Owner

@ardiloot ardiloot commented Mar 6, 2026

Problem

All tests crash with segfaults (exit code 139 on Linux/macOS, exit code 1 on Windows) across all Python versions and platforms.

Root Cause

[build-system] requires had eigency>=3.4.0.0, which resolved to 3.4.0.7 in the isolated PEP 517 build environment, while uv.lock pinned the runtime dependency to 3.4.0.4.

eigency 3.4.0.7 (PR #73) renamed all Cython API symbols from per-type names (e.g. ndarray_complex_double_F) to fused-type names (e.g. __pyx_fuse_14ndarray_F). The compiled extension (SecondOrderNLTMM.so) includes eigency_cpp.h at build time, which hardcodes these symbol names. At runtime, the extension calls into eigency's conversions.so — if the symbol names don't match, it segfaults.

Fix

Pin eigency==3.4.0.7 in both [build-system] requires and [project] dependencies to ensure the build-time and runtime versions always match.

The build-time and runtime eigency versions must match because
eigency_cpp.h (included at compile time) hardcodes Cython API symbol
names that must be present in the runtime conversions.so.

eigency 3.4.0.7 (PR #73) renamed all API symbols from per-type names
(e.g. ndarray_complex_double_F) to fused-type names
(e.g. __pyx_fuse_14ndarray_F). A version mismatch between build-time
and runtime causes segfaults due to missing symbols.

Previously, [build-system] requires used >=3.4.0.0 which resolved to
3.4.0.7 in the isolated PEP 517 build environment, while uv.lock
pinned runtime to 3.4.0.4, causing the mismatch.
@ardiloot ardiloot merged commit 0e91225 into master Mar 6, 2026
21 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant