apache / apache/arrow

Segfault in `dataset.write_dataset` when attempting to acquire gil after interpreter shutdown

Open
#36,980 6 comments 0 reactions 0 assignees View on GitHub
Component: C++ Component: Python Type: bug
Dominant language
C++
Stars
17.1k
Forks
4.3k
Avg merge
3d 13h
Merged PRs (30d)
88

Description

### Describe the bug, including details regarding any error messages, version, and platform.

# Description of the bug
Terminate called without an active exception (core dumped) when writing datasets just before python finalizes.

I could not find a way to shut down the active threads on python interpreter finalization. Is there a way to tell the thread pool to shut down? Any thoughts on potential workarounds appreciated :).

This may be related to following but thought I would open it since it's a bit different. It's pretty common to write output at the end of a script/program.

* https://github.com/apache/arrow/issues/31486
* https://github.com/apache/arrow/issues/34314

# Repro
This doesn't reproduce every time, it usually segfaults about 1/25 or so times.

`repro.py`: Writing a dataset as parquet

```python
import tempfile
import string

import numpy as np
import pandas as pd
import pyarrow as pa
import pyarrow.dataset as ds

NUM_ROWS = 10_000

def file_visitor(written_file):
print(f"path={written_file.path}")
print(f"size={written_file.size} bytes")
print(f"metadata={written_file.metadata}")

def main() -> int:
df = pd.DataFrame(
{
"float": np.random.rand(NUM_ROWS),
"int": np.random.randint(0, 10000, size=NUM_ROWS),
"string": np.random.choice(list(string.ascii_letters), size=NUM_ROWS),
}
)
data = pa.Table.from_pandas(
df,
)

print(pa.show_info())
with tempfile.TemporaryDirectory() as t:
ds.write_dataset(
data=data,
format="parquet",
base_dir=t,
max_rows_per_file=1000,
max_rows_per_group=1000,
# So we can see all the files being written
file_visitor=file_visitor,
use_threads=True,
)

print(f"Wrote data to {t}")
return 0

if __name__ == "__main__":
# Doesn't matter if you do exit(main()) or just main(), same thing happens
raise SystemExit(main())
```

`test_segfault.py`: It takes about 20-30 tries for me to repro. So this runs the repro a bunch.

```python
import subprocess
import sys

NUM_RUNS = 1_000
commands = [(sys.executable, "repro.py") for _ in range(NUM_RUNS)]

n = 5

for j in range(max(int(len(commands) / n), 1)):
procs = [
subprocess.Popen(i, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
for i in commands[j * n : min((j + 1) * n, len(commands))]
]
print(f"Running {j}-{j+n}")
for p in procs:
stdout, stderr = p.communicate()
print(stdout.decode())
print(stderr.decode())
if p.returncode != 0:
print(p.returncode)
raise ValueError(f"Core dump {stderr.decode()}")
```

# Dockerfile

```docker
FROM python:3.11.4-slim-buster
RUN pip install pyarrow pandas -U
COPY test_segfault.py /opt/segfault/
COPY repro.py /opt/segfault/
```

## Running it:

Attempt to set ulimit=unlimited and mount the pwd so that we can maybe capture a core file. I wasn't able to since my host is windows, but we were able to get one from a linux host in production.

```bash
docker run --rm -it --ulimit core=-1 -v /$(PWD)/segfault/:/opt/segfault bash -c 'cd /opt/segfault && python ./test_segfault.py'
```

# Versions/Platform
I can only repro this in docker on a debian image. Not able to get it to trigger on windows.

```
pyarrow version info
--------------------
Package kind : python-wheel-manylinux2014
Arrow C++ library version : 12.0.0
Arrow C++ compiler : GNU 10.2.1
Arrow C++ compiler flags : -fdiagnostics-color=always
Arrow C++ git revision :
Arrow C++ git description :
Arrow C++ build type : release

Platform:
OS / Arch : Linux x86_64
SIMD Level : avx2
Detected SIMD Level : avx2

Memory:
Default backend : jemalloc
Bytes allocated : 50112 bytes
Max memory : 59008 bytes
Supported Backends : jemalloc, mimalloc, system

Optional modules:
csv : Enabled
cuda : -
dataset : Enabled
feather : Enabled
flight : Enabled
fs : Enabled
gandiva : -
json : Enabled
orc : Enabled
parquet : Enabled

Filesystems:
GcsFileSystem : Enabled
HadoopFileSystem : Enabled
S3FileSystem : Enabled

Compression Codecs:
brotli : Enabled
bz2 : Enabled
gzip : Enabled
lz4_frame : Enabled
lz4 : Enabled
snappy : Enabled
zstd : Enabled
```

# Full Backtrace
I can't share the entire core file since it's from a prod environment. Here's the relevant parts.

