Skip to content

Fatal Python error: Segmentation fault #326

@HomoY

Description

@HomoY

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions