Skip to content

Segfault during drop #159

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

Closed
Rikorose opened this issue Jun 10, 2021 · 7 comments · Fixed by #160
Closed

Segfault during drop #159

Rikorose opened this issue Jun 10, 2021 · 7 comments · Fixed by #160

Comments

@Rikorose
Copy link
Contributor

I got a segfault on program exit when using hdf5 in a multithread (rayon) environment.
Coredump:

coredumpctl gdb
           PID: 333137 (python)
           UID: 1000 (hendrik)
           GID: 1000 (hendrik)
        Signal: 11 (SEGV)
     Timestamp: Thu 2021-06-10 15:10:29 CEST (9s ago)
  Command Line: python -c from tests.test_pyclc import *; test_dataloader('~/data/hdf5')
    Executable: /usr/bin/python3.9
 Control Group: /user.slice/user-1000.slice/[email protected]/app.slice/app-Alacritty.slice/app-Alacritty-307265.scope
          Unit: [email protected]
     User Unit: app-Alacritty-307265.scope
         Slice: user-1000.slice
     Owner UID: 1000 (hendrik)
       Boot ID: f551cdaff1f44507b231985077fdc4ae
    Machine ID: fef964380b2449f7aa6d9beaddc5719b
      Hostname: T480s
       Storage: /var/lib/systemd/coredump/core.python.1000.f551cdaff1f44507b231985077fdc4ae.333137.1623330629000000.zst (present)
     Disk Size: 288.3M
       Message: Process 333137 (python) of user 1000 dumped core.

                Stack trace of thread 333168:
                #0  0x00007f28c411959d H5SL_release_common (libhdf5.so.103 + 0x20759d)
                #1  0x00007f28c4125ee5 H5SL_free (libhdf5.so.103 + 0x213ee5)
                #2  0x00007f28c3fb8503 H5D__chunk_io_term (libhdf5.so.103 + 0xa6503)
                #3  0x00007f28c3fd9e70 H5D__read (libhdf5.so.103 + 0xc7e70)
                #4  0x00007f28c3fda42a H5Dread (libhdf5.so.103 + 0xc842a)
                #5  0x00007f28c43472c6 n/a (/home/hendrik/.virtualenvs/clcrs/lib/python3.9/site-packages/pyclc.cpython-39-x86_64-linux-gnu.so + 0xb22c6)

Here is the full backtrace:

Click to expand
[I](gdb) bt full
#0  0x00007f28c411959d in H5SL_release_common (slist=0x7f2890004000, op=0x7f28c3fb7e90 <H5D__free_chunk_info>, op_data=0x0) at ../../src/H5SL.c:889
        err_occurred = false
        node = <optimized out>
        next_node = <optimized out>
        ret_value = 0
        __func__ = "H5SL_release_common"
#1  0x00007f28c4125ee5 in H5SL_free (slist=<optimized out>, op=<optimized out>, op_data=<optimized out>) at ../../src/H5SL.c:2305
No locals.
#2  0x00007f28c3fb8503 in H5D__chunk_io_term (fm=0x7f289c0f3d10) at ../../src/H5Dchunk.c:2567
        err_occurred = false
        ret_value = 0
        __func__ = "H5D__chunk_io_term"
#3  0x00007f28c3fd9e70 in H5D__read (dataset=dataset@entry=0x7f2884003980, mem_type_id=mem_type_id@entry=216172782113788630, mem_space=<optimized out>, file_space=0x7f288c010f40, buf=buf@entry=0x7f288467ec90)
    at ../../src/H5Dio.c:607
        prev_tag = 0
        err_occurred = <optimized out>
        fm = <optimized out>
        io_info = {dset = 0x7f2884003980, store = 0x7f28fdbeed80, layout_ops = {construct = 0x7f28c3fb7690 <H5D__chunk_construct>, init = 0x7f28c3fb78f0 <H5D__chunk_init>,
            is_space_alloc = 0x7f28c3fb3cc0 <H5D__chunk_is_space_alloc>, is_data_cached = 0x7f28c3fb3d00 <H5D__chunk_is_data_cached>, io_init = 0x7f28c3fb85c0 <H5D__chunk_io_init>,
            ser_read = 0x7f28c3fb3d80 <H5D__chunk_read>, ser_write = 0x7f28c3fb3db0 <H5D__chunk_write>, readvv = 0x0, writevv = 0x0, flush = 0x7f28c3fba470 <H5D__chunk_flush>,
            io_term = 0x7f28c3fb84c0 <H5D__chunk_io_term>, dest = 0x7f28c3fbb1b0 <H5D__chunk_dest>}, io_ops = {multi_read = 0x7f28c3fb3d80 <H5D__chunk_read>, multi_write = 0x7f28c3fb3db0 <H5D__chunk_write>,
            single_read = 0x7f28c3fdddb0 <H5D__scatgath_read>, single_write = 0x7f28c3fde9d0 <H5D__scatgath_write>}, op_type = H5D_IO_OP_READ, u = {rbuf = 0x7f288467ec90, wbuf = 0x7f288467ec90}}
        type_info = {mem_type = 0x7f28a4033d60, dset_type = 0x7f28940dc980, tpath = 0x565372ccc530, src_type_id = 216172782113788605, dst_type_id = 216172782113788630, src_type_size = 2, dst_type_size = 4,
          max_type_size = 4, is_conv_noop = false, is_xform_noop = true, cmpd_subset = 0x0, need_bkg = H5T_BKG_NO, request_nelmts = 262144, tconv_buf = 0x7f289c109868 "\001", tconv_buf_allocated = true,
          bkg_buf = 0x0, bkg_buf_allocated = false}
        type_info_init = <optimized out>
        projected_mem_space = 0x7f288c0058f0
        store = {contig = {dset_addr = 139812393745904, dset_size = 139811990022896}, chunk = {scaled = 0x7f289c107df0}, compact = {buf = 0x7f289c107df0, dirty = 0x7f2884002af0}, efl = {
            heap_addr = 139812393745904, nalloc = 139811990022896, nused = 139812526900320, slot = 0x7f28c40e98e1 <H5P__set_pclass_cb+289>}}
        snelmts = <optimized out>
        nelmts = <optimized out>
        io_op_init = <optimized out>
        fake_char = 0 '\000'
        ret_value = <optimized out>
        done = <optimized out>
        __func__ = "H5D__read"
#4  0x00007f28c3fda42a in H5Dread (dset_id=<optimized out>, mem_type_id=216172782113788630, mem_space_id=288230376151714598, file_space_id=288230376151714597, dxpl_id=720575940379280805, buf=0x7f288467ec90)
    at ../../src/H5Dio.c:198
        err_occurred = false
        dset = 0x7f2884003980
        mem_space = 0x7f288c010da0
        file_space = 0x7f288c010f40
        ret_value = 0
        done = <optimized out>
        __func__ = "H5Dread"
#5  0x00007f28c43472c6 in hdf5::hl::container::{{impl}}::read_into_buf::{{closure}}<usize> () at /home/hendrik/.cargo/git/checkouts/hdf5-rust-c1072d7a2617f7d8/40654f1/src/hl/container.rs:57
        obj_id = <optimized out>
        tp_id = <optimized out>
        mspace_id = <optimized out>
        fspace_id = <optimized out>
        xfer = hdf5::hl::plist::PropertyList (hdf5::handle::Handle {id: alloc::sync::Arc<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>>>}})
        buf = <optimized out>
#6  hdf5::sync::sync<core::result::Result<i32, hdf5::error::Error>,closure-4> (func=...) at /home/hendrik/.cargo/git/checkouts/hdf5-rust-c1072d7a2617f7d8/40654f1/src/sync.rs:13
        _guard = lock_api::remutex::ReentrantMutexGuard<parking_lot::raw_mutex::RawMutex, parking_lot::remutex::RawThreadId, ()> {remutex: 0x7f28c4458340 <_ZN66_$LT$hdf5..sync..sync..LOCK$u20$as$u20$core..ops..deref..Deref$GT$5deref11__stability4LAZY17hc2e98dfd6bac5854E.llvm.6461231552521875176+8>, marker: core::marker::PhantomData<(&(), lock_api::GuardNoSend)>}
#7  0x00007f28c42fcc4b in hdf5::hl::container::Reader::read_into_buf<f32> (self=<optimized out>, buf=<optimized out>, fspace=..., mspace=...)
    at /home/hendrik/.cargo/git/checkouts/hdf5-rust-c1072d7a2617f7d8/40654f1/src/hl/container.rs:57
        xfer = hdf5::hl::plist::PropertyList (hdf5::handle::Handle {id: alloc::sync::Arc<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>>>}})
        mspace_id = <optimized out>
        fspace_id = <optimized out>
        obj_id = <optimized out>
        tp_id = <optimized out>
        mem_dtype = hdf5::hl::datatype::Datatype (hdf5::handle::Handle {id: alloc::sync::Arc<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>>>}})
        file_dtype = hdf5::hl::datatype::Datatype (hdf5::handle::Handle {id: alloc::sync::Arc<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>>>}})
#8  0x00007f28c42fdb2f in hdf5::hl::container::Reader::read_slice<f32,ndarray::slice::SliceInfo<[ndarray::slice::SliceInfoElem; 2], ndarray::dimension::dim::Dim<[usize; 2]>, ndarray::dimension::dim::Dim<[usize; 1]>>,ndarray::dimension::dim::Dim<ndarray::dimension::dynindeximpl::IxDynImpl>> (self=0x7f28fdbef230, selection=<error reading variable: Cannot access memory at address 0x0>)
    at /home/hendrik/.cargo/git/checkouts/hdf5-rust-c1072d7a2617f7d8/40654f1/src/hl/container.rs:102
        buf = alloc::vec::Vec<f32, alloc::alloc::Global> {buf: alloc::raw_vec::RawVec<f32, alloc::alloc::Global> {ptr: core::ptr::unique::Unique<f32> {pointer: 0x7f288467ec90, _marker: core::marker::PhantomData<f32>}, cap: 480000, alloc: alloc::alloc::Global}, len: 0}
        mspace = hdf5::hl::dataspace::Dataspace (hdf5::handle::Handle {id: alloc::sync::Arc<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>>>}})
        fspace = hdf5::hl::dataspace::Dataspace (hdf5::handle::Handle {id: alloc::sync::Arc<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>>>}})
        out_size = <optimized out>
