Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Segmentation fault (second) #4

Closed
crackcomm opened this issue May 22, 2022 · 4 comments
Closed

Segmentation fault (second) #4

crackcomm opened this issue May 22, 2022 · 4 comments

Comments

@crackcomm
Copy link

This is a continuation of #3.

I tried once again on origin repository on two machines (Linux Mint 20.2, X5675 CPU, 40GB RAM and CentOS Stream 9, Dual X5670, 64GB RAM). On the first machine (mint) as previously script works with data generated by make_blobs and fails with the data posted in #3. To my surprise on the second machine the script fails immediately both on data generated by make_blobs and above matrix.

Mint (I tried both clang and gcc on this system):

build-tree-time = 2.90871e-05
core-dist-time = 7.20024e-05
---
 beta = 2
 rho = -0.1 -- 2.10524
---
 beta = 4
 rho = 2.10524 -- 3.64498
 edges = 8
 mst-edges = 5
--Type <RET> for more, q to quit, c to continue without paging--

Thread 1 "python3" received signal SIGSEGV, Segmentation fault.
0x00007fff48b008f4 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) const::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) const::{lambda(unsigned long)#1}, unsigned long, bool) () from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
(gdb) bt
#0  0x00007fff48b008f4 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) const::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) const::{lambda(unsigned long)#1}, unsigned long, bool) () from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
#1  0x00007fff48b00ab5 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) const::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) const::{lambda(unsigned long)#1}, unsigned long, bool) () from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
#2  0x00007fff48b00a55 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) const::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) const::{lambda(unsigned long)#1}, unsigned long, bool) () from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
#3  0x00007fff48b00ab5 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) const::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) const::{lambda(unsigned long)#1}, unsigned long, bool) () from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
#4  0x00007fff48b00d35 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}, unsigned long, bool) ()
   from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
#5  0x00007fff48b00e0a in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}, unsigned long, bool) ()
   from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
#6  0x00007fff48b00e0a in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}, unsigned long, bool) ()
   from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
#7  0x00007fff48b00e0a in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}, unsigned long, bool) ()
   from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
#8  0x00007fff48b00e0a in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}, unsigned long, bool) ()
   from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
#9  0x00007fff48ba9a0c in parlay::sequence<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>, parlay::allocator<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >, std::is_same<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>, char>::value> pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long) ()
   from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
#10 0x00007fff48d63a36 in parlay::sequence<std::tuple<pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT*, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT*, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT::floatT>, parlay::allocator<std::tuple<pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT*, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT*, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT::floatT> >, std::is_same<std::tuple<pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT*, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT*, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT::floatT>, char>::value> pargeo::hdbscanInternal::filterWspdParallel<pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >, pargeo::edgeUnionFind<long> >(double, double, double&, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >*, pargeo::edgeUnionFind<long>*, parlay::sequence<double, parlay::allocator<double>, false>&, parlay::sequence<double, parlay::allocator<double>, false>&, parlay::sequence<double, parlay::allocator<double>, false>&, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT*) () from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
#11 0x00007fff48d641d5 in parlay::sequence<pargeo::_weightedEdge<false, unsigned long, double>, parlay::allocator<pargeo::_weightedEdge<false, unsigned long, double> >, false> pargeo::hdbscan<2>(parlay::sequence<pargeo::_point<2, double, double, pargeo::_empty>, parlay::allocator<pargeo::_point<2, double, double, pargeo::_empty> >, std::is_same<pargeo::_point<2, double, double, pargeo::_empty>, char>::value>&, unsigned long) () from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
#12 0x00007fff48a21109 in py_hdbscan(pybind11::array_t<double, 17>, unsigned long) () from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
#13 0x00007fff48a25783 in pybind11::cpp_function::initialize<pybind11::array_t<double, 16> (*&)(pybind11::array_t<double, 17>, unsigned long), pybind11::array_t<double, 16>, pybind11::array_t<double, 17>, unsigned long, pybind11::name, pybind11::scope, pybind11::sibling, char [21], pybind11::arg, pybind11::arg>(pybind11::array_t<double, 16> (*&)(pybind11::array_t<double, 17>, unsigned long), pybind11::array_t<double, 16> (*)(pybind11::array_t<double, 17>, unsigned long), pybind11::name const&, pybind11::scope const&, pybind11::sibling const&, char const (&) [21], pybind11::arg const&, pybind11::arg const&)::{lambda(pybind11::detail::function_call&)#3}::_FUN(pybind11::detail::function_call&) () from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
#14 0x00007fff48a26146 in pybind11::cpp_function::dispatcher(_object*, _object*, _object*) () from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
#15 0x00000000005f3989 in PyCFunction_Call ()
#16 0x00000000005f3e1e in _PyObject_MakeTpCall ()
#17 0x0000000000570266 in _PyEval_EvalFrameDefault ()
#18 0x000000000056939a in _PyEval_EvalCodeWithName ()
#19 0x000000000068d047 in PyEval_EvalCode ()
#20 0x000000000067e351 in ?? ()
#21 0x000000000067e3cf in ?? ()
#22 0x000000000067e471 in ?? ()
#23 0x000000000067e817 in PyRun_SimpleFileExFlags ()
#24 0x00000000006b6fe2 in Py_RunMain ()
#25 0x00000000006b736d in Py_BytesMain ()
#26 0x00007ffff7dd6083 in __libc_start_main (main=0x4eead0 <main>, argc=2, argv=0x7fffffffd988, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffd978)
    at ../csu/libc-start.c:308
#27 0x00000000005fa5ce in _start ()

CentOS:

build-tree-time = 4.88758e-05
core-dist-time = 9.10759e-05
---
 beta = 2
 rho = -0.1 -- 0.552464
 edges = 1
 mst-edges = 1

Thread 1 "python3" received signal SIGSEGV, Segmentation fault.
0x00007fff6d9ebc7c in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pa
--Type <RET> for more, q to quit, c to continue without paging--
rgeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) con
st::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(parge
o::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) const:
:{lambda(unsigned long)#1}, unsigned long, bool) () from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
(gdb) bt
#0  0x00007fff6d9ebc7c in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>
>(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long)
 const::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(p
argeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) co
nst::{lambda(unsigned long)#1}, unsigned long, bool) () from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#1  0x00007fff6d9ebe25 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>
>(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long)
 const::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(p
argeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) co
nst::{lambda(unsigned long)#1}, unsigned long, bool) () from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#2  0x00007fff6d9ebdc5 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>
>(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long)
 const::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(p
argeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) co
nst::{lambda(unsigned long)#1}, unsigned long, bool) () from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#3  0x00007fff6d9ebdc5 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>
>(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long)
 const::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(p
argeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) co
nst::{lambda(unsigned long)#1}, unsigned long, bool) () from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#4  0x00007fff6d9ebe25 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>
>(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long)
 const::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(p
argeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) co
nst::{lambda(unsigned long)#1}, unsigned long, bool) () from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#5  0x00007fff6d9ec396 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>
>(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}>(unsigned long, unsigned l
ong, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, p
argeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}, unsigned long, bool) ()
   from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
--Type <RET> for more, q to quit, c to continue without paging--
#6  0x00007fff6d9ec467 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>
>(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}>(unsigned long, unsigned l
ong, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, p
argeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}, unsigned long, bool) ()
   from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#7  0x00007fff6d9ec467 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>
>(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}>(unsigned long, unsigned l
ong, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, p
argeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}, unsigned long, bool) ()
   from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#8  0x00007fff6d9ec467 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>
>(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}>(unsigned long, unsigned l
ong, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, p
argeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}, unsigned long, bool) ()
   from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#9  0x00007fff6d9ec467 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>
>(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}>(unsigned long, unsigned l
ong, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, p
argeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}, unsigned long, bool) ()
   from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#10 0x00007fff6d9ec467 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>
>(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}>(unsigned long, unsigned l
ong, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, p
argeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}, unsigned long, bool) ()
   from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#11 0x00007fff6d9ec467 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>