```console
#22 58.13 Using executable found in the core file: /opt/.venv/bin/python
#22 58.13 INFO(process_core): Using library search path:
#22 58.30
#22 58.30 Core file information:
#22 58.30 state: D zombie: True niceness: 0
#22 58.30 pid: 17 ppid: 1 sid: 1
#22 58.30 uid: 0 gid: 0 pgrp: 1
#22 58.30
#22 58.31 The process died due receiving signal SIGABRT
#22 58.37 INFO(process_core): Analyzing core file /opt/sm-scripts/core.17 with executable /opt/.venv/bin/python using stack method StackMethod.ALL with native mode NativeReportingMode.ALL
#22 58.73 INFO(parse_maps_file_for_binary): python binary first map found: VirtualMap(start=0x0000563006737000, end=0x0000563006738000, filesize=0x1000, offset=0x33000, device='', flags='r', inode=0, path='/opt/.venv/bin/python')
#22 58.73 INFO(parse_maps_file_for_binary): 'libpython3.11.so.1.0' first map found: VirtualMap(start=0x00007f7ac76a9000, end=0x00007f7ac7797000, filesize=0x1000, offset=0x11e18d000, device='', flags='r', inode=0, path='/usr/local/bin/../lib/libpython3.11.so.1.0')
#22 58.73 INFO(_get_bss): Determined exact addr of .bss section: 0x7f7ac7b926c0 (0x7f7ac76a9000 + 0x4e96c0)
#22 58.73 INFO(parse_maps_file_for_binary): bss map found: VirtualMap(start=0x00007f7ac7b926c0, end=0x00007f7ac7bd4ed8, filesize=0x42818, offset=0x11e2ed6c0, device='', flags='', inode=0, path='None')
#22 58.85 INFO(process_core): Attempting to find symbol 'Py_Version' in libpython3.11.so.1.0
#22 58.85 INFO(process_core): Symbol 'Py_Version' found at address 0x7f7ac79adca8
#22 58.85 INFO(process_core): Attempting to find symbol 'Py_Version' in python
#22 58.86 INFO(process_core): Trying to resolve PyInterpreterState from Elf data
#22 58.86 INFO(process_core): Searching for PyInterpreterState based on PyRuntime address 0x7f7ac7b69ba0
#22 58.86 INFO(process_core): Address of PyInterpreterState found using ELF data at 0x7F7AC7B781D8
#22 58.86 INFO(process_core): Fetching Python threads
#22 58.87 INFO(process_core): Attempting to find symbol '_PyRuntime' in libpython3.11.so.1.0
#22 58.87 INFO(process_core): Symbol '_PyRuntime' found at address 0x7f7ac7b69ba0
#22 58.87 INFO(process_core): Attempting to find symbol '_PyRuntime' in python
#22 58.87 INFO(process_core): Constructing new Python thread with tid 17
#22 58.91 Traceback for thread 17 [Has the GIL] (most recent call last):
#22 58.91 (C) File "???", line 0, in _start (python)
#22 58.91 (C) File "???", line 0, in __libc_start_main (libc.so.6)
#22 58.91 (C) File "???", line 0, in Py_BytesMain (libpython3.11.so.1.0)
#22 58.91 (C) File "???", line 0, in Py_RunMain (libpython3.11.so.1.0)
#22 58.91 (C) File "???", line 0, in Py_Exit (libpython3.11.so.1.0)
#22 58.91 (C) File "???", line 0, in Py_FinalizeEx (libpython3.11.so.1.0)
#22 58.91 (C) File "???", line 0, in PyGC_Collect (libpython3.11.so.1.0)
#22 58.91
#22 58.91 INFO(process_core): Fetching native threads
#22 59.63 INFO(process_core): Constructing new native thread with tid 36
#22 59.65 INFO(process_core): Constructing new native thread with tid 21
#22 59.65 INFO(process_core): Constructing new native thread with tid 31
#22 59.66 INFO(process_core): Constructing new native thread with tid 20
#22 59.66 INFO(process_core): Constructing new native thread with tid 18
#22 59.66 INFO(process_core): Constructing new native thread with tid 19
#22 59.67 INFO(process_core): Constructing new native thread with tid 22
#22 59.67 INFO(process_core): Constructing new native thread with tid 23
#22 59.68 INFO(process_core): Constructing new native thread with tid 26
#22 59.68 INFO(process_core): Constructing new native thread with tid 24
#22 59.69 INFO(process_core): Constructing new native thread with tid 25
#22 59.69 INFO(process_core): Constructing new native thread with tid 27
#22 59.70 INFO(process_core): Constructing new native thread with tid 32
#22 59.70 INFO(process_core): Constructing new native thread with tid 28
#22 59.75 INFO(process_core): Constructing new native thread with tid 38
#22 59.75 INFO(process_core): Constructing new native thread with tid 29
#22 59.76 INFO(process_core): Constructing new native thread with tid 40
#22 59.76 INFO(process_core): Constructing new native thread with tid 53
#22 59.76 INFO(process_core): Constructing new native thread with tid 57
#22 59.76 INFO(process_core): Constructing new native thread with tid 49
#22 59.76 INFO(process_core): Constructing new native thread with tid 39
#22 59.76 INFO(process_core): Constructing new native thread with tid 50
#22 59.77 INFO(process_core): Constructing new native thread with tid 30
#22 59.77 INFO(process_core): Constructing new native thread with tid 47
#22 59.77 INFO(process_core): Constructing new native thread with tid 43
#22 59.77 INFO(process_core): Constructing new native thread with tid 54
#22 59.77 INFO(process_core): Constructing new native thread with tid 56
#22 59.78 INFO(process_core): Constructing new native thread with tid 48
#22 59.78 INFO(process_core): Constructing new native thread with tid 44
#22 59.78 INFO(process_core): Constructing new native thread with tid 51
#22 59.84 INFO(process_core): Constructing new native thread with tid 41
#22 59.84 INFO(process_core): Constructing new native thread with tid 45
#22 59.84 INFO(process_core): Constructing new native thread with tid 42
#22 59.84 INFO(process_core): Constructing new native thread with tid 55
#22 59.90 INFO(process_core): Constructing new native thread with tid 33
#22 59.90 INFO(process_core): Constructing new native thread with tid 58
#22 59.90 INFO(process_core): Constructing new native thread with tid 52
#22 59.90 INFO(process_core): Constructing new native thread with tid 46
#22 59.91 INFO(process_core): Constructing new native thread with tid 37
#22 59.91 Traceback for thread 36 [] (most recent call last):
#22 59.91 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.91 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.91 (C) File "???", line 0, in execute_native_thread_routine (libarrow.so.1100)
#22 59.91 (C) File "???", line 0, in std::thread::_State_impl > >::_M_run() (libarrow.so.1100)
#22 59.91 (C) File "???", line 0, in arrow::internal::FnOnce::operator()() && (libarrow.so.1100)
#22 59.91 (C) File "???", line 0, in arrow::internal::FnOnce::FnImpl, arrow::io::FileInterface::CloseAsync()::{lambda()#1})> >::invoke() (libarrow.so.1100)
#22 59.91 (C) File "???", line 0, in void arrow::Future::MarkFinished(arrow::Status) (libarrow_python.so)
#22 59.91 (C) File "???", line 0, in arrow::ConcreteFutureImpl::DoMarkFinishedOrFailed(arrow::FutureState) (libarrow.so.1100)
#22 59.91 (C) File "???", line 0, in arrow::internal::FnOnce::FnImpl::WrapStatusyOnComplete::Callback, arrow::Future, true, true> > >::invoke(arrow::FutureImpl const&) (libarrow_dataset.so.1100)
#22 59.91 (C) File "???", line 0, in void arrow::Future::MarkFinished(arrow::Status) (libarrow_python.so)
#22 59.91 (C) File "???", line 0, in arrow::ConcreteFutureImpl::DoMarkFinishedOrFailed(arrow::FutureState) (libarrow.so.1100)
#22 59.91 (C) File "???", line 0, in arrow::internal::FnOnce::FnImpl::WrapResultyOnComplete::Callback::ThenOnComplete::PassthruOnFailure<{lambda()#1}> > > >::invoke(arrow::FutureImpl const&) (libarrow_dataset.so.1100)
#22 59.91 (C) File "???", line 0, in void arrow::Future::MarkFinished(arrow::Status) (libarrow_python.so)
#22 59.91 (C) File "???", line 0, in arrow::ConcreteFutureImpl::DoMarkFinishedOrFailed(arrow::FutureState) (libarrow.so.1100)
#22 59.91 (C) File "???", line 0, in arrow::internal::FnOnce::FnImpl::WrapResultyOnComplete::Callback::ThenOnComplete >)::WrapperTask::operator()()::{lambda()#1}, arrow::Future::PassthruOnFailure<{lambda()#1}> > > >::invoke(arrow::FutureImpl const&) (libarrow.so.1100)
#22 59.91 (C) File "???", line 0, in void arrow::Future::MarkFinished(arrow::Status) (libarrow_python.so)
#22 59.91 (C) File "???", line 0, in arrow::ConcreteFutureImpl::DoMarkFinishedOrFailed(arrow::FutureState) (libarrow.so.1100)
#22 59.91 (C) File "???", line 0, in arrow::internal::FnOnce::FnImpl::WrapResultyOnComplete::Callback::ThenOnComplete >, int)::{lambda()#1}::operator()()::{lambda()#1}, arrow::Future::PassthruOnFailure<{lambda()#1}> > > >::invoke(arrow::FutureImpl const&) (libarrow.so.1100)
#22 59.91 (C) File "???", line 0, in void arrow::Future::MarkFinished(arrow::Status) (libarrow_python.so)
#22 59.91 (C) File "???", line 0, in arrow::ConcreteFutureImpl::DoMarkFinishedOrFailed(arrow::FutureState) (libarrow.so.1100)
#22 59.91 (C) File "???", line 0, in arrow::internal::FnOnce::FnImpl::WrapStatusyOnComplete::Callback >)::{lambda()#1}::operator()()::{lambda(arrow::Status const&)#1}> >::invoke(arrow::FutureImpl const&) (libarrow.so.1100)
#22 59.91 (C) File "???", line 0, in void arrow::Future::MarkFinished(arrow::Status) (libarrow_python.so)
#22 59.91 (C) File "???", line 0, in arrow::ConcreteFutureImpl::DoMarkFinishedOrFailed(arrow::FutureState) (libarrow.so.1100)
#22 59.91 (C) File "???", line 0, in arrow::internal::FnOnce::FnImpl::WrapResultyOnComplete::Callback::ThenOnComplete, arrow::internal::FnOnce, arrow::StopToken)::{lambda()#1}, arrow::Future::PassthruOnFailure<{lambda()#1}> > > >::invoke(arrow::FutureImpl const&) (libarrow.so.1100)
#22 59.91 (C) File "???", line 0, in void arrow::Future::MarkFinished(arrow::Status) (libarrow_python.so)
#22 59.91 (C) File "???", line 0, in arrow::ConcreteFutureImpl::DoMarkFinishedOrFailed(arrow::FutureState) (libarrow.so.1100)
#22 59.91 (C) File "???", line 0, in arrow::internal::FnOnce::FnImpl::WrapStatusyOnComplete::Callback >::invoke(arrow::FutureImpl const&) (libarrow.so.1100)
#22 59.91 (C) File "???", line 0, in void arrow::Future::MarkFinished(arrow::Status) (libarrow_python.so)
#22 59.91 (C) File "???", line 0, in arrow::ConcreteFutureImpl::DoMarkFinishedOrFailed(arrow::FutureState) (libarrow.so.1100)
#22 59.91 (C) File "???", line 0, in arrow::internal::FnOnce::FnImpl::WrapResultyOnComplete::Callback::ThenOnComplete::PassthruOnFailure<{lambda()#1}> > > >::~FnImpl() (libarrow.so.1100)
#22 59.91 (C) File "???", line 0, in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() (libarrow.so.1100)
#22 59.91 (C) File "???", line 0, in std::_Sp_counted_ptr::_M_dispose() (libarrow.so.1100)
#22 59.91 (C) File "???", line 0, in arrow::compute::(anonymous namespace)::ExecPlanImpl::~ExecPlanImpl() (libarrow.so.1100)
#22 59.91 (C) File "???", line 0, in arrow::compute::(anonymous namespace)::SourceNode::~SourceNode() (libarrow.so.1100)
#22 59.91 (C) File "???", line 0, in std::_Function_handler > (), arrow::MappingGenerator > >::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) (libarrow_dataset.so.1100)
#22 59.91 (C) File "???", line 0, in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() (lib.cpython-311-x86_64-linux-gnu.so)
#22 59.91 (C) File "???", line 0, in std::_Sp_counted_ptr_inplace >::State, std::allocator >::State>, (__gnu_cxx::_Lock_policy)2>::_M_dispose() (libarrow_dataset.so.1100)
#22 59.91 (C) File "???", line 0, in std::_Function_handler (), arrow::ReadaheadGenerator >::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) (libarrow_dataset.so.1100)
#22 59.91 (C) File "???", line 0, in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() (lib.cpython-311-x86_64-linux-gnu.so)
#22 59.92 (C) File "???", line 0, in std::_Sp_counted_ptr_inplace::State, std::allocator::State>, (__gnu_cxx::_Lock_policy)2>::_M_dispose() (libarrow_dataset.so.1100)
#22 59.92 (C) File "???", line 0, in std::_Function_handler (), arrow::MergedGenerator >::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) (libarrow_dataset.so.1100)
#22 59.92 (C) File "???", line 0, in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() (lib.cpython-311-x86_64-linux-gnu.so)
#22 59.92 (C) File "???", line 0, in std::_Sp_counted_ptr_inplace::State, std::allocator::State>, (__gnu_cxx::_Lock_policy)2>::_M_dispose() (libarrow_dataset.so.1100)
#22 59.92 (C) File "???", line 0, in std::_Function_handler (), arrow::MappingGenerator >, arrow::dataset::EnumeratedRecordBatch> >::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) (libarrow_dataset.so.1100)
#22 59.92 (C) File "???", line 0, in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() (lib.cpython-311-x86_64-linux-gnu.so)
#22 59.92 (C) File "???", line 0, in std::_Sp_counted_ptr_inplace >, arrow::dataset::EnumeratedRecordBatch>::State, std::allocator >, arrow::dataset::EnumeratedRecordBatch>::State>, (__gnu_cxx::_Lock_policy)2>::_M_dispose() (libarrow_dataset.so.1100)
#22 59.92 (C) File "???", line 0, in std::_Function_handler > > (), arrow::FutureFirstGenerator > > >::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) (libarrow_dataset.so.1100)
#22 59.92 (C) File "???", line 0, in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() (lib.cpython-311-x86_64-linux-gnu.so)
#22 59.92 (C) File "???", line 0, in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() (lib.cpython-311-x86_64-linux-gnu.so)
#22 59.92 (C) File "???", line 0, in arrow::ConcreteFutureImpl::~ConcreteFutureImpl() (libarrow.so.1100)
#22 59.92 (C) File "???", line 0, in arrow::Future > > ()> >::SetResult(arrow::Result > > ()> >)::{lambda(void*)#1}::_FUN(void*) (libarrow_dataset.so.1100)
#22 59.92 (C) File "???", line 0, in std::_Function_handler > > (), arrow::EnumeratingGenerator > >::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) (libarrow_dataset.so.1100)
#22 59.92 (C) File "???", line 0, in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() (lib.cpython-311-x86_64-linux-gnu.so)
#22 59.92 (C) File "???", line 0, in std::_Sp_counted_ptr_inplace >::State, std::allocator >::State>, (__gnu_cxx::_Lock_policy)2>::_M_dispose() (libarrow_dataset.so.1100)
#22 59.92 (C) File "???", line 0, in std::_Function_handler > (), arrow::DefaultIfEmptyGenerator > >::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) (libarrow_dataset.so.1100)
#22 59.92 (C) File "???", line 0, in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() (lib.cpython-311-x86_64-linux-gnu.so)
#22 59.92 (C) File "???", line 0, in std::_Sp_counted_ptr_inplace >::State, std::allocator >::State>, (__gnu_cxx::_Lock_policy)2>::_M_dispose() (libarrow_dataset.so.1100)
#22 59.92 (C) File "???", line 0, in std::_Function_handler > (), arrow::dataset::InMemoryFragment::ScanBatchesAsync(std::shared_ptr const&)::Generator>::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) (libarrow_dataset.so.1100)
#22 59.92 (C) File "???", line 0, in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() (lib.cpython-311-x86_64-linux-gnu.so)
#22 59.92 (C) File "???", line 0, in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() (lib.cpython-311-x86_64-linux-gnu.so)
#22 59.92 (C) File "???", line 0, in arrow::dataset::InMemoryFragment::~InMemoryFragment() (libarrow_dataset.so.1100)
#22 59.92 (C) File "???", line 0, in arrow::SimpleRecordBatch::~SimpleRecordBatch() (libarrow.so.1100)
#22 59.92 (C) File "???", line 0, in std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_M_dispose() (libarrow_python.so)
#22 59.92 (C) File "???", line 0, in arrow::py::NumPyBuffer::~NumPyBuffer() (libarrow_python.so)
#22 59.92 (C) File "???", line 0, in PyGILState_Ensure (libpython3.11.so.1.0)
#22 59.92 (C) File "???", line 0, in pthread_exit (libc.so.6)
#22 59.92 (C) File "???", line 0, in __pthread_unwind (libpthread.so.0)
#22 59.92 (C) File "???", line 0, in _Unwind_ForcedUnwind (libgcc_s.so.1)
#22 59.92 (C) File "???", line 0, in __gxx_personality_v0 (libstdc++.so.6)
#22 59.92 (C) File "???", line 0, in abort (libc.so.6)
#22 59.92 (C) File "???", line 0, in raise (libc.so.6)
#22 59.92
#22 59.92 Traceback for thread 21 [] (most recent call last):
#22 59.92 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.92 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.92 (C) File "???", line 0, in blas_thread_server (libopenblas64_p-r0-15028c96.3.21.so)
#22 59.92 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.92
#22 59.92 Traceback for thread 31 [] (most recent call last):
#22 59.92 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.92 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.92 (C) File "???", line 0, in blas_thread_server (libopenblas64_p-r0-15028c96.3.21.so)
#22 59.92 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.92
#22 59.92 Traceback for thread 20 [] (most recent call last):
#22 59.92 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.92 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.92 (C) File "???", line 0, in blas_thread_server (libopenblas64_p-r0-15028c96.3.21.so)
#22 59.92 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.92
#22 59.92 Traceback for thread 18 [] (most recent call last):
#22 59.92 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.92 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.92 (C) File "???", line 0, in blas_thread_server (libopenblas64_p-r0-15028c96.3.21.so)
#22 59.92 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.92
#22 59.92 Traceback for thread 19 [] (most recent call last):
#22 59.92 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.92 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.92 (C) File "???", line 0, in blas_thread_server (libopenblas64_p-r0-15028c96.3.21.so)
#22 59.93 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.93
#22 59.93 Traceback for thread 22 [] (most recent call last):
#22 59.93 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.93 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.93 (C) File "???", line 0, in blas_thread_server (libopenblas64_p-r0-15028c96.3.21.so)
#22 59.93 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.93
#22 59.93 Traceback for thread 23 [] (most recent call last):
#22 59.93 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.93 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.93 (C) File "???", line 0, in blas_thread_server (libopenblas64_p-r0-15028c96.3.21.so)
#22 59.93 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.93
#22 59.93 Traceback for thread 26 [] (most recent call last):
#22 59.93 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.93 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.93 (C) File "???", line 0, in blas_thread_server (libopenblas64_p-r0-15028c96.3.21.so)
#22 59.93 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.93
#22 59.93 Traceback for thread 24 [] (most recent call last):
#22 59.93 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.93 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.93 (C) File "???", line 0, in blas_thread_server (libopenblas64_p-r0-15028c96.3.21.so)
#22 59.93 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.93
#22 59.93 Traceback for thread 25 [] (most recent call last):
#22 59.93 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.93 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.93 (C) File "???", line 0, in blas_thread_server (libopenblas64_p-r0-15028c96.3.21.so)
#22 59.93 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.93
#22 59.93 Traceback for thread 27 [] (most recent call last):
#22 59.93 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.93 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.93 (C) File "???", line 0, in blas_thread_server (libopenblas64_p-r0-15028c96.3.21.so)
#22 59.93 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.93
#22 59.93 Traceback for thread 32 [] (most recent call last):
#22 59.93 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.93 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.93 (C) File "???", line 0, in blas_thread_server (libopenblas64_p-r0-15028c96.3.21.so)
#22 59.93 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.93
#22 59.93 Traceback for thread 28 [] (most recent call last):
#22 59.93 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.93 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.93 (C) File "???", line 0, in blas_thread_server (libopenblas64_p-r0-15028c96.3.21.so)
#22 59.93 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.93
#22 59.93 Traceback for thread 38 [] (most recent call last):
#22 59.93 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.93 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.93 (C) File "???", line 0, in execute_native_thread_routine (libarrow.so.1100)
#22 59.93 (C) File "???", line 0, in std::thread::_State_impl > >::_M_run() (libarrow.so.1100)
#22 59.93 (C) File "???", line 0, in std::condition_variable::wait(std::unique_lock&) (libstdc++.so.6)
#22 59.93 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.93
#22 59.93 Traceback for thread 29 [] (most recent call last):
#22 59.93 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.93 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.93 (C) File "???", line 0, in blas_thread_server (libopenblas64_p-r0-15028c96.3.21.so)
#22 59.93 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.93
#22 59.93 Traceback for thread 40 [] (most recent call last):
#22 59.93 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.93 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.93 (C) File "???", line 0, in execute_native_thread_routine (libarrow.so.1100)
#22 59.93 (C) File "???", line 0, in std::thread::_State_impl > >::_M_run() (libarrow.so.1100)
#22 59.94 (C) File "???", line 0, in std::condition_variable::wait(std::unique_lock&) (libstdc++.so.6)
#22 59.94 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.94
#22 59.94 Traceback for thread 53 [] (most recent call last):
#22 59.94 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.94 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.94 (C) File "???", line 0, in execute_native_thread_routine (libarrow.so.1100)
#22 59.94 (C) File "???", line 0, in std::thread::_State_impl > >::_M_run() (libarrow.so.1100)
#22 59.94 (C) File "???", line 0, in std::condition_variable::wait(std::unique_lock&) (libstdc++.so.6)
#22 59.94 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.94
#22 59.94 Traceback for thread 57 [] (most recent call last):
#22 59.94 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.94 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.94 (C) File "???", line 0, in execute_native_thread_routine (libarrow.so.1100)
#22 59.94 (C) File "???", line 0, in std::thread::_State_impl > >::_M_run() (libarrow.so.1100)
#22 59.94 (C) File "???", line 0, in std::condition_variable::wait(std::unique_lock&) (libstdc++.so.6)
#22 59.94 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.94
#22 59.94 Traceback for thread 49 [] (most recent call last):
#22 59.94 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.94 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.94 (C) File "???", line 0, in execute_native_thread_routine (libarrow.so.1100)
#22 59.94 (C) File "???", line 0, in std::thread::_State_impl > >::_M_run() (libarrow.so.1100)
#22 59.94 (C) File "???", line 0, in std::condition_variable::wait(std::unique_lock&) (libstdc++.so.6)
#22 59.94 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.94
#22 59.94 Traceback for thread 39 [] (most recent call last):
#22 59.94 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.94 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.94 (C) File "???", line 0, in execute_native_thread_routine (libarrow.so.1100)
#22 59.94 (C) File "???", line 0, in std::thread::_State_impl > >::_M_run() (libarrow.so.1100)
#22 59.94 (C) File "???", line 0, in std::condition_variable::wait(std::unique_lock&) (libstdc++.so.6)
#22 59.94 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.94
#22 59.94 Traceback for thread 50 [] (most recent call last):
#22 59.94 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.94 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.94 (C) File "???", line 0, in execute_native_thread_routine (libarrow.so.1100)
#22 59.94 (C) File "???", line 0, in std::thread::_State_impl > >::_M_run() (libarrow.so.1100)
#22 59.94 (C) File "???", line 0, in std::condition_variable::wait(std::unique_lock&) (libstdc++.so.6)
#22 59.94 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.94
#22 59.94 Traceback for thread 30 [] (most recent call last):
#22 59.94 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.94 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.94 (C) File "???", line 0, in blas_thread_server (libopenblas64_p-r0-15028c96.3.21.so)
#22 59.94 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.94
#22 59.94 Traceback for thread 47 [] (most recent call last):
#22 59.94 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.94 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.94 (C) File "???", line 0, in execute_native_thread_routine (libarrow.so.1100)
#22 59.94 (C) File "???", line 0, in std::thread::_State_impl > >::_M_run() (libarrow.so.1100)
#22 59.94 (C) File "???", line 0, in std::condition_variable::wait(std::unique_lock&) (libstdc++.so.6)
#22 59.94 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.94
#22 59.94 Traceback for thread 43 [] (most recent call last):
#22 59.94 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.94 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.94 (C) File "???", line 0, in execute_native_thread_routine (libarrow.so.1100)
#22 59.95 (C) File "???", line 0, in std::thread::_State_impl > >::_M_run() (libarrow.so.1100)
#22 59.95 (C) File "???", line 0, in std::condition_variable::wait(std::unique_lock&) (libstdc++.so.6)
#22 59.95 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.95
#22 59.95 Traceback for thread 54 [] (most recent call last):
#22 59.95 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.95 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.95 (C) File "???", line 0, in execute_native_thread_routine (libarrow.so.1100)
#22 59.95 (C) File "???", line 0, in std::thread::_State_impl > >::_M_run() (libarrow.so.1100)
#22 59.95 (C) File "???", line 0, in std::condition_variable::wait(std::unique_lock&) (libstdc++.so.6)
#22 59.95 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.95
#22 59.95 Traceback for thread 56 [] (most recent call last):
#22 59.95 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.95 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.95 (C) File "???", line 0, in execute_native_thread_routine (libarrow.so.1100)
#22 59.95 (C) File "???", line 0, in std::thread::_State_impl > >::_M_run() (libarrow.so.1100)
#22 59.95 (C) File "???", line 0, in std::condition_variable::wait(std::unique_lock&) (libstdc++.so.6)
#22 59.95 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.95
#22 59.95 Traceback for thread 48 [] (most recent call last):
#22 59.95 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.95 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.95 (C) File "???", line 0, in execute_native_thread_routine (libarrow.so.1100)
#22 59.95 (C) File "???", line 0, in std::thread::_State_impl > >::_M_run() (libarrow.so.1100)
#22 59.95 (C) File "???", line 0, in std::condition_variable::wait(std::unique_lock&) (libstdc++.so.6)
#22 59.95 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.95
#22 59.95 Traceback for thread 44 [] (most recent call last):
#22 59.95 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.95 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.95 (C) File "???", line 0, in execute_native_thread_routine (libarrow.so.1100)
#22 59.95 (C) File "???", line 0, in std::thread::_State_impl > >::_M_run() (libarrow.so.1100)
#22 59.95 (C) File "???", line 0, in std::condition_variable::wait(std::unique_lock&) (libstdc++.so.6)
#22 59.95 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.95
#22 59.95 Traceback for thread 51 [] (most recent call last):
#22 59.95 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.95 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.95 (C) File "???", line 0, in execute_native_thread_routine (libarrow.so.1100)
#22 59.95 (C) File "???", line 0, in std::thread::_State_impl > >::_M_run() (libarrow.so.1100)
#22 59.95 (C) File "???", line 0, in std::condition_variable::wait(std::unique_lock&) (libstdc++.so.6)
#22 59.95 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.95
#22 59.95 Traceback for thread 41 [] (most recent call last):
#22 59.95 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.95 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.95 (C) File "src/background_thread.c", line 444, in background_thread_entry (libarrow.so.1100)
#22 59.95 (C) File "src/background_thread.c", line 419, in background_work (inlined) (libarrow.so.1100)
#22 59.95 (C) File "src/background_thread.c", line 229, in background_work_sleep_once (inlined) (libarrow.so.1100)
#22 59.95 (C) File "src/background_thread.c", line 159, in background_thread_sleep (inlined) (libarrow.so.1100)
#22 59.95 (C) File "???", line 0, in pthread_cond_timedwait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.95
#22 59.95 Traceback for thread 45 [] (most recent call last):
#22 59.95 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.95 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.95 (C) File "???", line 0, in execute_native_thread_routine (libarrow.so.1100)
#22 59.95 (C) File "???", line 0, in std::thread::_State_impl > >::_M_run() (libarrow.so.1100)
#22 59.95 (C) File "???", line 0, in std::condition_variable::wait(std::unique_lock&) (libstdc++.so.6)
#22 59.95 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.95
#22 59.95 Traceback for thread 42 [] (most recent call last):
#22 59.96 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.96 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.96 (C) File "src/background_thread.c", line 444, in background_thread_entry (libarrow.so.1100)
#22 59.96 (C) File "src/background_thread.c", line 419, in background_work (inlined) (libarrow.so.1100)
#22 59.96 (C) File "src/background_thread.c", line 229, in background_work_sleep_once (inlined) (libarrow.so.1100)
#22 59.96 (C) File "src/background_thread.c", line 159, in background_thread_sleep (inlined) (libarrow.so.1100)
#22 59.96 (C) File "???", line 0, in pthread_cond_timedwait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.96
#22 59.96 Traceback for thread 55 [] (most recent call last):
#22 59.96 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.96 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.96 (C) File "???", line 0, in execute_native_thread_routine (libarrow.so.1100)
#22 59.96 (C) File "???", line 0, in std::thread::_State_impl > >::_M_run() (libarrow.so.1100)
#22 59.96 (C) File "???", line 0, in std::condition_variable::wait(std::unique_lock&) (libstdc++.so.6)
#22 59.96 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.96
#22 59.96 Traceback for thread 33 [] (most recent call last):
#22 59.96 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.96 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.96 (C) File "src/background_thread.c", line 444, in background_thread_entry (libarrow.so.1100)
#22 59.96 (C) File "src/background_thread.c", line 412, in background_work (inlined) (libarrow.so.1100)
#22 59.96 (C) File "src/background_thread.c", line 374, in background_thread0_work (inlined) (libarrow.so.1100)
#22 59.96 (C) File "src/background_thread.c", line 229, in background_work_sleep_once (inlined) (libarrow.so.1100)
#22 59.96 (C) File "src/background_thread.c", line 159, in background_thread_sleep (inlined) (libarrow.so.1100)
#22 59.96 (C) File "???", line 0, in pthread_cond_timedwait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.96
#22 59.96 Traceback for thread 58 [] (most recent call last):
#22 59.96 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.96 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.96 (C) File "???", line 0, in execute_native_thread_routine (libarrow.so.1100)
#22 59.96 (C) File "???", line 0, in std::thread::_State_impl > >::_M_run() (libarrow.so.1100)
#22 59.96 (C) File "???", line 0, in std::condition_variable::wait(std::unique_lock&) (libstdc++.so.6)
#22 59.96 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.96
#22 59.96 Traceback for thread 52 [] (most recent call last):
#22 59.96 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.96 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.96 (C) File "???", line 0, in execute_native_thread_routine (libarrow.so.1100)
#22 59.96 (C) File "???", line 0, in std::thread::_State_impl > >::_M_run() (libarrow.so.1100)
#22 59.96 (C) File "???", line 0, in std::condition_variable::wait(std::unique_lock&) (libstdc++.so.6)
#22 59.96 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.96
#22 59.96 Traceback for thread 46 [] (most recent call last):
#22 59.96 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.96 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.96 (C) File "???", line 0, in execute_native_thread_routine (libarrow.so.1100)
#22 59.96 (C) File "???", line 0, in std::thread::_State_impl > >::_M_run() (libarrow.so.1100)
#22 59.96 (C) File "???", line 0, in std::condition_variable::wait(std::unique_lock&) (libstdc++.so.6)
#22 59.96 (C) File "???", line 0, in pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.96
#22 59.96 Traceback for thread 37 [] (most recent call last):
#22 59.96 (C) File "???", line 0, in __clone (libc.so.6)
#22 59.96 (C) File "???", line 0, in start_thread (libpthread.so.0)
#22 59.96 (C) File "src/background_thread.c", line 444, in background_thread_entry (libarrow.so.1100)
#22 59.96 (C) File "src/background_thread.c", line 419, in background_work (inlined) (libarrow.so.1100)
#22 59.96 (C) File "src/background_thread.c", line 229, in background_work_sleep_once (inlined) (libarrow.so.1100)
#22 59.96 (C) File "src/background_thread.c", line 159, in background_thread_sleep (inlined) (libarrow.so.1100)
#22 59.96 (C) File "???", line 0, in pthread_cond_timedwait@@GLIBC_2.3.2 (libpthread.so.0)
#22 59.96
#22 DONE 60.1s

```