[I]--Type <RET> for more, q to quit, c to continue without paging--
        out_shape = alloc::vec::Vec<usize, alloc::alloc::Global> {buf: alloc::raw_vec::RawVec<usize, alloc::alloc::Global> {ptr: core::ptr::unique::Unique<usize> {pointer: 0x7f2884037580, _marker: core::marker::PhantomData<usize>}, cap: 1, alloc: alloc::alloc::Global}, len: 1}
        obj_space = hdf5::hl::dataspace::Dataspace (hdf5::handle::Handle {id: alloc::sync::Arc<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>>>}})
        selection = hdf5::hl::selection::Selection::Hyperslab(hdf5::hl::selection::Hyperslab {dims: alloc::vec::Vec<hdf5::hl::selection::SliceOrIndex, alloc::alloc::Global> {buf: alloc::raw_vec::RawVec<hdf5::hl::selection::SliceOrIndex, alloc::alloc::Global> {ptr: core::ptr::unique::Unique<hdf5::hl::selection::SliceOrIndex> {pointer: 0x7f28840f5580, _marker: core::marker::PhantomData<hdf5::hl::selection::SliceOrIndex>}, cap: 2, alloc: alloc::alloc::Global}, len: 2}})
        selection = <error reading variable selection (Cannot access memory at address 0x0)>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        val = hdf5::hl::dataspace::Dataspace (hdf5::handle::Handle {id: alloc::sync::Arc<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>>>}})
        obj_space = hdf5::hl::dataspace::Dataspace (hdf5::handle::Handle {id: alloc::sync::Arc<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>>>}})
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        out_shape = alloc::vec::Vec<usize, alloc::alloc::Global> {buf: alloc::raw_vec::RawVec<usize, alloc::alloc::Global> {ptr: core::ptr::unique::Unique<usize> {pointer: 0x0, _marker: core::marker::PhantomData<usize>}, cap: <optimized out>, alloc: alloc::alloc::Global}, len: <optimized out>}
        out_size = <optimized out>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        val = hdf5::hl::dataspace::Dataspace (hdf5::handle::Handle {id: alloc::sync::Arc<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>>>}})
        fspace = hdf5::hl::dataspace::Dataspace (hdf5::handle::Handle {id: alloc::sync::Arc<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>>>}})
        fsize = <optimized out>
        arg0 = <optimized out>
        arg1 = <optimized out>
        res = alloc::string::String {vec: alloc::vec::Vec<u8, alloc::alloc::Global> {buf: alloc::raw_vec::RawVec<u8, alloc::alloc::Global> {ptr: core::ptr::unique::Unique<u8> {pointer: 0x0, _marker: core::marker::PhantomData<u8>}, cap: <optimized out>, alloc: alloc::alloc::Global}, len: <optimized out>}}
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        val = hdf5::hl::dataspace::Dataspace (hdf5::handle::Handle {id: alloc::sync::Arc<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>>>}})
        mspace = hdf5::hl::dataspace::Dataspace (hdf5::handle::Handle {id: alloc::sync::Arc<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>>>}})
        buf = alloc::vec::Vec<f32, alloc::alloc::Global> {buf: alloc::raw_vec::RawVec<f32, alloc::alloc::Global> {ptr: core::ptr::unique::Unique<f32> {pointer: 0x0, _marker: core::marker::PhantomData<f32>}, cap: <optimized out>, alloc: alloc::alloc::Global}, len: <optimized out>}
        residual = core::result::Result<core::convert::Infallible, ndarray::error::ShapeError>::Err(ndarray::error::ShapeError {repr: 0})
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        arr = <error reading variable arr (Cannot access memory at address 0x20)>
        residual = core::result::Result<core::convert::Infallible, ndarray::error::ShapeError>::Err(ndarray::error::ShapeError {repr: 0})
        val = <error reading variable val (Cannot access memory at address 0x20)>
        val = ()
        val = <error reading variable val (Cannot access memory at address 0x20)>
        ndim = <optimized out>
        out_ndim = <optimized out>
        res = alloc::string::String {vec: alloc::vec::Vec<u8, alloc::alloc::Global> {buf: alloc::raw_vec::RawVec<u8, alloc::alloc::Global> {ptr: core::ptr::unique::Unique<u8> {pointer: 0x0, _marker: core::marker::PhantomData<u8>}, cap: <optimized out>, alloc: alloc::alloc::Global}, len: <optimized out>}}
        arg0 = <optimized out>
        arg1 = <optimized out>
        residual = core::result::Result<core::convert::Infallible, ndarray::error::ShapeError>::Err(ndarray::error::ShapeError {repr: 0})
        val = <error reading variable val (Cannot access memory at address 0x20)>
        val = alloc::vec::Vec<usize, alloc::alloc::Global> {buf: alloc::raw_vec::RawVec<usize, alloc::alloc::Global> {ptr: core::ptr::unique::Unique<usize> {pointer: 0x0, _marker: core::marker::PhantomData<usize>}, cap: <optimized out>, alloc: alloc::alloc::Global}, len: <optimized out>}
#9  hdf5::hl::container::Container::read_slice<f32,ndarray::slice::SliceInfo<[ndarray::slice::SliceInfoElem; 2], ndarray::dimension::dim::Dim<[usize; 2]>, ndarray::dimension::dim::Dim<[usize; 1]>>,ndarray::dimension::dim::Dim<ndarray::dimension::dynindeximpl::IxDynImpl>> (self=<optimized out>, selection=...) at /home/hendrik/.cargo/git/checkouts/hdf5-rust-c1072d7a2617f7d8/40654f1/src/hl/container.rs:506
No locals.
#10 0x00007f28c42dbc3c in clc::dataset::Hdf5Dataset::read_pcm (self=0x565372d65040, key=..., r=...) at clc/src/dataset.rs:547
        r = core::ops::range::Range<usize> {start: 10832609, end: 11312609}
        ds = hdf5::hl::dataset::Dataset (hdf5::handle::Handle {id: alloc::sync::Arc<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, i64>>>}})
#11 0x00007f28c42dc9cc in clc::dataset::Hdf5Dataset::read_slc (self=0x565372d65040, key=..., r=...) at clc/src/dataset.rs:582
No locals.
#12 0x00007f28c42d9a40 in clc::dataset::RsDataset::read_max_len (self=<optimized out>, idx=<optimized out>, key=...) at clc/src/dataset.rs:345
        s = <optimized out>
        s = 13920192
        max_len = <optimized out>
        sample_len = <optimized out>
        sr = <optimized out>
        ds = 0x565372d65040
#13 0x00007f28c42da032 in clc::dataset::{{impl}}::get_data (self=0x565372df6ff0, idx=<optimized out>) at clc/src/dataset.rs:370
        ns_idx = 0x7f28c4293e28 <H5SL_init_g>
        ns_key = 0x7f28c4293e30
        __next = 0x7f28c4293e28 <H5SL_init_g>
        iter = alloc::vec::into_iter::IntoIter<&(usize, alloc::string::String), alloc::alloc::Global> {buf: core::ptr::non_null::NonNull<&(usize, alloc::string::String)> {pointer: 0x7f28840f5270}, phantom: core::marker::PhantomData<&(usize, alloc::string::String)>, cap: 4, alloc: alloc::alloc::Global, ptr: 0x7f28840f5290, end: 0x7f28840f5290}
        noise_gains = alloc::vec::Vec<&i8, alloc::alloc::Global> {buf: alloc::raw_vec::RawVec<&i8, alloc::alloc::Global> {ptr: core::ptr::unique::Unique<&i8> {pointer: 0x7f28840452b0, _marker: core::marker::PhantomData<&i8>}, cap: 4, alloc: alloc::alloc::Global}, len: 3}
        noises = alloc::vec::Vec<ndarray::ArrayBase<ndarray::data_repr::OwnedRepr<f32>, ndarray::dimension::dim::Dim<[usize; 2]>>, alloc::alloc::Global> {buf: alloc::raw_vec::RawVec<ndarray::ArrayBase<ndarray::data_repr::OwnedRepr<f32>, ndarray::dimension::dim::Dim<[usize; 2]>>, alloc::alloc::Global> {ptr: core::ptr::unique::Unique<ndarray::ArrayBase<ndarray::data_repr::OwnedRepr<f32>, ndarray::dimension::dim::Dim<[usize; 2]>>> {pointer: 0x7f28840fa6c0, _marker: core::marker::PhantomData<ndarray::ArrayBase<ndarray::data_repr::OwnedRepr<f32>, ndarray::dimension::dim::Dim<[usize; 2]>>>}, cap: 4, alloc: alloc::alloc::Global}, len: 3}
[I]--Type <RET> for more, q to quit, c to continue without paging--
        ns_ids = alloc::vec::Vec<&(usize, alloc::string::String), alloc::alloc::Global> {buf: alloc::raw_vec::RawVec<&(usize, alloc::string::String), alloc::alloc::Global> {ptr: core::ptr::unique::Unique<&(usize, alloc::string::String)> {pointer: 0x7f28840f5270, _marker: core::marker::PhantomData<&(usize, alloc::string::String)>}, cap: 4, alloc: alloc::alloc::Global}, len: 4}
        n_noises = <optimized out>
        speech = ndarray::ArrayBase<ndarray::data_repr::OwnedRepr<f32>, ndarray::dimension::dim::Dim<[usize; 2]>> {data: ndarray::data_repr::OwnedRepr<f32> {ptr: core::ptr::non_null::NonNull<f32> {pointer: 0x7f2884ce7ad0}, len: 630784, capacity: 630784}, ptr: core::ptr::non_null::NonNull<f32> {pointer: 0x7f2884ce7ad0}, dim: ndarray::dimension::dim::Dim<[usize; 2]> {index: [1,
              480000]}, strides: ndarray::dimension::dim::Dim<[usize; 2]> {index: [630784, 1]}}
        sp_key = <optimized out>
        sp_idx = <optimized out>