>(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}>(unsigned long, unsigned l
ong, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, p
argeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}, unsigned long, bool) ()
--Type <RET> for more, q to quit, c to continue without paging--
#12 0x00007fff6da8d068 in parlay::sequence<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>, parlay::allocator<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >, std::is_same<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>, char>::value> pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long) () from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#13 0x00007fff6dc2d04e in parlay::sequence<std::tuple<pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT*, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT*, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT::floatT>, parlay::allocator<std::tuple<pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT*, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT*, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT::floatT> >, std::is_same<std::tuple<pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT*, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT*, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT::floatT>, char>::value> pargeo::hdbscanInternal::filterWspdParallel<pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >, pargeo::edgeUnionFind<long> >(double, double, double&, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >*, pargeo::edgeUnionFind<long>*, parlay::sequence<double, parlay::allocator<double>, false>&, parlay::sequence<double, parlay::allocator<double>, false>&, parlay::sequence<double, parlay::allocator<double>, false>&, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT*) () from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#14 0x00007fff6dc2d7b6 in parlay::sequence<pargeo::_weightedEdge<false, unsigned long, double>, parlay::allocator<pargeo::_weightedEdge<false, unsigned long, double> >, false> pargeo::hdbscan<2>(parlay::sequence<pargeo::_point<2, double, double, pargeo::_empty>, parlay::allocator<pargeo::_point<2, double, double, pargeo::_empty> >, std::is_same<pargeo::_point<2, double, double, pargeo::_empty>, char>::value>&, unsigned long) () from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#15 0x00007fff6d911f89 in py_hdbscan(pybind11::array_t<double, 17>, unsigned long) () from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#16 0x00007fff6d91645d in pybind11::cpp_function::initialize<pybind11::array_t<double, 16> (*&)(pybind11::array_t<double, 17>, unsigned long), pybind11::array_t<double, 16>, pybind11::array_t<double, 17>, unsigned long, pybind11::name, pybind11::scope, pybind11::sibling, char [21], pybind11::arg, pybind11::arg>(pybind11::array_t<double, 16> (*&)(pybind11::array_t<double, 17>, unsigned long), pybind11::array_t<double, 16> (*)(pybind11::array_t<double, 17>, unsigned long), pybind11::name const&, pybind11::scope const&, pybind11::sibling const&, char const (&) [21], pybind11::arg const&, pybind11::arg const&)::{lambda(pybind11::detail::function_call&)#3}::_FUN(pybind11::detail::function_call&) () from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#17 0x00007fff6d916da6 in pybind11::cpp_function::dispatcher(_object*, _object*, _object*) () from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#18 0x00007ffff7d7b572 in cfunction_call (func=0x7fff6ddc1220, args=<optimized out>, kwargs=<optimized out>) at /usr/src/debug/python3.9-3.9.10-2.el9.x86_64/Objects/methodobject.c:543
#19 0x00007ffff7d6d6b4 in _PyObject_MakeTpCall (tstate=0x55555555cf90, callable=0x7fff6ddc1220, args=0x5555555b8180, nargs=2, keywords=0x0) at /usr/src/debug/python3.9-3.9.10-2.el9.x86_64/Objects/call.c:191
#20 0x00007ffff7d6a12e in _PyObject_VectorcallTstate (kwnames=0x0, nargsf=<optimized out>, args=0x5555555b8180, callable=<optimized out>, tstate=0x55555555cf90)
    at /usr/src/debug/python3.9-3.9.10-2.el9.x86_64/Include/cpython/abstract.h:116
