Fatal Python error: Segmentation fault
What happened?
Hi,
I was using quimb to construct tensor network and contract it, my code from -
def roundHM():
.....
vec0_tn = qtn.TensorNetwork(...)
tensors = qtn.TensorNetwork(...)
for val in samples:
.....
for j in range(len(CostH.s)):
....
vecji_tn = qtn.TensorNetwork(...)
x_vji = qtn.TensorNetwork([vec0_tn, tensors, vecji_tn], virtual= True) # line 661
result_vji = x_vji.contract()
The samples and len(CostH.s) can be large, so this will introduce many running of line 661. The segmentation fault occurs occasionally in my simulations (very strange!). I also tried "vec0_tn.copy()" or "vec0_tn.copy(deep=True)". The problem still exists.
I submitted couples of jobs from terminals simultaneously as:
ulimit -v $((10 * 1024 * 1024)) && taskset -c 0-2 nohup python -u ./simulations/hu.py > /home/me/test/test.log 2>&1 & disown
What did you expect to happen?
No occasional segfault
Minimal Complete Verifiable Example
Its hard to include as it appears occasionally
Relevant log output
Fatal Python error: Segmentation fault
Current thread 0x00007303ba02c600 (most recent call first):
File "/home/me/anaconda3/envs/test/lib/python3.10/site-packages/quimb/tensor/tensor_core.py", line 1732 in add_owner
File "/home/me/anaconda3/envs/test/lib/python3.10/site-packages/quimb/tensor/tensor_core.py", line 4327 in add_tensor
File "/home/me/anaconda3/envs/test/lib/python3.10/site-packages/quimb/tensor/tensor_core.py", line 4347 in add_tensor_network
File "/home/me/anaconda3/envs/test/lib/python3.10/site-packages/quimb/tensor/tensor_core.py", line 4374 in add
File "/home/me/anaconda3/envs/test/lib/python3.10/site-packages/quimb/tensor/tensor_core.py", line 4106 in __init__
File "/home/me/anaconda3/envs/test/lib/python3.10/site-packages/hu.py", line 661 in roundHM
Extension modules: numpy.core._multiarray_umath, numpy.core._multiarray_tests, numpy.linalg._umath_linalg, numpy.fft._pocketfft_internal, numpy.random._common, numpy.random.bit_generator, numpy.random._bounded_integers, numpy.random._mt19937, numpy.random.mtrand, numpy.random._philox, numpy.random._pcg64, numpy.random._sfc64, numpy.random._generator, cytoolz.utils, cytoolz.itertoolz, cytoolz.functoolz, cytoolz.dicttoolz, cytoolz.recipes, scipy._lib._ccallback_c, scipy.linalg._fblas, scipy.linalg._flapack, scipy.linalg.cython_lapack, scipy.linalg._cythonized_array_utils, scipy.linalg._solve_toeplitz, scipy.linalg._decomp_lu_cython, scipy.linalg._matfuncs_sqrtm_triu, scipy.linalg._matfuncs_expm, scipy.linalg._linalg_pythran, scipy.linalg.cython_blas, scipy.linalg._decomp_update, scipy.sparse._sparsetools, _csparsetools, scipy.sparse._csparsetools, scipy.sparse.linalg._dsolve._superlu, scipy.sparse.linalg._eigen.arpack._arpack, scipy.sparse.linalg._propack._spropack, scipy.sparse.linalg._propack._dpropack, scipy.sparse.linalg._propack._cpropack, scipy.sparse.linalg._propack._zpropack, scipy.sparse.csgraph._tools, scipy.sparse.csgraph._shortest_path, scipy.sparse.csgraph._traversal, scipy.sparse.csgraph._min_spanning_tree, scipy.sparse.csgraph._flow, scipy.sparse.csgraph._matching, scipy.sparse.csgraph._reordering, scipy.optimize._group_columns, scipy._lib.messagestream, scipy.optimize._trlib._trlib, scipy.optimize._lbfgsb, _moduleTNC, scipy.optimize._moduleTNC, scipy.optimize._cobyla, scipy.optimize._slsqp, scipy.optimize._minpack, scipy.optimize._lsq.givens_elimination, scipy.optimize._zeros, scipy.optimize._cython_nnls, scipy._lib._uarray._uarray, scipy.special._ufuncs_cxx, scipy.special._ufuncs, scipy.special._specfun, scipy.special._comb, scipy.special._ellip_harm_2, scipy.linalg._decomp_interpolative, scipy.optimize._bglu_dense, scipy.optimize._lsap, scipy.spatial._ckdtree, scipy.spatial._qhull, scipy.spatial._voronoi, scipy.spatial._distance_wrap, scipy.spatial._hausdorff, scipy.spatial.transform._rotation, scipy.optimize._direct, yaml._yaml, numba.core.typeconv._typeconv, numba._helperlib, numba._dynfunc, numba._dispatcher, numba.core.typing.builtins.itertools, numba.cpython.builtins.math, numba.core.runtime._nrt_python, numba.np.ufunc._internal, numba.experimental.jitclass._box, psutil._psutil_linux, psutil._psutil_posix, numba.cpython.mathimpl.math, numba.cpython.mathimpl.sys, scipy.ndimage._nd_image, scipy.ndimage._rank_filter_1d, _ni_label, scipy.ndimage._ni_label, scipy.integrate._odepack, scipy.integrate._quadpack, scipy.integrate._vode, scipy.integrate._dop, scipy.integrate._lsoda, dimod.cyvariables, dimod.cyutilities, dimod.cyqmbase.cyqmbase_float32, dimod.cyqmbase.cyqmbase_float64, dimod.binary.cybqm.cybqm_float64, dimod.binary.cybqm.cybqm_float32, dimod.quadratic.cyqm.cyqm_float64, dimod.quadratic.cyqm.cyqm_float32, dimod.constrained.cyexpression, dimod.discrete.cydiscrete_quadratic_model, dimod.constrained.cyconstrained, dimod.cylp, dwave.samplers.greedy.descent, dwave.samplers.random.cyrandom, dwave.samplers.sa.simulated_annealing, dwave.samplers.tabu.tabu_search, dwave.samplers.tree.sample, dwave.samplers.tree.solve, dwave.samplers.tree.utilities, numba.cpython.hashing.math, numba.cpython.hashing.sys, numba.cpython.numbers.math, numba.np.arraymath.math, numba.core.typing.cmathdecl.cmath, numba.core.typing.mathdecl.math, _cvxcore, scipy.signal._sigtools, scipy.signal._max_len_seq_inner, scipy.signal._upfirdn_apply, scipy.signal._spline, scipy.interpolate._fitpack, scipy.interpolate._dfitpack, scipy.interpolate._dierckx, scipy.interpolate._ppoly, scipy.interpolate._interpnd, scipy.interpolate._rbfinterp_pythran, scipy.interpolate._rgi_cython, scipy.interpolate._bspl, scipy.signal._sosfilt, scipy.special.cython_special, scipy.stats._stats, scipy.stats._sobol, scipy.stats._qmc_cy, scipy.stats._biasedurn, scipy.stats._stats_pythran, scipy.stats._levy_stable.levyst, scipy.stats._ansari_swilk_statistics, scipy.stats._mvn, scipy.stats._rcont.rcont, scipy.signal._peak_finding_utils, _ecos, _scs_direct, markupsafe._speedups (total: 150)
Anything else we need to know?
No response
Environment
Python 3.10.18 Ubuntu 24.04.2 LTS quimb Version: 1.11.1
Other pacakages: alembic 1.16.4 asttokens 2.4.1 autoray 0.7.2 bayesian-optimization 1.4.0 black 25.1.0 clarabel 0.7.1 click 8.2.1 cma 4.2.0 cmaes 0.11.1 colorama 0.4.0 colorlog 6.9.0 comm 0.2.2 contourpy 1.3.2 cotengra 0.7.5 cvxpy 1.7.0 cycler 0.12.1 cytoolz 1.0.1 debugpy 1.8.1 decorator 5.1.1 Deprecated 1.2.14 dimod 0.12.14 directsearch 1.0 dwave-neal 0.6.0 dwave-samplers 1.2.0 dwave-tabu 0.5.0 ecos 2.0.13 exceptiongroup 1.2.1 executing 2.0.1 fonttools 4.59.0 gibbssdp 0.0.1 gibbssdp_utils 0.1.0 greenlet 3.2.3 ipykernel 6.29.4 ipython 8.24.0 jedi 0.19.1 Jinja2 3.1.6 joblib 1.5.1 jupyter_client 8.6.1 jupyter_core 5.7.2 kahypar 1.3.5 kiwisolver 1.4.8 llvmlite 0.44.0 Mako 1.3.10 MarkupSafe 3.0.2 matplotlib 3.10.3 matplotlib-inline 0.1.7 maturin 1.5.1 mypy_extensions 1.1.0 nest-asyncio 1.6.0 networkx 3.2.1 nevergrad 1.0.11 numba 0.61.2 numpy 1.26.4 optuna 4.2.1 osqp 1.0.4 packaging 24.0 pandas 2.3.1 parso 0.8.4 pathspec 0.12.1 pgd_utils 0.1.0 pillow 11.3.0 pip 25.1 platformdirs 4.3.8 prompt-toolkit 3.0.43 psutil 5.9.8 pure-eval 0.2.2 pybind11 2.12.0 Pygments 2.17.2 pyparsing 3.2.3 pyqubo 1.4.0 python-dateutil 2.9.0.post0 pytz 2025.2 PyYAML 6.0.2 pyzmq 26.0.3 qdldl 0.1.7.post2 SciencePlots 2.1.1 scikit-learn 1.7.0 scipy 1.15.3 scs 3.2.4.post1 setuptools 78.1.1 six 1.17.0 sparse_sdp 0.1.0 SQLAlchemy 2.0.41 ssdppy 0.0.1 stack-data 0.6.3 threadpoolctl 3.6.0 tomli 2.0.1 toolz 0.12.1 tornado 6.4 tqdm 4.67.1 traitlets 5.14.3 typing_extensions 4.14.1 tzdata 2025.2 wcwidth 0.2.13 wheel 0.45.1 wrapt 1.16.0
Hi @HomoY, I'm afraid I don't really have any ideas nor any way to debug this. Leaving open in case others have a similar problem though.