#14 0x00007f28c43201ca in clc::dataset::{{impl}}::start_idx_worker::{{closure}}::{{closure}} (idx=0) at clc/src/dataset.rs:127
        ds = alloc::sync::Arc<Dataset> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<Dataset>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<Dataset>>}
        out_sender = <error reading variable out_sender (Cannot access memory at address 0x0)>
        sample = clc::dataset::DsSample {speech: ndarray::ArrayBase<ndarray::data_repr::OwnedRepr<f32>, ndarray::dimension::dim::Dim<[usize; 2]>> {data: ndarray::data_repr::OwnedRepr<f32> {ptr: core::ptr::non_null::NonNull<f32> {pointer: 0x0}, len: <optimized out>, capacity: <optimized out>}, ptr: core::ptr::non_null::NonNull<f32> {pointer: 0x0}, dim: ndarray::dimension::dim::Dim<[usize; 2]> {index: [<optimized out>,
                <optimized out>]}, strides: ndarray::dimension::dim::Dim<[usize; 2]> {index: [<optimized out>,
                <optimized out>]}}, noise: ndarray::ArrayBase<ndarray::data_repr::OwnedRepr<f32>, ndarray::dimension::dim::Dim<[usize; 2]>> {data: ndarray::data_repr::OwnedRepr<f32> {ptr: core::ptr::non_null::NonNull<f32> {pointer: 0x0}, len: <optimized out>, capacity: <optimized out>}, ptr: core::ptr::non_null::NonNull<f32> {pointer: 0x0}, dim: ndarray::dimension::dim::Dim<[usize; 2]> {index: [<optimized out>,
                <optimized out>]}, strides: ndarray::dimension::dim::Dim<[usize; 2]> {index: [<optimized out>,
                <optimized out>]}}, noisy: ndarray::ArrayBase<ndarray::data_repr::OwnedRepr<f32>, ndarray::dimension::dim::Dim<[usize; 2]>> {data: ndarray::data_repr::OwnedRepr<f32> {ptr: core::ptr::non_null::NonNull<f32> {pointer: 0x0}, len: <optimized out>, capacity: <optimized out>}, ptr: core::ptr::non_null::NonNull<f32> {pointer: 0x0}, dim: ndarray::dimension::dim::Dim<[usize; 2]> {index: [<optimized out>,
                <optimized out>]}, strides: ndarray::dimension::dim::Dim<[usize; 2]> {index: [<optimized out>, <optimized out>]}}, snr: <optimized out>, gain: <optimized out>}
        residual = core::result::Result<core::convert::Infallible, crossbeam_channel::err::SendError<clc::dataset::DsSample>>::Err(crossbeam_channel::err::SendError<clc::dataset::DsSample> (clc::dataset::DsSample {speech: ndarray::ArrayBase<ndarray::data_repr::OwnedRepr<f32>, ndarray::dimension::dim::Dim<[usize; 2]>> {data: ndarray::data_repr::OwnedRepr<f32> {ptr: core::ptr::non_null::NonNull<f32> {pointer: 0x0}, len: <optimized out>, capacity: <optimized out>}, ptr: core::ptr::non_null::NonNull<f32> {pointer: 0x0}, dim: ndarray::dimension::dim::Dim<[usize; 2]> {index: [<optimized out>,
                    <optimized out>]}, strides: ndarray::dimension::dim::Dim<[usize; 2]> {index: [<optimized out>,
                    <optimized out>]}}, noise: ndarray::ArrayBase<ndarray::data_repr::OwnedRepr<f32>, ndarray::dimension::dim::Dim<[usize; 2]>> {data: ndarray::data_repr::OwnedRepr<f32> {ptr: core::ptr::non_null::NonNull<f32> {pointer: 0x0}, len: <optimized out>, capacity: <optimized out>}, ptr: core::ptr::non_null::NonNull<f32> {pointer: 0x0}, dim: ndarray::dimension::dim::Dim<[usize; 2]> {index: [<optimized out>,
                    <optimized out>]}, strides: ndarray::dimension::dim::Dim<[usize; 2]> {index: [<optimized out>,
                    <optimized out>]}}, noisy: ndarray::ArrayBase<ndarray::data_repr::OwnedRepr<f32>, ndarray::dimension::dim::Dim<[usize; 2]>> {data: ndarray::data_repr::OwnedRepr<f32> {ptr: core::ptr::non_null::NonNull<f32> {pointer: 0x0}, len: <optimized out>, capacity: <optimized out>}, ptr: core::ptr::non_null::NonNull<f32> {pointer: 0x0}, dim: ndarray::dimension::dim::Dim<[usize; 2]> {index: [<optimized out>,
                    <optimized out>]}, strides: ndarray::dimension::dim::Dim<[usize; 2]> {index: [<optimized out>, <optimized out>]}}, snr: <optimized out>, gain: <optimized out>}))
        val = ()
        residual = core::result::Result<core::convert::Infallible, anyhow::Error>::Err(anyhow::Error {inner: anyhow::ptr::Own<anyhow::error::ErrorImpl<()>> {ptr: core::ptr::non_null::NonNull<anyhow::error::ErrorImpl<()>> {pointer: 0x0}}})
        val = clc::dataset::DsSample {speech: ndarray::ArrayBase<ndarray::data_repr::OwnedRepr<f32>, ndarray::dimension::dim::Dim<[usize; 2]>> {data: ndarray::data_repr::OwnedRepr<f32> {ptr: core::ptr::non_null::NonNull<f32> {pointer: 0x0}, len: <optimized out>, capacity: <optimized out>}, ptr: core::ptr::non_null::NonNull<f32> {pointer: 0x0}, dim: ndarray::dimension::dim::Dim<[usize; 2]> {index: [<optimized out>,
                <optimized out>]}, strides: ndarray::dimension::dim::Dim<[usize; 2]> {index: [<optimized out>,
                <optimized out>]}}, noise: ndarray::ArrayBase<ndarray::data_repr::OwnedRepr<f32>, ndarray::dimension::dim::Dim<[usize; 2]>> {data: ndarray::data_repr::OwnedRepr<f32> {ptr: core::ptr::non_null::NonNull<f32> {pointer: 0x0}, len: <optimized out>, capacity: <optimized out>}, ptr: core::ptr::non_null::NonNull<f32> {pointer: 0x0}, dim: ndarray::dimension::dim::Dim<[usize; 2]> {index: [<optimized out>,
                <optimized out>]}, strides: ndarray::dimension::dim::Dim<[usize; 2]> {index: [<optimized out>,
                <optimized out>]}}, noisy: ndarray::ArrayBase<ndarray::data_repr::OwnedRepr<f32>, ndarray::dimension::dim::Dim<[usize; 2]>> {data: ndarray::data_repr::OwnedRepr<f32> {ptr: core::ptr::non_null::NonNull<f32> {pointer: 0x0}, len: <optimized out>, capacity: <optimized out>}, ptr: core::ptr::non_null::NonNull<f32> {pointer: 0x0}, dim: ndarray::dimension::dim::Dim<[usize; 2]> {index: [<optimized out>,
                <optimized out>]}, strides: ndarray::dimension::dim::Dim<[usize; 2]> {index: [<optimized out>, <optimized out>]}}, snr: <optimized out>, gain: <optimized out>}
#15 rayon::iter::map_with::{{impl}}::consume<usize,(),core::result::Result<(), anyhow::Error>,rayon::iter::try_reduce::TryReduceFolder<fn((), ()) -> core::result::Result<(), anyhow::Error>, core::result::Result<(), anyhow::Error>>,closure-1> (self=..., item=0) at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-1.5.1/src/iter/map_with.rs:304
No locals.
#16 0x00007f28c4343976 in rayon::iter::par_bridge::{{impl}}::fold_with<alloc::collections::vec_deque::drain::Drain<usize>,rayon::iter::map_with::MapWithFolder<rayon::iter::try_reduce::TryReduceFolder<fn((), ()) -> core::result::Result<(), anyhow::Error>, core::result::Result<(), anyhow::Error>>, (), closure-1>> (self=..., folder=...)
    at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-1.5.1/src/iter/par_bridge.rs:157
        it = 0
#17 0x00007f28c4375c1f in rayon::iter::plumbing::bridge_unindexed_producer_consumer<rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>>,rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1>> (migrated=<optimized out>, splitter=..., producer=..., consumer=...)
    at clc/src/transforms.rs:17
No locals.
#18 0x00007f28c4343594 in rayon::iter::plumbing::bridge_unindexed_producer_consumer::{{closure}}<rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>>,rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1>> (context=...)
    at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-1.5.1/src/iter/plumbing/mod.rs:474
        bridge = <optimized out>
        splitter = rayon::iter::plumbing::Splitter {splits: <optimized out>}
        left_producer = rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}
        left_consumer = rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}
#19 rayon_core::join::join_context::call_a::{{closure}}<core::result::Result<(), anyhow::Error>,closure-0> () at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/join/mod.rs:124
        f = rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0})
        injected = <optimized out>
#20 std::panic::{{impl}}::call_once<core::result::Result<(), anyhow::Error>,closure-0> (self=..., _args=<optimized out>) at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panic.rs:347
No locals.
#21 std::panicking::try::do_call<std::panic::AssertUnwindSafe<closure-0>,core::result::Result<(), anyhow::Error>> (data=<optimized out>)
    at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panicking.rs:401
        f = std::panic::AssertUnwindSafe<closure-0> (rayon_core::join::join_context::call_a::closure-0 (rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitCons[I]--Type <RET> for more, q to quit, c to continue without paging--
umer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}), false))
        data = <optimized out>
        data = <optimized out>
        data = <optimized out>
        data = <optimized out>
        f = std::panic::AssertUnwindSafe<closure-0> (rayon_core::join::join_context::call_a::closure-0 (rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}), false))
#22 std::panicking::try<core::result::Result<(), anyhow::Error>,std::panic::AssertUnwindSafe<closure-0>> (f=...) at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panicking.rs:365
        data_ptr = <optimized out>
        data = std::panicking::try::Data<std::panic::AssertUnwindSafe<closure-0>, core::result::Result<(), anyhow::Error>> {f: core::mem::manually_drop::ManuallyDrop<std::panic::AssertUnwindSafe<closure-0>> {value: std::panic::AssertUnwindSafe<closure-0> (rayon_core::join::join_context::call_a::closure-0 (rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}), false))}, r: core::mem::manually_drop::ManuallyDrop<core::result::Result<(), anyhow::Error>> {value: core::result::Result<(), anyhow::Error>::Ok(())}, p: core::mem::manually_drop::ManuallyDrop<alloc::boxed::Box<Any, alloc::alloc::Global>> {value: core::any::Box<Any, alloc::alloc::Global> {pointer: 0x0, vtable: 0x0}}}
        data = <error reading variable data (Cannot access memory at address 0x0)>
        data_ptr = <optimized out>