#21 _PyObject_VectorcallTstate (kwnames=0x0, nargsf=<optimized out>, args=0x5555555b8180, callable=<optimized out>, tstate=0x55555555cf90)
    at /usr/src/debug/python3.9-3.9.10-2.el9.x86_64/Include/cpython/abstract.h:103
#22 PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x5555555b8180, callable=<optimized out>) at /usr/src/debug/python3.9-3.9.10-2.el9.x86_64/Include/cpython/abstract.h:127
#23 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x55555555cf90) at /usr/src/debug/python3.9-3.9.10-2.el9.x86_64/Python/ceval.c:5077
#24 _PyEval_EvalFrameDefault (tstate=<optimized out>, f=<optimized out>, throwflag=<optimized out>) at /usr/src/debug/python3.9-3.9.10-2.el9.x86_64/Python/ceval.c:3520
#25 0x00007ffff7d6401d in _PyEval_EvalFrame (throwflag=0, f=0x5555555b8010, tstate=0x55555555cf90) at /usr/src/debug/python3.9-3.9.10-2.el9.x86_64/Include/internal/pycore_ceval.h:40
--Type <RET> for more, q to quit, c to continue without paging--run example.pyQuit

Compilers on Mint:

√ pybindings % gcc --version
gcc (Ubuntu 11.1.0-1ubuntu1~20.04) 11.1.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