Another one:

```console
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1 0x00007f7ac74f5537 in __GI_abort () at abort.c:79
#2 0x00007f7a97cb07ec in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#3 0x00007f7a97cbb966 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#4 0x00007f7a97cbb9d1 in std::terminate() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#5 0x00007f7a97cbb3cc in __gxx_personality_v0 () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#6 0x00007f7ac42478a4 in ?? () from /lib/x86_64-linux-gnu/libgcc_s.so.1
#7 0x00007f7ac4247f4e in _Unwind_ForcedUnwind () from /lib/x86_64-linux-gnu/libgcc_s.so.1
#8 0x00007f7ac74c2c30 in __GI___pthread_unwind (buf=) at unwind.c:121
#9 0x00007f7ac74ba18c in __do_cancel () at pthreadP.h:310
#10 __pthread_exit (value=) at pthread_exit.c:28
#11 0x00007f7ac75537f4 in __pthread_exit (retval=) at forward.c:141
#12 0x00007f7ac7813ab8 in ?? () from /usr/local/bin/../lib/libpython3.11.so.1.0
#13 0x00007f7ac7b69d00 in _PyRuntime () from /usr/local/bin/../lib/libpython3.11.so.1.0
#14 0x0000000000001388 in ?? ()
#15 0x0000000000000000 in ?? ()
```

# Workaround
I've attempted to lower the `ARROW_IO_THREADS` and `OMP_NUM_THREADS` but it doesn't have an effect. Setting `use_threads=False` takes care of the problem but is quite non-performant.

### Component(s)

C++, Python

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.