#23 std::panic::catch_unwind<std::panic::AssertUnwindSafe<closure-0>,core::result::Result<(), anyhow::Error>> (f=...) at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panic.rs:434
No locals.
#24 rayon_core::unwind::halt_unwinding<closure-0,core::result::Result<(), anyhow::Error>> (func=...) at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/unwind.rs:17
No locals.
#25 rayon_core::join::join_context::{{closure}}<closure-0,closure-1,core::result::Result<(), anyhow::Error>,core::result::Result<(), anyhow::Error>> (worker_thread=0x7f28fdbf1980, injected=false)
    at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/join/mod.rs:141
        job_b_ref = rayon_core::job::JobRef {pointer: 0x0, execute_fn: 0x0}
        job_b = rayon_core::job::StackJob<rayon_core::latch::SpinLatch, closure-0, core::result::Result<(), anyhow::Error>> {latch: rayon_core::latch::SpinLatch {core_latch: rayon_core::latch::CoreLatch {state: core::sync::atomic::AtomicUsize {v: core::cell::UnsafeCell<usize> {value: 0}}}, registry: 0x7f28fdbf1ab0, target_worker_index: 6, cross: false}, func: core::cell::UnsafeCell<core::option::Option<closure-0>> {value: core::option::Option<closure-0>::Some(rayon_core::join::join_context::call_b::closure-0 (rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-1 (0x7f28fdbf02a8, 0x7f28fdbf0308, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x7f28ade01b00, done: 0x7f28ade01ae8, iter: 0x7f28ade01be0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x7f28a0007480}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x7f28ade01c68, reduce_op: 0x7f28ade01c68, full: 0x7f28ade01c60}, init: 0x7f28ade01ce0, map_op: 0x7f28ade01ce8})))}, result: core::cell::UnsafeCell<rayon_core::job::JobResult<core::result::Result<(), anyhow::Error>>> {value: rayon_core::job::JobResult<core::result::Result<(), anyhow::Error>>::None}}
        oper_b = rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-1 (0x7f28fdbf02a8, 0x7f28fdbf0308, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x7f28ade01b00, done: 0x7f28ade01ae8, iter: 0x7f28ade01be0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x7f28a0007480}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x7f28ade01c68, reduce_op: 0x7f28ade01c68, full: 0x7f28ade01c60}, init: 0x7f28ade01ce0, map_op: 0x7f28ade01ce8})
        oper_a = rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x7f28fdbf02a8, 0x7f28fdbf0308, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x7f28ade01b00, done: 0x7f28ade01ae8, iter: 0x7f28ade01be0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x7f28a0007480}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x7f28ade01c68, reduce_op: 0x7f28ade01c68, full: 0x7f28ade01c60}, init: 0x7f28ade01ce0, map_op: 0x7f28ade01ce8})
        job_b = <error reading variable job_b (Cannot access memory at address 0x50)>
        job_b_ref = rayon_core::job::JobRef {pointer: 0x0, execute_fn: 0x0}
        status_a = <error reading variable status_a (Cannot access memory at address 0x0)>
        v = <error reading variable v (Cannot access memory at address 0x0)>
        result_a = <error reading variable result_a (Cannot access memory at address 0x0)>
        job = rayon_core::job::JobRef {pointer: 0x0, execute_fn: 0x0}
        result_b = <error reading variable result_b (Cannot access memory at address 0x0)>
        err = core::any::Box<Any, alloc::alloc::Global> {pointer: 0x0, vtable: 0x0}
#26 rayon_core::registry::in_worker<closure-0,(core::result::Result<(), anyhow::Error>, core::result::Result<(), anyhow::Error>)> (op=...)
    at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/registry.rs:875
        owner_thread = 0x7f28fdbf1980
#27 0x00007f28c4375ac8 in rayon_core::join::join_context<closure-0,closure-1,core::result::Result<(), anyhow::Error>,core::result::Result<(), anyhow::Error>> (oper_a=..., oper_b=...)
    at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/join/mod.rs:132
No locals.
#28 rayon::iter::plumbing::bridge_unindexed_producer_consumer<rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>>,rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1>> (migrated=<optimized out>, splitter=..., producer=..., consumer=...)
    at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-1.5.1/src/iter/plumbing/mod.rs:473
        bridge = 0x0
        left_consumer = rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}
        reducer = rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}
        right_consumer = rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}
        left_producer = rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x7f28ade01b00, done: 0x0, iter: 0x7f28c41dd764, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: (crossbeam_deque::deque::Flavor::Lifo | unknown: 0x60)}}
        right_producer = rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x7f28ade01b00, done: 0x0, iter: 0x7f28c41dd764, items: crossbeam_deque::dequ[I]--Type <RET> for more, q to quit, c to continue without paging--
e::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: (crossbeam_deque::deque::Flavor::Lifo | unknown: 0x60)}}
#29 0x00007f28c4343594 in rayon::iter::plumbing::bridge_unindexed_producer_consumer::{{closure}}<rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>>,rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1>> (context=...)
    at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-1.5.1/src/iter/plumbing/mod.rs:474
        bridge = <optimized out>
        splitter = rayon::iter::plumbing::Splitter {splits: <optimized out>}
        left_producer = rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}
        left_consumer = rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}
#30 rayon_core::join::join_context::call_a::{{closure}}<core::result::Result<(), anyhow::Error>,closure-0> () at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/join/mod.rs:124
        f = rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0})
        injected = <optimized out>
#31 std::panic::{{impl}}::call_once<core::result::Result<(), anyhow::Error>,closure-0> (self=..., _args=<optimized out>) at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panic.rs:347
No locals.
#32 std::panicking::try::do_call<std::panic::AssertUnwindSafe<closure-0>,core::result::Result<(), anyhow::Error>> (data=<optimized out>)
    at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panicking.rs:401
        f = std::panic::AssertUnwindSafe<closure-0> (rayon_core::join::join_context::call_a::closure-0 (rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}), false))
        data = <optimized out>
        data = <optimized out>
        data = <optimized out>
        data = <optimized out>
        f = std::panic::AssertUnwindSafe<closure-0> (rayon_core::join::join_context::call_a::closure-0 (rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}), false))
#33 std::panicking::try<core::result::Result<(), anyhow::Error>,std::panic::AssertUnwindSafe<closure-0>> (f=...) at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panicking.rs:365
        data_ptr = <optimized out>
        data = std::panicking::try::Data<std::panic::AssertUnwindSafe<closure-0>, core::result::Result<(), anyhow::Error>> {f: core::mem::manually_drop::ManuallyDrop<std::panic::AssertUnwindSafe<closure-0>> {value: std::panic::AssertUnwindSafe<closure-0> (rayon_core::join::join_context::call_a::closure-0 (rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}), false))}, r: core::mem::manually_drop::ManuallyDrop<core::result::Result<(), anyhow::Error>> {value: core::result::Result<(), anyhow::Error>::Ok(())}, p: core::mem::manually_drop::ManuallyDrop<alloc::boxed::Box<Any, alloc::alloc::Global>> {value: core::any::Box<Any, alloc::alloc::Global> {pointer: 0x0, vtable: 0x0}}}
        data = <error reading variable data (Cannot access memory at address 0x0)>
        data_ptr = <optimized out>
#34 std::panic::catch_unwind<std::panic::AssertUnwindSafe<closure-0>,core::result::Result<(), anyhow::Error>> (f=...) at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panic.rs:434
No locals.
#35 rayon_core::unwind::halt_unwinding<closure-0,core::result::Result<(), anyhow::Error>> (func=...) at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/unwind.rs:17
No locals.
#36 rayon_core::join::join_context::{{closure}}<closure-0,closure-1,core::result::Result<(), anyhow::Error>,core::result::Result<(), anyhow::Error>> (worker_thread=0x7f28fdbf1980, injected=false)
    at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/join/mod.rs:141
        job_b_ref = rayon_core::job::JobRef {pointer: 0x0, execute_fn: 0x0}
        job_b = rayon_core::job::StackJob<rayon_core::latch::SpinLatch, closure-0, core::result::Result<(), anyhow::Error>> {latch: rayon_core::latch::SpinLatch {core_latch: rayon_core::latch::CoreLatch {state: core::sync::atomic::AtomicUsize {v: core::cell::UnsafeCell<usize> {value: 0}}}, registry: 0x7f28fdbf1ab0, target_worker_index: 6, cross: false}, func: core::cell::UnsafeCell<core::option::Option<closure-0>> {value: core::option::Option<closure-0>::None}, result: core::cell::UnsafeCell<rayon_core::job::JobResult<core::result::Result<(), anyhow::Error>>> {value: rayon_core::job::JobResult<core::result::Result<(), anyhow::Error>>::None}}
        oper_b = rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-1 (0x7f28fdbf0698, 0x7f28fdbf06f8, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x7f28ade01b00, done: 0x7f28ade01ae8, iter: 0x7f28ade01be0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x7f28a0007480}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x7f28ade01c68, reduce_op: 0x7f28ade01c68, full: 0x7f28ade01c60}, init: 0x7f28ade01ce0, map_op: 0x7f28ade01ce8})
        oper_a = rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x7f28fdbf0698, 0x7f28fdbf06f8, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x7f28ade01b00, done: 0x7f28ade01ae8, iter: 0x7f28ade01be0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x7f28a0007480}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x7f28ade01c68, reduce_op: 0x7f28ade01c68, full: 0x7f28ade01c60}, init: 0x7f28ade01ce0, map_op: 0x7f28ade01ce8})
        job_b = <error reading variable job_b (Cannot access memory at address 0x50)>
        job_b_ref = rayon_core::job::JobRef {pointer: 0x0, execute_fn: 0x0}
        status_a = <error reading variable status_a (Cannot access memory at address 0x0)>
[I]--Type <RET> for more, q to quit, c to continue without paging--
        v = <error reading variable v (Cannot access memory at address 0x0)>
        result_a = <error reading variable result_a (Cannot access memory at address 0x0)>
        job = rayon_core::job::JobRef {pointer: 0x0, execute_fn: 0x0}
        result_b = <error reading variable result_b (Cannot access memory at address 0x0)>
        err = core::any::Box<Any, alloc::alloc::Global> {pointer: 0x0, vtable: 0x0}
#37 rayon_core::registry::in_worker<closure-0,(core::result::Result<(), anyhow::Error>, core::result::Result<(), anyhow::Error>)> (op=...)
    at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/registry.rs:875
        owner_thread = 0x7f28fdbf1980
#38 0x00007f28c4375ac8 in rayon_core::join::join_context<closure-0,closure-1,core::result::Result<(), anyhow::Error>,core::result::Result<(), anyhow::Error>> (oper_a=..., oper_b=...)
    at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/join/mod.rs:132
No locals.
#39 rayon::iter::plumbing::bridge_unindexed_producer_consumer<rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>>,rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1>> (migrated=<optimized out>, splitter=..., producer=..., consumer=...)
    at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-1.5.1/src/iter/plumbing/mod.rs:473
        bridge = 0x0
        left_consumer = rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}
        reducer = rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}
        right_consumer = rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}
        left_producer = rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x7f28ade01b00, done: 0x0, iter: 0x7f28c41dd764, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: (crossbeam_deque::deque::Flavor::Lifo | unknown: 0x60)}}
        right_producer = rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x7f28ade01b00, done: 0x0, iter: 0x7f28c41dd764, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: (crossbeam_deque::deque::Flavor::Lifo | unknown: 0x60)}}