√ pybindings % clang --version
Ubuntu clang version 13.0.1-++20220120110924+75e33f71c2da-1~exp1~20220120231001.58
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/local/bin

√ pybindings % python3 --version
Python 3.8.10

Compiler on CentOS:

[root@localhost pybindings]# gcc --version
gcc (GCC) 11.2.1 20220401 (Red Hat 11.2.1-10)
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[root@localhost pybindings]# python3 --version
Python 3.9.10

If there is anything you want me to try or any tool I can run to collect information about the hardware/OS let me know.

@wangyiqiu
Copy link
Owner

wangyiqiu commented May 25, 2022

Hi, thanks for the feedback. I think the error is likely caused by a parallel scheduler crash on the particular system that you are using.
To verify the guess, I created a sequential version in a branch, which I believe will not crash because the parallel scheduler is disabled.
Here's the code: sequential version

I am communicating with authors of the parallel scheduler here to see if the problem can be resolved by compiling against a different scheduler. I will try to get back to you ASAP.

@crackcomm
Copy link
Author

crackcomm commented May 25, 2022

Thank you for your commitment.

I can confirm the sequential scheduler does not cause a crash. It works on both systems.

@mmisiewicz
Copy link

mmisiewicz commented Sep 30, 2022

The problem seems to be occurring on macOS too.

The source builds successfully (mkdir build; cmake ..; make -j) though there are two warnings:

CMake Warning (dev) at /opt/homebrew/Cellar/cmake/3.24.2/share/cmake/Modules/CMakeDependentOption.cmake:89 (message):
 Policy CMP0127 is not set: cmake_dependent_option() supports full Condition
 Syntax.  Run "cmake --help-policy CMP0127" for policy details.  Use the
 cmake_policy command to set the policy and suppress this warning.
Call Stack (most recent call first):
 pybindings/pybind11/CMakeLists.txt:98 (cmake_dependent_option)
This warning is for project developers.  Use -Wno-dev to suppress it.
  • ld: warning: -undefined dynamic_lookup may not work with chained fixups

Running the supplied example also results in a set fault:

➜  ./hdbscan -m 2 ../../example-data.csv
[1]    92235 segmentation fault  ./hdbscan -m 2 ../../example-data.csv

Also happens with the python bindings. For example:

ipython3
Python 3.10.6 (main, Aug 30 2022, 04:58:14) [Clang 13.1.6 (clang-1316.0.21.2.5)]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.5.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: from pyhdbscan import HDBSCAN

In [2]: from sklearn.datasets import load_iris

In [3]: ir = load_iris()

In [4]: res = HDBSCAN(ir["data"], 2)
[1]    92455 segmentation fault  ipython3

With this crash, looks like Parlay.

-------------------------------------
Translated Report (Full Report Below)
-------------------------------------

