cellrank icon indicating copy to clipboard operation
cellrank copied to clipboard

Segfault / python free() invalid size error during compute_transition_matrix

Open KforKuma opened this issue 6 months ago • 5 comments

I followed up the tutorial here and with the pancreas exmaple dataset. Every time I went to the line vk.compute_transition_matrix(), python produced a segfault. Sometimes it just corrupted, other times it printed very long output, which is attached below.

import numpy as np
import cellrank as cr
import scanpy as sc
import scvelo as scv
scv.settings.verbosity = 3
cr.settings.verbosity = 2
adata = cr.datasets.pancreas()
scv.pp.filter_and_normalize(
    adata, min_shared_counts=20, n_top_genes=2000, subset_highly_variable=False
)
sc.tl.pca(adata)
sc.pp.neighbors(adata, n_pcs=30, n_neighbors=30, random_state=0)
scv.pp.moments(adata, n_pcs=None, n_neighbors=None)
scv.tl.recover_dynamics(adata, n_jobs=8)
scv.tl.velocity(adata, mode="dynamical")
vk = cr.kernels.VelocityKernel(adata)
vk.compute_transition_matrix()

 0%|                                                                                                                                                                                 | 0/2531 [00:00<?, ?cell/s]*** Error in `python': free(): invalid size: 0x00002b9516eb9c70 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x306ca7d5bd)[0x2b950f2cf5bd]
/lib64/libpthread.so.0(pthread_create+0x26a)[0x2b950e72b2ea]
python(PyThread_start_new_thread+0xa3)[0x2b950e33b3c3]
python(+0x24280a)[0x2b950e35d80a]
python(+0x14bb38)[0x2b950e266b38]
python(_PyObject_MakeTpCall+0x152)[0x2b950e25da62]
python(_PyEval_EvalFrameDefault+0x4dea)[0x2b950e30385a]
python(_PyFunction_Vectorcall+0x25d)[0x2b950e2e11bd]
python(_PyEval_EvalFrameDefault+0x60b)[0x2b950e2ff07b]
python(+0x1c51b9)[0x2b950e2e01b9]
python(+0x1c7ec4)[0x2b950e2e2ec4]
python(PyObject_Call+0x1aa)[0x2b950e26411a]
python(_PyEval_EvalFrameDefault+0x2c0b)[0x2b950e30167b]
python(_PyFunction_Vectorcall+0x25d)[0x2b950e2e11bd]
python(_PyEval_EvalFrameDefault+0x60b)[0x2b950e2ff07b]
python(_PyFunction_Vectorcall+0x25d)[0x2b950e2e11bd]
python(_PyEval_EvalFrameDefault+0x60b)[0x2b950e2ff07b]
python(+0x1c51b9)[0x2b950e2e01b9]
python(+0x1c7ec4)[0x2b950e2e2ec4]
python(PyObject_Call+0x1aa)[0x2b950e26411a]
python(+0x279d05)[0x2b950e394d05]
python(+0x215dd4)[0x2b950e330dd4]
/lib64/libpthread.so.0(+0x306d207df3)[0x2b950e72adf3]
/lib64/libc.so.6(clone+0x6d)[0x2b950f3482cd]
======= Memory map: ========
479d4000000-47a14000000 rw-p 00000000 00:00 0 
2b950e11b000-2b950e175000 r--p 00000000 00:14 7296965889                 /data/HeLab/miniconda3/envs/scvpy10/bin/python3.10
2b950e175000-2b950e3cc000 r-xp 0005a000 00:14 7296965889                 /data/HeLab/miniconda3/envs/scvpy10/bin/python3.10
2b950e3cc000-2b950e4c3000 r--p 002b1000 00:14 7296965889                 /data/HeLab/miniconda3/envs/scvpy10/bin/python3.10
2b950e4c3000-2b950e4c8000 r--p 003a7000 00:14 7296965889                 /data/HeLab/miniconda3/envs/scvpy10/bin/python3.10
2b950e4c8000-2b950e4fa000 rw-p 003ac000 00:14 7296965889                 /data/HeLab/miniconda3/envs/scvpy10/bin/python3.10
2b950e4fa000-2b950e500000 rw-p 00000000 00:00 0 
2b950e500000-2b950e521000 r-xp 00000000 08:01 40                         /lib64/ld-2.17.so
2b950e521000-2b950e522000 rw-p 00000000 00:00 0 
2b950e522000-2b950e523000 rw-p 00000000 00:00 0 
2b950e720000-2b950e721000 r--p 00020000 08:01 40                         /lib64/ld-2.17.so
2b950e721000-2b950e722000 rw-p 00021000 08:01 40                         /lib64/ld-2.17.so
2b950e722000-2b950e723000 rw-p 00000000 00:00 0 
2b950e723000-2b950e739000 r-xp 00000000 08:01 78                         /lib64/libpthread-2.17.so
2b950e739000-2b950e939000 ---p 00016000 08:01 78                         /lib64/libpthread-2.17.so
2b950e939000-2b950e93a000 r--p 00016000 08:01 78                         /lib64/libpthread-2.17.so
2b950e93a000-2b950e93b000 rw-p 00017000 08:01 78                         /lib64/libpthread-2.17.so
2b950e93b000-2b950e940000 rw-p 00000000 00:00 0 
2b950e940000-2b950e943000 r-xp 00000000 08:01 56                         /lib64/libdl-2.17.so
2b950e943000-2b950eb42000 ---p 00003000 08:01 56                         /lib64/libdl-2.17.so
2b950eb42000-2b950eb43000 r--p 00002000 08:01 56                         /lib64/libdl-2.17.so
2b950eb43000-2b950eb44000 rw-p 00003000 08:01 56                         /lib64/libdl-2.17.so
2b950eb44000-2b950eb46000 r-xp 00000000 08:01 311                        /lib64/libutil-2.17.so
2b950eb46000-2b950ed45000 ---p 00002000 08:01 311                        /lib64/libutil-2.17.so
2b950ed45000-2b950ed46000 r--p 00001000 08:01 311                        /lib64/libutil-2.17.so
2b950ed46000-2b950ed47000 rw-p 00002000 08:01 311                        /lib64/libutil-2.17.so
2b950ed47000-2b950ed4e000 r-xp 00000000 08:01 114                        /lib64/librt-2.17.so
2b950ed4e000-2b950ef4d000 ---p 00007000 08:01 114                        /lib64/librt-2.17.so
2b950ef4d000-2b950ef4e000 r--p 00006000 08:01 114                        /lib64/librt-2.17.so
2b950ef4e000-2b950ef4f000 rw-p 00007000 08:01 114                        /lib64/librt-2.17.so
2b950ef4f000-2b950ef50000 rw-p 00000000 00:00 0 
2b950ef50000-2b950f051000 r-xp 00000000 08:01 144                        /lib64/libm-2.17.so
2b950f051000-2b950f250000 ---p 00101000 08:01 144                        /lib64/libm-2.17.so
2b950f250000-2b950f251000 r--p 00100000 08:01 144                        /lib64/libm-2.17.so
2b950f251000-2b950f252000 rw-p 00101000 08:01 144                        /lib64/libm-2.17.so
2b950f252000-2b950f408000 r-xp 00000000 08:01 44                         /lib64/libc-2.17.so
2b950f408000-2b950f608000 ---p 001b6000 08:01 44                         /lib64/libc-2.17.so
2b950f608000-2b950f60c000 r--p 001b6000 08:01 44                         /lib64/libc-2.17.so
2b950f60c000-2b950f60e000 rw-p 001ba000 08:01 44                         /lib64/libc-2.17.so
2b950f60e000-2b950f616000 rw-p 00000000 00:00 0 
2b9510063000-2b9510084000 rw-p 00000000 00:00 0                          [heap]
2b9510084000-2b95165ab000 r--p 00000000 08:01 813623                     /usr/lib/locale/locale-archive
2b95165ab000-2b95165b2000 r--s 00000000 08:01 794980                     /usr/lib64/gconv/gconv-modules.cache
2b95165b2000-2b95165b4000 r-xp 00000000 08:01 788237                     /usr/lib64/gconv/ISO8859-15.so
2b95165b4000-2b95167b3000 ---p 00002000 08:01 788237                     /usr/lib64/gconv/ISO8859-15.so
2b95167b3000-2b95167b4000 r--p 00001000 08:01 788237                     /usr/lib64/gconv/ISO8859-15.so
2b95167b4000-2b95167b5000 rw-p 00002000 08:01 788237                     /usr/lib64/gconv/ISO8859-15.so
2b95167b5000-2b9516df7000 rw-p 00000000 00:00 0 
2b9516df7000-2b9516dfa000 r--p 00000000 00:14 7293824361                 /data/HeLab/miniconda3/envs/scvpy10/lib/python3.10/lib-dynload/readline.cpython-310-x86_64-linux-gnu.so
2b9516dfa000-2b9516dfc000 r-xp 00003000 00:14 7293824361                 /data/HeLab/miniconda3/envs/scvpy10/lib/python3.10/lib-dynload/readline.cpython-310-x86_64-linux-gnu.so
2b9516dfc000-2b9516dfe000 r--p 00005000 00:14 7293824361                 /data/HeLab/miniconda3/envs/scvpy10/lib/python3.10/lib-dynload/readline.cpython-310-x86_64-linux-gnu.so
2b9516dfe000-2b9516dff000 ---p 00007000 00:14 7293824361                 /data/HeLab/miniconda3/envs/scvpy10/lib/python3.10/lib-dynload/readline.cpython-310-x86_64-linux-gnu.so
2b9516dff000-2b9516e00000 r--p 00007000 00:14 7293824361                 /data/HeLab/miniconda3/envs/scvpy10/lib/python3.10/lib-dynload/readline.cpython-310-x86_64-linux-gnu.so
2b9516e00000-2b9516e01000 rw-p 00008000 00:14 7293824361                 /data/HeLab/miniconda3/envs/scvpy10/lib/python3.10/lib-dynload/readline.cpython-310-x86_64-linux-gnu.so
2b9516e01000-2b9516e1a000 r--p 00000000 00:14 7292773993                 /data/HeLab/miniconda3/envs/scvpy10/lib/libreadline.so.8.2
2b9516e1a000-2b9516e46000 r-xp 00019000 00:14 7292773993                 /data/HeLab/miniconda3/envs/scvpy10/lib/libreadline.so.8.2
2b9516e46000-2b9516e50000 r--p 00045000 00:14 7292773993                 /data/HeLab/miniconda3/envs/scvpy10/lib/libreadline.so.8.2
2b9516e50000-2b9516e53000 r--p 0004f000 00:14 7292773993                 /data/HeLab/miniconda3/envs/scvpy10/lib/libreadline.so.8.2
^CTraceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/data/HeLab/miniconda3/envs/scvpy10/lib/python3.10/site-packages/cellrank/kernels/_velocity_kernel.py", line 160, in compute_transition_matrix
    softmax_scale = self._estimate_softmax_scale(backward_mode=backward_mode, similarity=similarity)
  File "/data/HeLab/miniconda3/envs/scvpy10/lib/python3.10/site-packages/cellrank/kernels/_velocity_kernel.py", line 254, in _estimate_softmax_scale
    _, logits = model(n_jobs, backend)
  File "/data/HeLab/miniconda3/envs/scvpy10/lib/python3.10/site-packages/cellrank/kernels/utils/_velocity_model.py", line 64, in __call__
    return parallelize(
  File "/data/HeLab/miniconda3/envs/scvpy10/lib/python3.10/site-packages/cellrank/_utils/_parallelize.py", line 90, in wrapper
    queue = multiprocessing.Manager().Queue()
  File "/data/HeLab/miniconda3/envs/scvpy10/lib/python3.10/multiprocessing/managers.py", line 723, in temp
    token, exp = self._create(typeid, *args, **kwds)
  File "/data/HeLab/miniconda3/envs/scvpy10/lib/python3.10/multiprocessing/managers.py", line 606, in _create
    conn = self._Client(self._address, authkey=self._authkey)
  File "/data/HeLab/miniconda3/envs/scvpy10/lib/python3.10/multiprocessing/connection.py", line 513, in Client
    answer_challenge(c, authkey)
  File "/data/HeLab/miniconda3/envs/scvpy10/lib/python3.10/multiprocessing/connection.py", line 757, in answer_challenge
    message = connection.recv_bytes(256)         # reject large message
  File "/data/HeLab/miniconda3/envs/scvpy10/lib/python3.10/multiprocessing/connection.py", line 221, in recv_bytes
    buf = self._recv_bytes(maxlength)
  File "/data/HeLab/miniconda3/envs/scvpy10/lib/python3.10/multiprocessing/connection.py", line 419, in _recv_bytes
    buf = self._recv(4)
  File "/data/HeLab/miniconda3/envs/scvpy10/lib/python3.10/multiprocessing/connection.py", line 384, in _recv
    chunk = read(handle, remaining)
KeyboardInterrupt

Versions:

cellrank==2.0.2 scanpy==1.9.6 anndata==0.10.3 numpy==1.26.2 numba==0.58.1 scipy==1.11.4 pandas==2.1.4 pygpcca==1.0.4 scikit-learn==1.1.3 statsmodels==0.14.1 scvelo==0.3.1 pygam==0.8.0 matplotlib==3.7.1 seaborn==0.12.2

Besides my python is 3.10 and I am on a Centos 6 server. I'm a little bit concerned about using an old version of system, does it matter? I have seen many example when ppl using Ubuntu they simply sudo install libmalloc-minimal4 but it seems to be a different situation.

KforKuma avatar Dec 22 '23 08:12 KforKuma