#40 0x00007f28c4343594 in rayon::iter::plumbing::bridge_unindexed_producer_consumer::{{closure}}<rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>>,rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1>> (context=...)
    at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-1.5.1/src/iter/plumbing/mod.rs:474
        bridge = <optimized out>
        splitter = rayon::iter::plumbing::Splitter {splits: <optimized out>}
        left_producer = rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}
        left_consumer = rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}
#41 rayon_core::join::join_context::call_a::{{closure}}<core::result::Result<(), anyhow::Error>,closure-0> () at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/join/mod.rs:124
        f = rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0})
        injected = <optimized out>
#42 std::panic::{{impl}}::call_once<core::result::Result<(), anyhow::Error>,closure-0> (self=..., _args=<optimized out>) at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panic.rs:347
No locals.
#43 std::panicking::try::do_call<std::panic::AssertUnwindSafe<closure-0>,core::result::Result<(), anyhow::Error>> (data=<optimized out>)
    at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panicking.rs:401
        f = std::panic::AssertUnwindSafe<closure-0> (rayon_core::join::join_context::call_a::closure-0 (rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}), false))
        data = <optimized out>
        data = <optimized out>
        data = <optimized out>
        data = <optimized out>
        f = std::panic::AssertUnwindSafe<closure-0> (rayon_core::join::join_context::call_a::closure-0 (rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}), false))
#44 std::panicking::try<core::result::Result<(), anyhow::Error>,std::panic::AssertUnwindSafe<closure-0>> (f=...) at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panicking.rs:365
        data_ptr = <optimized out>
        data = std::panicking::try::Data<std::panic::AssertUnwindSafe<closure-0>, core::result::Result<(), anyhow::Error>> {f: core::mem::manually_drop::ManuallyDrop<std::panic::AssertUnwindSafe<closure-0>> {value: std::panic::AssertUnwindSafe<closure-0> (rayon_core::join::join_context::call_a::closure-0 (rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}), false))}, r: core::mem::manually_drop::ManuallyDrop<core::result::Result<(), anyhow::Error>> {value: core::result::Result<(), anyhow::Error>::Ok(())}, p: core::mem::manually_drop::ManuallyDrop<alloc::boxed::Box<Any, alloc::alloc::Global>> {value: core::any::Box<Any, alloc::alloc::Global> {pointer: 0x0, vtable: 0x0}}}
        data = <error reading variable data (Cannot access memory at address 0x0)>
        data_ptr = <optimized out>
#45 std::panic::catch_unwind<std::panic::AssertUnwindSafe<closure-0>,core::result::Result<(), anyhow::Error>> (f=...) at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panic.rs:434
[I]--Type <RET> for more, q to quit, c to continue without paging--
No locals.
#46 rayon_core::unwind::halt_unwinding<closure-0,core::result::Result<(), anyhow::Error>> (func=...) at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/unwind.rs:17
No locals.
#47 rayon_core::join::join_context::{{closure}}<closure-0,closure-1,core::result::Result<(), anyhow::Error>,core::result::Result<(), anyhow::Error>> (worker_thread=0x7f28fdbf1980, injected=false)
    at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/join/mod.rs:141
        job_b_ref = rayon_core::job::JobRef {pointer: 0x0, execute_fn: 0x0}
        job_b = rayon_core::job::StackJob<rayon_core::latch::SpinLatch, closure-0, core::result::Result<(), anyhow::Error>> {latch: rayon_core::latch::SpinLatch {core_latch: rayon_core::latch::CoreLatch {state: core::sync::atomic::AtomicUsize {v: core::cell::UnsafeCell<usize> {value: 0}}}, registry: 0x7f28fdbf1ab0, target_worker_index: 6, cross: false}, func: core::cell::UnsafeCell<core::option::Option<closure-0>> {value: core::option::Option<closure-0>::None}, result: core::cell::UnsafeCell<rayon_core::job::JobResult<core::result::Result<(), anyhow::Error>>> {value: rayon_core::job::JobResult<core::result::Result<(), anyhow::Error>>::None}}
        oper_b = rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-1 (0x7f28fdbf0a88, 0x7f28fdbf0ae8, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x7f28ade01b00, done: 0x7f28ade01ae8, iter: 0x7f28ade01be0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x7f28a0007480}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x7f28ade01c68, reduce_op: 0x7f28ade01c68, full: 0x7f28ade01c60}, init: 0x7f28ade01ce0, map_op: 0x7f28ade01ce8})
        oper_a = rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x7f28fdbf0a88, 0x7f28fdbf0ae8, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x7f28ade01b00, done: 0x7f28ade01ae8, iter: 0x7f28ade01be0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x7f28a0007480}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x7f28ade01c68, reduce_op: 0x7f28ade01c68, full: 0x7f28ade01c60}, init: 0x7f28ade01ce0, map_op: 0x7f28ade01ce8})
        job_b = <error reading variable job_b (Cannot access memory at address 0x50)>
        job_b_ref = rayon_core::job::JobRef {pointer: 0x0, execute_fn: 0x0}
        status_a = <error reading variable status_a (Cannot access memory at address 0x0)>
        v = <error reading variable v (Cannot access memory at address 0x0)>
        result_a = <error reading variable result_a (Cannot access memory at address 0x0)>
        job = rayon_core::job::JobRef {pointer: 0x0, execute_fn: 0x0}
        result_b = <error reading variable result_b (Cannot access memory at address 0x0)>
        err = core::any::Box<Any, alloc::alloc::Global> {pointer: 0x0, vtable: 0x0}
#48 rayon_core::registry::in_worker<closure-0,(core::result::Result<(), anyhow::Error>, core::result::Result<(), anyhow::Error>)> (op=...)
    at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/registry.rs:875
        owner_thread = 0x7f28fdbf1980
#49 0x00007f28c4375ac8 in rayon_core::join::join_context<closure-0,closure-1,core::result::Result<(), anyhow::Error>,core::result::Result<(), anyhow::Error>> (oper_a=..., oper_b=...)
    at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/join/mod.rs:132
No locals.
#50 rayon::iter::plumbing::bridge_unindexed_producer_consumer<rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>>,rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1>> (migrated=<optimized out>, splitter=..., producer=..., consumer=...)
    at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-1.5.1/src/iter/plumbing/mod.rs:473
        bridge = 0x0
        left_consumer = rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}
        reducer = rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}
        right_consumer = rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}
        left_producer = rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x7f28ade01b00, done: 0x0, iter: 0x7f28c41dd764, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: (crossbeam_deque::deque::Flavor::Lifo | unknown: 0x60)}}
        right_producer = rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x7f28ade01b00, done: 0x0, iter: 0x7f28c41dd764, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: (crossbeam_deque::deque::Flavor::Lifo | unknown: 0x60)}}
#51 0x00007f28c4343594 in rayon::iter::plumbing::bridge_unindexed_producer_consumer::{{closure}}<rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>>,rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1>> (context=...)
    at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-1.5.1/src/iter/plumbing/mod.rs:474
        bridge = <optimized out>
        splitter = rayon::iter::plumbing::Splitter {splits: <optimized out>}
        left_producer = rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}
        left_consumer = rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}
#52 rayon_core::join::join_context::call_a::{{closure}}<core::result::Result<(), anyhow::Error>,closure-0> () at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/join/mod.rs:124
        f = rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0})
        injected = <optimized out>
#53 std::panic::{{impl}}::call_once<core::result::Result<(), anyhow::Error>,closure-0> (self=..., _args=<optimized out>) at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panic.rs:347
No locals.
#54 std::panicking::try::do_call<std::panic::AssertUnwindSafe<closure-0>,core::result::Result<(), anyhow::Error>> (data=<optimized out>)
    at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panicking.rs:401
        f = std::panic::AssertUnwindSafe<closure-0> (rayon_core::join::join_context::call_a::closure-0 (rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitCons[I]--Type <RET> for more, q to quit, c to continue without paging--
umer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}), false))
        data = <optimized out>
        data = <optimized out>
        data = <optimized out>
        data = <optimized out>
        f = std::panic::AssertUnwindSafe<closure-0> (rayon_core::join::join_context::call_a::closure-0 (rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}), false))
#55 std::panicking::try<core::result::Result<(), anyhow::Error>,std::panic::AssertUnwindSafe<closure-0>> (f=...) at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panicking.rs:365
        data_ptr = <optimized out>
        data = std::panicking::try::Data<std::panic::AssertUnwindSafe<closure-0>, core::result::Result<(), anyhow::Error>> {f: core::mem::manually_drop::ManuallyDrop<std::panic::AssertUnwindSafe<closure-0>> {value: std::panic::AssertUnwindSafe<closure-0> (rayon_core::join::join_context::call_a::closure-0 (rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}), false))}, r: core::mem::manually_drop::ManuallyDrop<core::result::Result<(), anyhow::Error>> {value: core::result::Result<(), anyhow::Error>::Ok(())}, p: core::mem::manually_drop::ManuallyDrop<alloc::boxed::Box<Any, alloc::alloc::Global>> {value: core::any::Box<Any, alloc::alloc::Global> {pointer: 0x0, vtable: 0x0}}}
        data = <error reading variable data (Cannot access memory at address 0x0)>
        data_ptr = <optimized out>
#56 std::panic::catch_unwind<std::panic::AssertUnwindSafe<closure-0>,core::result::Result<(), anyhow::Error>> (f=...) at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panic.rs:434
No locals.
#57 rayon_core::unwind::halt_unwinding<closure-0,core::result::Result<(), anyhow::Error>> (func=...) at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/unwind.rs:17
No locals.
#58 rayon_core::join::join_context::{{closure}}<closure-0,closure-1,core::result::Result<(), anyhow::Error>,core::result::Result<(), anyhow::Error>> (worker_thread=0x7f28fdbf1980, injected=false)
    at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/join/mod.rs:141
        job_b_ref = rayon_core::job::JobRef {pointer: 0x0, execute_fn: 0x0}
        job_b = rayon_core::job::StackJob<rayon_core::latch::SpinLatch, closure-0, core::result::Result<(), anyhow::Error>> {latch: rayon_core::latch::SpinLatch {core_latch: rayon_core::latch::CoreLatch {state: core::sync::atomic::AtomicUsize {v: core::cell::UnsafeCell<usize> {value: 0}}}, registry: 0x7f28fdbf1ab0, target_worker_index: 6, cross: false}, func: core::cell::UnsafeCell<core::option::Option<closure-0>> {value: core::option::Option<closure-0>::None}, result: core::cell::UnsafeCell<rayon_core::job::JobResult<core::result::Result<(), anyhow::Error>>> {value: rayon_core::job::JobResult<core::result::Result<(), anyhow::Error>>::None}}
        oper_b = rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-1 (0x7f28fdbf0e78, 0x7f28fdbf0ed8, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x7f28ade01b00, done: 0x7f28ade01ae8, iter: 0x7f28ade01be0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x7f28a0007480}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x7f28ade01c68, reduce_op: 0x7f28ade01c68, full: 0x7f28ade01c60}, init: 0x7f28ade01ce0, map_op: 0x7f28ade01ce8})
        oper_a = rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x7f28fdbf0e78, 0x7f28fdbf0ed8, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x7f28ade01b00, done: 0x7f28ade01ae8, iter: 0x7f28ade01be0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x7f28a0007480}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x7f28ade01c68, reduce_op: 0x7f28ade01c68, full: 0x7f28ade01c60}, init: 0x7f28ade01ce0, map_op: 0x7f28ade01ce8})
        job_b = <error reading variable job_b (Cannot access memory at address 0x50)>
        job_b_ref = rayon_core::job::JobRef {pointer: 0x0, execute_fn: 0x0}
        status_a = <error reading variable status_a (Cannot access memory at address 0x0)>
        v = <error reading variable v (Cannot access memory at address 0x0)>
        result_a = <error reading variable result_a (Cannot access memory at address 0x0)>
        job = rayon_core::job::JobRef {pointer: 0x0, execute_fn: 0x0}
        result_b = <error reading variable result_b (Cannot access memory at address 0x0)>
        err = core::any::Box<Any, alloc::alloc::Global> {pointer: 0x0, vtable: 0x0}