Process:               Python [92455]
Path:                  /opt/homebrew/*/Python.framework/Versions/3.10/Resources/Python.app/Contents/MacOS/Python
Identifier:            org.python.python
Version:               3.10.6 (3.10.6)
Code Type:             ARM-64 (Native)
Parent Process:        zsh [57577]
Responsible:           iTerm2 [750]
User ID:               501

Date/Time:             2022-09-30 00:25:41.6247 -0400
OS Version:            macOS 12.6 (21G115)
Report Version:        12
Anonymous UUID:        40AFB959-8F40-4439-AFA3-4FF93B2F5147


Time Awake Since Boot: 620000 seconds

System Integrity Protection: enabled

Crashed Thread:        44

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000000
Exception Codes:       0x0000000000000001, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Termination Reason:    Namespace SIGNAL, Code 11 Segmentation fault: 11
Terminating Process:   exc handler [92455]

VM Region Info: 0 is not in any region.  Bytes before following region: 4297244672
      REGION TYPE                    START - END         [ VSIZE] PRT/MAX SHRMOD  REGION DETAIL
      UNUSED SPACE AT START
--->  
      __TEXT                      10022c000-100230000    [   16K] r-x/r-x SM=COW  .../MacOS/Python

Thread 0::  Dispatch queue: com.apple.main-thread
0   pyhdbscan.cpython-310-darwin.so	       0x10354db90 void parlay::fork_join_scheduler::pardo<void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long), unsigned long, bool)::'lambda'(), void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long), unsigned long, bool)::'lambda0'()>(parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long), void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long), unsigned long, bool)::'lambda0'(), bool) + 328
1   pyhdbscan.cpython-310-darwin.so	       0x10354da9c void parlay::fork_join_scheduler::pardo<void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long), unsigned long, bool)::'lambda'(), void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long), unsigned long, bool)::'lambda0'()>(parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long), void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long), unsigned long, bool)::'lambda0'(), bool) + 84
2   pyhdbscan.cpython-310-darwin.so	       0x10354dcb4 void parlay::fork_join_scheduler::pardo<void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long), unsigned long, bool)::'lambda'(), void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long), unsigned long, bool)::'lambda0'()>(parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long), void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long), unsigned long, bool)::'lambda0'(), bool) + 620
3   pyhdbscan.cpython-310-darwin.so	       0x10354db60 void parlay::fork_join_scheduler::pardo<void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long), unsigned long, bool)::'lambda'(), void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long), unsigned long, bool)::'lambda0'()>(parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long), void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long), unsigned long, bool)::'lambda0'(), bool) + 280
4   pyhdbscan.cpython-310-darwin.so	       0x10354db60 void parlay::fork_join_scheduler::pardo<void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long), unsigned long, bool)::'lambda'(), void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long), unsigned long, bool)::'lambda0'()>(parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long), void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long), unsigned long, bool)::'lambda0'(), bool) + 280
5   pyhdbscan.cpython-310-darwin.so	       0x10354db60 void parlay::fork_join_scheduler::pardo<void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long), unsigned long, bool)::'lambda'(), void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long), unsigned long, bool)::'lambda0'()>(parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long), void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::initialize_list(parlay::block_allocator::block*)::'lambda'(unsigned long), unsigned long, bool)::'lambda0'(), bool) + 280
6   pyhdbscan.cpython-310-darwin.so	       0x10354d970 parlay::block_allocator::initialize_list(parlay::block_allocator::block*) + 180
7   pyhdbscan.cpython-310-darwin.so	       0x10354d82c void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long), unsigned long, bool) + 240
8   pyhdbscan.cpython-310-darwin.so	       0x10354df44 void parlay::fork_join_scheduler::pardo<void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long), unsigned long, bool)::'lambda'(), void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long), unsigned long, bool)::'lambda0'()>(parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long), void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long), unsigned long, bool)::'lambda0'(), bool) + 176
9   pyhdbscan.cpython-310-darwin.so	       0x10354d7c8 void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long), unsigned long, bool) + 140
10  pyhdbscan.cpython-310-darwin.so	       0x10354df44 void parlay::fork_join_scheduler::pardo<void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long), unsigned long, bool)::'lambda'(), void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long), unsigned long, bool)::'lambda0'()>(parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long), void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long), unsigned long, bool)::'lambda0'(), bool) + 176
11  pyhdbscan.cpython-310-darwin.so	       0x10354d7c8 void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long), unsigned long, bool) + 140
12  pyhdbscan.cpython-310-darwin.so	       0x10354df44 void parlay::fork_join_scheduler::pardo<void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long), unsigned long, bool)::'lambda'(), void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long), unsigned long, bool)::'lambda0'()>(parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long), void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long), unsigned long, bool)::'lambda0'(), bool) + 176
13  pyhdbscan.cpython-310-darwin.so	       0x10354d7c8 void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long), unsigned long, bool) + 140
14  pyhdbscan.cpython-310-darwin.so	       0x10354df44 void parlay::fork_join_scheduler::pardo<void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long), unsigned long, bool)::'lambda'(), void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long), unsigned long, bool)::'lambda0'()>(parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long), void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long), unsigned long, bool)::'lambda0'(), bool) + 176
15  pyhdbscan.cpython-310-darwin.so	       0x10354d7c8 void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long), unsigned long, bool) + 140
16  pyhdbscan.cpython-310-darwin.so	       0x10354df44 void parlay::fork_join_scheduler::pardo<void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long), unsigned long, bool)::'lambda'(), void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long), unsigned long, bool)::'lambda0'()>(parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long), void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long), unsigned long, bool)::'lambda0'(), bool) + 176
17  pyhdbscan.cpython-310-darwin.so	       0x10354d7c8 void parlay::fork_join_scheduler::parfor_<parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long)>(unsigned long, unsigned long, parlay::block_allocator::reserve(unsigned long)::'lambda'(unsigned long), unsigned long, bool) + 140
18  pyhdbscan.cpython-310-darwin.so	       0x10354c7a8 parlay::block_allocator::block_allocator(unsigned long, unsigned long, unsigned long, unsigned long) + 360
19  pyhdbscan.cpython-310-darwin.so	       0x10354c3a4 parlay::pool_allocator::pool_allocator(std::__1::vector<unsigned long, std::__1::allocator<unsigned long> > const&) + 500
20  pyhdbscan.cpython-310-darwin.so	       0x10354be8c parlay::internal::get_default_allocator() + 96
21  pyhdbscan.cpython-310-darwin.so	       0x1035616b0 py_hdbscan(pybind11::array_t<double, 17>, unsigned long) + 460
22  pyhdbscan.cpython-310-darwin.so	       0x10357af74 void pybind11::cpp_function::initialize<pybind11::array_t<double, 16> (*&)(pybind11::array_t<double, 17>, unsigned long), pybind11::array_t<double, 16>, pybind11::array_t<double, 17>, unsigned long, pybind11::name, pybind11::scope, pybind11::sibling, char [21], pybind11::arg, pybind11::arg>(pybind11::array_t<double, 16> (*&)(pybind11::array_t<double, 17>, unsigned long), pybind11::array_t<double, 16> (*)(pybind11::array_t<double, 17>, unsigned long), pybind11::name const&, pybind11::scope const&, pybind11::sibling const&, char const (&) [21], pybind11::arg const&, pybind11::arg const&)::'lambda'(pybind11::detail::function_call&)::__invoke(pybind11::detail::function_call&) + 552
23  pyhdbscan.cpython-310-darwin.so	       0x10356de84 pybind11::cpp_function::dispatcher(_object*, _object*, _object*) + 3388

I tested the sequential version of the code posted here and observed these results:

➜  ./hdbscan -m 2 ../../example-data.csv
build-tree-time = 5.29289e-05
core-dist-time = 0.000156879
---
 beta = 2
 rho = -0.1 -- 2.02927
 edges = 9
 mst-edges = 9
---
 beta = 4
 rho = 2.02927 -- 3.04736
 edges = 36
 mst-edges = 36
---
 beta = 8
 rho = 3.04736 -- 1.79769e+308
 edges = 157
 mst-edges = 39
wspd-time = 0.000174046
kruskal-time = 0.000128746
mark-time = 3.93391e-05
dendrogram-time = 4.00543e-05
timing = 0.000643015

Also:

  • cmake version 3.24.2
  • macOS 12.6, Xcode 14.0.1
  • clang, according to cmake:
-- The C compiler identification is AppleClang 14.0.0.14000029
-- The CXX compiler identification is AppleClang 14.0.0.14000029
  • hardware: M1 Ultra (20 core)

mmisiewicz pushed a commit to mmisiewicz/hdbscan that referenced this issue Oct 12, 2022
@wangyiqiu
Copy link
Owner

Hi, the error has been fixed in a recent update. Let me know if the problem persists.

crackcomm added a commit to crackcomm/hdbscan that referenced this issue Nov 28, 2022
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

No branches or pull requests

3 participants