#59 rayon_core::registry::in_worker<closure-0,(core::result::Result<(), anyhow::Error>, core::result::Result<(), anyhow::Error>)> (op=...)
    at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/registry.rs:875
        owner_thread = 0x7f28fdbf1980
#60 0x00007f28c4375ac8 in rayon_core::join::join_context<closure-0,closure-1,core::result::Result<(), anyhow::Error>,core::result::Result<(), anyhow::Error>> (oper_a=..., oper_b=...)
    at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/join/mod.rs:132
No locals.
#61 rayon::iter::plumbing::bridge_unindexed_producer_consumer<rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>>,rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1>> (migrated=<optimized out>, splitter=..., producer=..., consumer=...)
    at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-1.5.1/src/iter/plumbing/mod.rs:473
        bridge = 0x7f2912b9919e <_int_malloc+3374>
        left_consumer = rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}
        reducer = rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}
        right_consumer = rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}
        left_producer = rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x7f28ade01b00, done: 0x0, iter: 0x7f28c41dd764, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: (crossbeam_deque::deque::Flavor::Lifo | unknown: 0x60)}}
        right_producer = rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x7f28ade01b00, done: 0x0, iter: 0x7f28c41dd764, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: (crossbeam_deque::deque::Flavor::Lifo | unknown: 0x60)}}
#62 0x00007f28c4343594 in rayon::iter::plumbing::bridge_unindexed_producer_consumer::{{closure}}<rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>>,rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1>> (context=...)
[I]--Type <RET> for more, q to quit, c to continue without paging--
    at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-1.5.1/src/iter/plumbing/mod.rs:474
        bridge = <optimized out>
        splitter = rayon::iter::plumbing::Splitter {splits: <optimized out>}
        left_producer = rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}
        left_consumer = rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}
#63 rayon_core::join::join_context::call_a::{{closure}}<core::result::Result<(), anyhow::Error>,closure-0> () at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/join/mod.rs:124
        f = rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0})
        injected = <optimized out>
#64 std::panic::{{impl}}::call_once<core::result::Result<(), anyhow::Error>,closure-0> (self=..., _args=<optimized out>) at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panic.rs:347
No locals.
#65 std::panicking::try::do_call<std::panic::AssertUnwindSafe<closure-0>,core::result::Result<(), anyhow::Error>> (data=<optimized out>)
    at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panicking.rs:401
        f = std::panic::AssertUnwindSafe<closure-0> (rayon_core::join::join_context::call_a::closure-0 (rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}), false))
        data = <optimized out>
        data = <optimized out>
        data = <optimized out>
        data = <optimized out>
        f = std::panic::AssertUnwindSafe<closure-0> (rayon_core::join::join_context::call_a::closure-0 (rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}), false))
#66 std::panicking::try<core::result::Result<(), anyhow::Error>,std::panic::AssertUnwindSafe<closure-0>> (f=...) at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panicking.rs:365
        data_ptr = <optimized out>
        data = std::panicking::try::Data<std::panic::AssertUnwindSafe<closure-0>, core::result::Result<(), anyhow::Error>> {f: core::mem::manually_drop::ManuallyDrop<std::panic::AssertUnwindSafe<closure-0>> {value: std::panic::AssertUnwindSafe<closure-0> (rayon_core::join::join_context::call_a::closure-0 (rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}), false))}, r: core::mem::manually_drop::ManuallyDrop<core::result::Result<(), anyhow::Error>> {value: core::result::Result<(), anyhow::Error>::Ok(())}, p: core::mem::manually_drop::ManuallyDrop<alloc::boxed::Box<Any, alloc::alloc::Global>> {value: core::any::Box<Any, alloc::alloc::Global> {pointer: 0x0, vtable: 0x0}}}
        data = <error reading variable data (Cannot access memory at address 0x0)>
        data_ptr = <optimized out>
#67 std::panic::catch_unwind<std::panic::AssertUnwindSafe<closure-0>,core::result::Result<(), anyhow::Error>> (f=...) at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panic.rs:434
No locals.
#68 rayon_core::unwind::halt_unwinding<closure-0,core::result::Result<(), anyhow::Error>> (func=...) at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/unwind.rs:17
No locals.
#69 rayon_core::join::join_context::{{closure}}<closure-0,closure-1,core::result::Result<(), anyhow::Error>,core::result::Result<(), anyhow::Error>> (worker_thread=0x7f28fdbf1980, injected=false)
    at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/join/mod.rs:141
        job_b_ref = rayon_core::job::JobRef {pointer: 0x0, execute_fn: 0x0}
        job_b = rayon_core::job::StackJob<rayon_core::latch::SpinLatch, closure-0, core::result::Result<(), anyhow::Error>> {latch: rayon_core::latch::SpinLatch {core_latch: rayon_core::latch::CoreLatch {state: core::sync::atomic::AtomicUsize {v: core::cell::UnsafeCell<usize> {value: 0}}}, registry: 0x7f28fdbf1ab0, target_worker_index: 6, cross: false}, func: core::cell::UnsafeCell<core::option::Option<closure-0>> {value: core::option::Option<closure-0>::None}, result: core::cell::UnsafeCell<rayon_core::job::JobResult<core::result::Result<(), anyhow::Error>>> {value: rayon_core::job::JobResult<core::result::Result<(), anyhow::Error>>::None}}
        oper_b = rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-1 (0x7f28fdbf1268, 0x7f28fdbf12c8, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x7f28ade01b00, done: 0x7f28ade01ae8, iter: 0x7f28ade01be0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x7f28a0007480}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x7f28ade01c68, reduce_op: 0x7f28ade01c68, full: 0x7f28ade01c60}, init: 0x7f28ade01ce0, map_op: 0x7f28ade01ce8})
        oper_a = rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x7f28fdbf1268, 0x7f28fdbf12c8, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x7f28ade01b00, done: 0x7f28ade01ae8, iter: 0x7f28ade01be0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x7f28a0007480}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x7f28ade01c68, reduce_op: 0x7f28ade01c68, full: 0x7f28ade01c60}, init: 0x7f28ade01ce0, map_op: 0x7f28ade01ce8})
        job_b = <error reading variable job_b (Cannot access memory at address 0x50)>
        job_b_ref = rayon_core::job::JobRef {pointer: 0x0, execute_fn: 0x0}
        status_a = <error reading variable status_a (Cannot access memory at address 0x0)>
        v = <error reading variable v (Cannot access memory at address 0x0)>
        result_a = <error reading variable result_a (Cannot access memory at address 0x0)>
        job = rayon_core::job::JobRef {pointer: 0x0, execute_fn: 0x0}
        result_b = <error reading variable result_b (Cannot access memory at address 0x0)>
        err = core::any::Box<Any, alloc::alloc::Global> {pointer: 0x0, vtable: 0x0}
[I]--Type <RET> for more, q to quit, c to continue without paging--c
#70 rayon_core::registry::in_worker<closure-0,(core::result::Result<(), anyhow::Error>, core::result::Result<(), anyhow::Error>)> (op=...) at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/registry.rs:875
        owner_thread = 0x7f28fdbf1980
#71 0x00007f28c4375ac8 in rayon_core::join::join_context<closure-0,closure-1,core::result::Result<(), anyhow::Error>,core::result::Result<(), anyhow::Error>> (oper_a=..., oper_b=...) at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/join/mod.rs:132
No locals.
#72 rayon::iter::plumbing::bridge_unindexed_producer_consumer<rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>>,rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1>> (migrated=<optimized out>, splitter=..., producer=..., consumer=...) at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-1.5.1/src/iter/plumbing/mod.rs:473
        bridge = 0x0
        left_consumer = rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}
        reducer = rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}
        right_consumer = rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}
        left_producer = rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x7f28ade01b00, done: 0x0, iter: 0x7f28c41dd764, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: (crossbeam_deque::deque::Flavor::Lifo | unknown: 0x60)}}
        right_producer = rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x7f28ade01b00, done: 0x0, iter: 0x7f28c41dd764, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: (crossbeam_deque::deque::Flavor::Lifo | unknown: 0x60)}}
#73 0x00007f28c431fe03 in rayon::iter::plumbing::bridge_unindexed_producer_consumer::{{closure}}<rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>>,rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1>> (context=...) at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-1.5.1/src/iter/plumbing/mod.rs:474
        bridge = <optimized out>
        splitter = rayon::iter::plumbing::Splitter {splits: <optimized out>}
        left_producer = rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}
        left_consumer = rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}
#74 rayon_core::join::join_context::call_a::{{closure}}<core::result::Result<(), anyhow::Error>,closure-0> () at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/join/mod.rs:124
        f = rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0})
        injected = <optimized out>
#75 std::panic::{{impl}}::call_once<core::result::Result<(), anyhow::Error>,closure-0> (self=..., _args=<optimized out>) at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panic.rs:347
No locals.
#76 std::panicking::try::do_call<std::panic::AssertUnwindSafe<closure-0>,core::result::Result<(), anyhow::Error>> (data=<optimized out>) at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panicking.rs:401
        f = std::panic::AssertUnwindSafe<closure-0> (rayon_core::join::join_context::call_a::closure-0 (rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}), false))
        data = <optimized out>
        data = <optimized out>
        data = <optimized out>
        data = <optimized out>
        f = std::panic::AssertUnwindSafe<closure-0> (rayon_core::join::join_context::call_a::closure-0 (rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}), false))
#77 std::panicking::try<core::result::Result<(), anyhow::Error>,std::panic::AssertUnwindSafe<closure-0>> (f=...) at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panicking.rs:365
        data_ptr = <optimized out>
        data = std::panicking::try::Data<std::panic::AssertUnwindSafe<closure-0>, core::result::Result<(), anyhow::Error>> {f: core::mem::manually_drop::ManuallyDrop<std::panic::AssertUnwindSafe<closure-0>> {value: std::panic::AssertUnwindSafe<closure-0> (rayon_core::join::join_context::call_a::closure-0 (rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}), false))}, r: core::mem::manually_drop::ManuallyDrop<core::result::Result<(), anyhow::Error>> {value: core::result::Result<(), anyhow::Error>::Ok(())}, p: core::mem::manually_drop::ManuallyDrop<alloc::boxed::Box<Any, alloc::alloc::Global>> {value: core::any::Box<Any, alloc::alloc::Global> {pointer: 0x0, vtable: 0x0}}}
        data = <error reading variable data (Cannot access memory at address 0x0)>
        data_ptr = <optimized out>
#78 std::panic::catch_unwind<std::panic::AssertUnwindSafe<closure-0>,core::result::Result<(), anyhow::Error>> (f=...) at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panic.rs:434
No locals.
#79 rayon_core::unwind::halt_unwinding<closure-0,core::result::Result<(), anyhow::Error>> (func=...) at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/unwind.rs:17
No locals.
#80 rayon_core::join::join_context::{{closure}}<closure-0,closure-1,core::result::Result<(), anyhow::Error>,core::result::Result<(), anyhow::Error>> (worker_thread=0x7f28fdbf1980, injected=true) at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/join/mod.rs:141
        job_b_ref = rayon_core::job::JobRef {pointer: 0x0, execute_fn: 0x0}
        job_b = rayon_core::job::StackJob<rayon_core::latch::SpinLatch, closure-0, core::result::Result<(), anyhow::Error>> {latch: rayon_core::latch::SpinLatch {core_latch: rayon_core::latch::CoreLatch {state: core::sync::atomic::AtomicUsize {v: core::cell::UnsafeCell<usize> {value: 0}}}, registry: 0x7f28fdbf1ab0, target_worker_index: 6, cross: false}, func: core::cell::UnsafeCell<core::option::Option<closure-0>> {value: core::option::Option<closure-0>::None}, result: core::cell::UnsafeCell<rayon_core::job::JobResult<core::result::Result<(), anyhow::Error>>> {value: rayon_core::job::JobResult<core::result::Result<(), anyhow::Error>>::None}}
        oper_b = rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-1 (0x7f28ade01998, 0x7f28ade019f8, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x7f28ade01b00, done: 0x7f28ade01ae8, iter: 0x7f28ade01be0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x7f28a0007480}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x7f28ade01c68, reduce_op: 0x7f28ade01c68, full: 0x7f28ade01c60}, init: 0x7f28ade01ce0, map_op: 0x7f28ade01ce8})
        oper_a = rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x7f28ade01998, 0x7f28ade019f8, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x7f28ade01b00, done: 0x7f28ade01ae8, iter: 0x7f28ade01be0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x7f28a0007480}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x7f28ade01c68, reduce_op: 0x7f28ade01c68, full: 0x7f28ade01c60}, init: 0x7f28ade01ce0, map_op: 0x7f28ade01ce8})
        job_b = <error reading variable job_b (Cannot access memory at address 0x50)>
        job_b_ref = rayon_core::job::JobRef {pointer: 0x0, execute_fn: 0x0}
        status_a = <error reading variable status_a (Cannot access memory at address 0x0)>
        v = <error reading variable v (Cannot access memory at address 0x0)>
        result_a = <error reading variable result_a (Cannot access memory at address 0x0)>
        job = rayon_core::job::JobRef {pointer: 0x0, execute_fn: 0x0}
        result_b = <error reading variable result_b (Cannot access memory at address 0x0)>
        err = core::any::Box<Any, alloc::alloc::Global> {pointer: 0x0, vtable: 0x0}
#81 rayon_core::registry::{{impl}}::in_worker_cold::{{closure}}::{{closure}}<closure-0,(core::result::Result<(), anyhow::Error>, core::result::Result<(), anyhow::Error>)> (injected=true) at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/registry.rs:465
        worker_thread = 0x7f28fdbf1980
        op = rayon_core::join::join_context::closure-0 (rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-1 (0x7f28ade01998, 0x7f28ade019f8, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x7f28ade01b00, done: 0x7f28ade01ae8, iter: 0x7f28ade01be0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x7f28a0007480}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x7f28ade01c68, reduce_op: 0x7f28ade01c68, full: 0x7f28ade01c60}, init: 0x7f28ade01ce0, map_op: 0x7f28ade01ce8}), rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x7f28ade01998, 0x7f28ade019f8, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x7f28ade01b00, done: 0x7f28ade01ae8, iter: 0x7f28ade01be0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x7f28a0007480}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x7f28ade01c68, reduce_op: 0x7f28ade01c68, full: 0x7f28ade01c60}, init: 0x7f28ade01ce0, map_op: 0x7f28ade01ce8}))
        worker_thread = <optimized out>
#82 rayon_core::job::{{impl}}::execute::call::{{closure}}<(core::result::Result<(), anyhow::Error>, core::result::Result<(), anyhow::Error>),closure-0> () at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/job.rs:113
        func = rayon_core::registry::{{impl}}::in_worker_cold::{{closure}}::closure-0 (rayon_core::join::join_context::closure-0 (rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-1 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}), rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0})))
#83 std::panic::{{impl}}::call_once<(core::result::Result<(), anyhow::Error>, core::result::Result<(), anyhow::Error>),closure-0> (self=..., _args=<optimized out>) at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panic.rs:347
No locals.
#84 0x00007f28c431f5af in std::panicking::try::do_call<std::panic::AssertUnwindSafe<closure-0>,(core::result::Result<(), anyhow::Error>, core::result::Result<(), anyhow::Error>)> (data=<optimized out>) at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panicking.rs:401
        f = std::panic::AssertUnwindSafe<closure-0> (rayon_core::job::{{impl}}::execute::call::closure-0 (rayon_core::registry::{{impl}}::in_worker_cold::{{closure}}::closure-0 (rayon_core::join::join_context::closure-0 (rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-1 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}), rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0})))))
        data = <optimized out>
        data = <optimized out>
        data = <optimized out>
        data = <optimized out>
        f = std::panic::AssertUnwindSafe<closure-0> (rayon_core::job::{{impl}}::execute::call::closure-0 (rayon_core::registry::{{impl}}::in_worker_cold::{{closure}}::closure-0 (rayon_core::join::join_context::closure-0 (rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-1 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}), rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0})))))
#85 std::panicking::try<(core::result::Result<(), anyhow::Error>, core::result::Result<(), anyhow::Error>),std::panic::AssertUnwindSafe<closure-0>> (f=...) at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panicking.rs:365
        data_ptr = <optimized out>
        data = std::panicking::try::Data<std::panic::AssertUnwindSafe<closure-0>, (core::result::Result<(), anyhow::Error>, core::result::Result<(), anyhow::Error>)> {f: core::mem::manually_drop::ManuallyDrop<std::panic::AssertUnwindSafe<closure-0>> {value: std::panic::AssertUnwindSafe<closure-0> (rayon_core::job::{{impl}}::execute::call::closure-0 (rayon_core::registry::{{impl}}::in_worker_cold::{{closure}}::closure-0 (rayon_core::join::join_context::closure-0 (rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-1 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}), rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0})))))}, r: core::mem::manually_drop::ManuallyDrop<(core::result::Result<(), anyhow::Error>, core::result::Result<(), anyhow::Error>)> {value: (core::result::Result<(), anyhow::Error>::Ok(()), core::result::Result<(), anyhow::Error>::Ok(()))}, p: core::mem::manually_drop::ManuallyDrop<alloc::boxed::Box<Any, alloc::alloc::Global>> {value: core::any::Box<Any, alloc::alloc::Global> {pointer: 0x0, vtable: 0x0}}}
        data = <error reading variable data (Cannot access memory at address 0x0)>
        data_ptr = <optimized out>
#86 std::panic::catch_unwind<std::panic::AssertUnwindSafe<closure-0>,(core::result::Result<(), anyhow::Error>, core::result::Result<(), anyhow::Error>)> (f=...) at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panic.rs:434
No locals.
#87 rayon_core::unwind::halt_unwinding<closure-0,(core::result::Result<(), anyhow::Error>, core::result::Result<(), anyhow::Error>)> (func=...) at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/unwind.rs:17
No locals.
#88 rayon_core::job::{{impl}}::execute<&rayon_core::latch::LockLatch,closure-0,(core::result::Result<(), anyhow::Error>, core::result::Result<(), anyhow::Error>)> (this=0x7f28ade01518) at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/job.rs:119
        func = rayon_core::registry::{{impl}}::in_worker_cold::{{closure}}::closure-0 (rayon_core::join::join_context::closure-0 (rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-1 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}), rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0})))
        abort = rayon_core::unwind::AbortIfPanic
        this = 0x7f28ade01518
#89 0x00007f28c42b1d21 in rayon_core::job::JobRef::execute (self=<optimized out>) at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/job.rs:59
No locals.
#90 rayon_core::registry::WorkerThread::execute (self=<optimized out>, job=...) at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/registry.rs:749
No locals.
#91 rayon_core::registry::WorkerThread::wait_until_cold (self=<optimized out>, latch=<optimized out>) at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/registry.rs:726
        job = rayon_core::job::JobRef {pointer: 0x0, execute_fn: 0x0}
        idle_state = rayon_core::sleep::IdleState {worker_index: 6, rounds: 0, jobs_counter: rayon_core::sleep::counters::JobsEventCounter (18446744073709551615)}
        abort_guard = rayon_core::unwind::AbortIfPanic
#92 0x00007f28c4393bfd in rayon_core::registry::WorkerThread::wait_until<rayon_core::latch::CountLatch> (self=0x7f28fdbf1980, latch=<optimized out>) at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/registry.rs:700
        latch = 0x7f28c3fb7e90 <H5D__free_chunk_info>
        latch = <optimized out>
#93 rayon_core::registry::main_loop (registry=..., index=6, worker=...) at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/registry.rs:833
        my_terminate_latch = 0x7f28c3fb7e90 <H5D__free_chunk_info>
        abort_guard = rayon_core::unwind::AbortIfPanic
        worker_thread = 0x7f28fdbf1980
        worker_thread = <optimized out>
        abort_guard = rayon_core::unwind::AbortIfPanic
        handler = <optimized out>
        registry = alloc::sync::Arc<rayon_core::registry::Registry> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<rayon_core::registry::Registry>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<rayon_core::registry::Registry>>}
        err = core::any::Box<Any, alloc::alloc::Global> {pointer: 0x0, vtable: 0x0}
        my_terminate_latch = <optimized out>
        handler = <optimized out>
        registry = alloc::sync::Arc<rayon_core::registry::Registry> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<rayon_core::registry::Registry>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<rayon_core::registry::Registry>>}
        err = core::any::Box<Any, alloc::alloc::Global> {pointer: 0x0, vtable: 0x0}
#94 rayon_core::registry::ThreadBuilder::run (self=...) at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/registry.rs:55
No locals.
#95 0x00007f28c4398615 in rayon_core::registry::{{impl}}::spawn::{{closure}} () at /home/hendrik/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.1/src/registry.rs:100
        thread = <error reading variable thread (Cannot access memory at address 0x0)>
#96 std::sys_common::backtrace::__rust_begin_short_backtrace<closure-0,()> (f=...) at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/sys_common/backtrace.rs:125
No locals.
#97 0x00007f28c439821b in std::thread::{{impl}}::spawn_unchecked::{{closure}}::{{closure}}<closure-0,()> () at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/thread/mod.rs:481
        f = <error reading variable f (Cannot access memory at address 0x0)>
#98 std::panic::{{impl}}::call_once<(),closure-0> (self=..., _args=<optimized out>) at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panic.rs:347
No locals.
#99 std::panicking::try::do_call<std::panic::AssertUnwindSafe<closure-0>,()> (data=<optimized out>) at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panicking.rs:401
        f = std::panic::AssertUnwindSafe<closure-0> (rayon_core::join::join_context::call_a::closure-0 (rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}), false))
        data = <optimized out>
        data = <optimized out>
        data = <optimized out>
        data = <optimized out>
        f = std::panic::AssertUnwindSafe<closure-0> (rayon_core::join::join_context::call_a::closure-0 (rayon::iter::plumbing::bridge_unindexed_producer_consumer::closure-0 (0x0, 0x0, rayon::iter::par_bridge::IterParallelProducer<alloc::collections::vec_deque::drain::Drain<usize>> {split_count: 0x0, done: 0x0, iter: 0x0, items: crossbeam_deque::deque::Stealer<usize> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>> {pointer: 0x0}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<usize>>>>}, flavor: crossbeam_deque::deque::Flavor::Fifo}}, rayon::iter::map_with::MapInitConsumer<rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()>, closure-0, closure-1> {base: rayon::iter::try_reduce::TryReduceConsumer<fn((), ()) -> core::result::Result<(), anyhow::Error>, fn()> {identity: 0x0, reduce_op: 0x0, full: 0x0}, init: 0x0, map_op: 0x0}), false))
#100 std::panicking::try<(),std::panic::AssertUnwindSafe<closure-0>> (f=...) at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panicking.rs:365
        data_ptr = <optimized out>
        data = <error reading variable data (Cannot access memory at address 0x0)>
        data = <error reading variable data (Cannot access memory at address 0x0)>
        data_ptr = <optimized out>
#101 std::panic::catch_unwind<std::panic::AssertUnwindSafe<closure-0>,()> (f=<error reading variable: Cannot access memory at address 0x0>) at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/panic.rs:434
No locals.
#102 std::thread::{{impl}}::spawn_unchecked::{{closure}}<closure-0,()> () at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/std/src/thread/mod.rs:480
        their_thread = std::thread::Thread {inner: alloc::sync::Arc<std::thread::Inner> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<std::thread::Inner>> {pointer: 0x7f28a0006b00}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<std::thread::Inner>>}}
        output_capture = core::option::Option<alloc::sync::Arc<std::sync::mutex::Mutex<alloc::vec::Vec<u8, alloc::alloc::Global>>>>::None
        f = rayon_core::registry::{{impl}}::spawn::closure-0 (rayon_core::registry::ThreadBuilder {name: core::option::Option<alloc::string::String>::None, stack_size: core::option::Option<usize>::None, worker: crossbeam_deque::deque::Worker<rayon_core::job::JobRef> {inner: alloc::sync::Arc<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<rayon_core::job::JobRef>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<rayon_core::job::JobRef>>>> {pointer: 0x7f28a0003c00}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<crossbeam_utils::cache_padded::CachePadded<crossbeam_deque::deque::Inner<rayon_core::job::JobRef>>>>}, buffer: core::cell::Cell<crossbeam_deque::deque::Buffer<rayon_core::job::JobRef>> {value: core::cell::UnsafeCell<crossbeam_deque::deque::Buffer<rayon_core::job::JobRef>> {value: crossbeam_deque::deque::Buffer<rayon_core::job::JobRef> {ptr: 0x7f28a0003790, cap: 64}}}, flavor: crossbeam_deque::deque::Flavor::Lifo, _marker: core::marker::PhantomData<*mut ()>}, registry: alloc::sync::Arc<rayon_core::registry::Registry> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<rayon_core::registry::Registry>> {pointer: 0x7f28a0005c00}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<rayon_core::registry::Registry>>}, index: 6})
        their_packet = alloc::sync::Arc<core::cell::UnsafeCell<core::option::Option<core::result::Result<(), alloc::boxed::Box<Any, alloc::alloc::Global>>>>> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<core::cell::UnsafeCell<core::option::Option<core::result::Result<(), alloc::boxed::Box<Any, alloc::alloc::Global>>>>>> {pointer: 0x7f28a0006b40}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<core::cell::UnsafeCell<core::option::Option<core::result::Result<(), alloc::boxed::Box<Any, alloc::alloc::Global>>>>>>}
        name = <optimized out>
        try_result = <error reading variable try_result (Cannot access memory at address 0x0)>
#103 core::ops::function::FnOnce::call_once<closure-0,()> () at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/core/src/ops/function.rs:227
No locals.
#104 0x00007f28c43def77 in alloc::boxed::{{impl}}::call_once<(),FnOnce<()>,alloc::alloc::Global> () at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/alloc/src/boxed.rs:1575
No locals.
#105 alloc::boxed::{{impl}}::call_once<(),alloc::boxed::Box<FnOnce<()>, alloc::alloc::Global>,alloc::alloc::Global> () at /rustc/e4a60327063e82413eed50a10df3b7d19b77bda0/library/alloc/src/boxed.rs:1575
No locals.
#106 std::sys::unix::thread::{{impl}}::new::thread_start () at library/std/src/sys/unix/thread.rs:71
No locals.
#107 0x00007f2912af6299 in start_thread () from /lib64/libpthread.so.0
No symbol table info available.
#108 0x00007f2912c0e353 in clone () from /lib64/libc.so.6
No symbol table info available.
@aldanor
Copy link
Owner

aldanor commented Jun 10, 2021

Thanks for reporting - wonder if you could come up with a minimal example that crashes?

(looks like a double free, perhaps?)

@mulimoen
Copy link
Collaborator

What version of hdf5-c did you use? If its reproducible using the static build you could include the address sanitizer, see in the github actions run addr_san in #139 for this.

@Rikorose
Copy link
Contributor Author

@aldanor Yes I will try to provide a minimal example. A first guess would be due to calling rust via pyo3 wrapper (and only in release mode).

@mulimoen Do you mean libhdf5?
I use the fedora stable version:

$ dnf info hdf5-devel
Last metadata expiration check: 0:00:20 ago on Thu 10 Jun 2021 10:18:49 PM CEST.
Installed Packages
Name         : hdf5-devel
Version      : 1.10.6
Release      : 5.fc34

@Rikorose
Copy link
Contributor Author

Rikorose commented Jun 11, 2021

I think this bug is most likely due to PyO3 not cleaning up correctly. The current process hierarchy is:
Python --> PyO3 RustWrapper --> Rust Dataloader -> Submission thread -> Rayon parallel iterator (i.e. a rayon thread pool), which reads from hdf5. Rust dataloader holds hdf5 handles and passes them as immutable references to the rayon thread pool.

So I guess, PyO3 drops the Rust wrapper, but somehow the rayon thread pool lives on (maybe also the submission thread which holds the threadpool). This may result in a cleanup of the hdf5 handles while the thread pool still tries to access them. Stopping the Submission thread and thus also the rayon thread pool explicitly in python via atexit.register(), solves the issue.

@mulimoen
Copy link
Collaborator

mulimoen commented Jun 11, 2021

holds hdf5 handles and passes them as immutable references to the rayon thread pool

Is this a &Handle or a Handle? The latter should be easier to use correctly, and should prevent the object from being doubly closed. Each Handle, whether it be a File, a Dataset or something else is rather like an Arc on the libhdf5 side of things.

@Rikorose
Copy link
Contributor Author

Sorry for the late reply. My data structure is as follows:

struct Dataset {
    hdf5_handles: Vec<hdf5::File>,
}
struct DataLoader {
  ds: Arc<Dataset>,
}
impl DataLoader {
// ...
    fn start_worker(&mut self) -> std::thread::JoinHandle<()> {
        let ds = Arc::clone(self.ds);
        let thread_handle = std::thread::spawn(move || {
            0..10.par_bridge().for_each( || {  // par_bridge (rayon) iterates in parallel over range and results in parallel hdf5 access
                let data = ds.read_from_hdf5();
                // Send via some channel; closing the channel will stop this parallel loop
            });
        });
        thread_handle
    }
    fn drop(&mut self) {
        // Close the data output channel so that the rayon parallel iter stops
        // And join the worker thread afterwards
    }
}

When calling via pyo3, I think drop() is not called and the thread lives on until the segfault happens. Using pythons atexit() I can make sure that rayon threadpool and worker thread are joined, which resolves this segfault issue.
I guess this issue is on the PyO3 side not on HDF5.

@mulimoen
Copy link
Collaborator

This is an ugly issue, I can replicate with (no python):

use hdf5::*;

fn main() {
    let file = File::create("file.h5").unwrap();
    let ds = file.new_dataset::<i32>().create("ds").unwrap();

    let h = std::thread::spawn(move || {
        std::mem::drop(ds);
    });
    // std::mem::drop(file);
    // h.join().unwrap();
}

I initially thought this was related to how we handle objects (see #139), but this made no difference. The fault happens when hdf5 is calling atexit (stdlib.h), invalidating all handles, but rust tries to clean up the (now gone) handle in the child thread on program exit. Thus the double free.

To fix this we can use H5dont_atexit on library initialisation. This usually guards against unclosed objects, but in Rust we guarantee closing objects with Drop.

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

Successfully merging a pull request may close this issue.

3 participants