khizmax/libcds

BronsonAVLTreeMap segfaults

bnicolae opened this issue · 2 comments

Here's a test program that reproduces this issue

#include <omp.h>

#include <vector>
#include <map>
#include <random>
#include <iostream>

#include <cds/init.h>
#include <cds/urcu/general_buffered.h>
#include <cds/container/bronson_avltree_map_rcu.h>

using namespace cds::container;
typedef cds::urcu::gc< cds::urcu::general_buffered<> > rcu_gpb;

typedef std::pair<int, int> intp_t;
static std::vector<intp_t> ref_vals;
static std::map<int, int> sorted_vals;
static const int N = 1000000;

using namespace cds::container;
typedef cds::urcu::gc< cds::urcu::general_buffered<> > rcu_gpb;

void create_reference(int n) {
    std::mt19937 rng(112233L);
    ref_vals.resize(n);
    sorted_vals.clear();
    int i = 0;
    while (i < n) {
        int val = rng();
        auto it = sorted_vals.find(val);
        if (it != sorted_vals.end())
            continue;
        auto p = std::make_pair(val, val + 1);
        sorted_vals.insert(it, p);
        ref_vals[i] = p;
        i++;
    }
    std::cout << "Init complete, max element: " << sorted_vals.rbegin()->first + 1 << std::endl;
}

int main() {
    cds::Initialize();
    rcu_gpb rcuGPB;

    BronsonAVLTreeMap<rcu_gpb, int, int> map;
    create_reference(N);
    int t = std::thread::hardware_concurrency();
    #pragma omp parallel num_threads(t)
    {
        cds::threading::Manager::attachThread();
        #pragma omp for
        for (int i = 0; i < N; i++)
            map.insert(ref_vals[i].first, ref_vals[i].second);
        cds::threading::Manager::detachThread();
    }
    cds::Terminate();
    return 0;
}

Please, try the following:

int main() {
    cds::Initialize();
    {    // ***** Added
       rcu_gpb rcuGPB;

       BronsonAVLTreeMap<rcu_gpb, int, int> map;
       create_reference(N);
       int t = std::thread::hardware_concurrency();
       #pragma omp parallel num_threads(t)
       {
           cds::threading::Manager::attachThread();
           #pragma omp for
           for (int i = 0; i < N; i++)
               map.insert(ref_vals[i].first, ref_vals[i].second);
           cds::threading::Manager::detachThread();
       }
    } // ****** Added
    cds::Terminate();
    return 0;
}

@khizmax this is not working for me, same issue. My compiler: g++ (GCC) 10.2.0 (on a Linux box). Here's a run with Valgrind:

==31840== Memcheck, a memory error detector
==31840== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==31840== Using Valgrind-3.16.1 and LibVEX; rerun with -h for copyright info
==31840== Command: ./basic_test
==31840== 
Init complete, max element: 2147482248
==31840== Invalid read of size 8
==31840==    at 0x10D7BA: cds::urcu::details::thread_data<cds::urcu::general_buffered_tag>* cds::threading::getRCU<cds::urcu::general_buffered_tag>() (in /home/masteroo/work/datastates/vskip/vskip-theta/basic_test)
==31840==    by 0x111F68: cds::urcu::details::gp_thread_gc<cds::urcu::general_buffered_tag>::get_thread_record() (in /home/masteroo/work/datastates/vskip/vskip-theta/basic_test)
==31840==    by 0x111EBD: cds::urcu::details::gp_thread_gc<cds::urcu::general_buffered_tag>::is_locked() (in /home/masteroo/work/datastates/vskip/vskip-theta/basic_test)
==31840==    by 0x110D8A: cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >::is_locked() (in /home/masteroo/work/datastates/vskip/vskip-theta/basic_test)
==31840==    by 0x10FEF3: cds::urcu::details::check_deadlock_policy<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, cds::opt::v::rcu_throw_deadlock>::check() (in /home/masteroo/work/datastates/vskip/vskip-theta/basic_test)
==31840==    by 0x113E05: void cds::container::BronsonAVLTreeMap<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int*, cds::container::bronson_avltree::details::make_map<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int, cds::container::bronson_avltree::traits>::traits>::do_extract_minmax<int* cds::container::BronsonAVLTreeMap<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int*, cds::container::bronson_avltree::details::make_map<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int, cds::container::bronson_avltree::traits>::traits>::do_extract_min<cds::container::BronsonAVLTreeMap<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int*, cds::container::bronson_avltree::details::make_map<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int, cds::container::bronson_avltree::traits>::traits>::extract_min()::{lambda(int const&)#1}>(cds::container::BronsonAVLTreeMap<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int*, cds::container::bronson_avltree::details::make_map<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int, cds::container::bronson_avltree::traits>::traits>::extract_min()::{lambda(int const&)#1})::{lambda(int const&, int*, cds::container::BronsonAVLTreeMap<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int*, cds::container::bronson_avltree::details::make_map<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int, cds::container::bronson_avltree::traits>::traits>::rcu_disposer&)#1}>(int, cds::container::BronsonAVLTreeMap<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int*, cds::container::bronson_avltree::details::make_map<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int, cds::container::bronson_avltree::traits>::traits>::extract_min()::{lambda(int const&)#1}) (in /home/masteroo/work/datastates/vskip/vskip-theta/basic_test)
==31840==    by 0x11300E: int* cds::container::BronsonAVLTreeMap<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int*, cds::container::bronson_avltree::details::make_map<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int, cds::container::bronson_avltree::traits>::traits>::do_extract_min<cds::container::BronsonAVLTreeMap<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int*, cds::container::bronson_avltree::details::make_map<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int, cds::container::bronson_avltree::traits>::traits>::extract_min()::{lambda(int const&)#1}>(cds::container::BronsonAVLTreeMap<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int*, cds::container::bronson_avltree::details::make_map<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int, cds::container::bronson_avltree::traits>::traits>::extract_min()::{lambda(int const&)#1}) (in /home/masteroo/work/datastates/vskip/vskip-theta/basic_test)
==31840==    by 0x111E5F: cds::container::BronsonAVLTreeMap<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int*, cds::container::bronson_avltree::details::make_map<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int, cds::container::bronson_avltree::traits>::traits>::extract_min() (in /home/masteroo/work/datastates/vskip/vskip-theta/basic_test)
==31840==    by 0x110D32: cds::container::BronsonAVLTreeMap<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int*, cds::container::bronson_avltree::details::make_map<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int, cds::container::bronson_avltree::traits>::traits>::clear() (in /home/masteroo/work/datastates/vskip/vskip-theta/basic_test)
==31840==    by 0x10FDE9: cds::container::BronsonAVLTreeMap<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int*, cds::container::bronson_avltree::details::make_map<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int, cds::container::bronson_avltree::traits>::traits>::unsafe_clear() (in /home/masteroo/work/datastates/vskip/vskip-theta/basic_test)
==31840==    by 0x10EEA5: cds::container::BronsonAVLTreeMap<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int*, cds::container::bronson_avltree::details::make_map<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int, cds::container::bronson_avltree::traits>::traits>::~BronsonAVLTreeMap() (in /home/masteroo/work/datastates/vskip/vskip-theta/basic_test)
==31840==    by 0x10E1C3: cds::container::BronsonAVLTreeMap<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int, cds::container::bronson_avltree::traits>::~BronsonAVLTreeMap() (in /home/masteroo/work/datastates/vskip/vskip-theta/basic_test)
==31840==  Address 0x8 is not stack'd, malloc'd or (recently) free'd
==31840== 
==31840== 
==31840== Process terminating with default action of signal 11 (SIGSEGV): dumping core
==31840==  Access not within mapped region at address 0x8
==31840==    at 0x10D7BA: cds::urcu::details::thread_data<cds::urcu::general_buffered_tag>* cds::threading::getRCU<cds::urcu::general_buffered_tag>() (in /home/masteroo/work/datastates/vskip/vskip-theta/basic_test)
==31840==    by 0x111F68: cds::urcu::details::gp_thread_gc<cds::urcu::general_buffered_tag>::get_thread_record() (in /home/masteroo/work/datastates/vskip/vskip-theta/basic_test)
==31840==    by 0x111EBD: cds::urcu::details::gp_thread_gc<cds::urcu::general_buffered_tag>::is_locked() (in /home/masteroo/work/datastates/vskip/vskip-theta/basic_test)
==31840==    by 0x110D8A: cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >::is_locked() (in /home/masteroo/work/datastates/vskip/vskip-theta/basic_test)
==31840==    by 0x10FEF3: cds::urcu::details::check_deadlock_policy<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, cds::opt::v::rcu_throw_deadlock>::check() (in /home/masteroo/work/datastates/vskip/vskip-theta/basic_test)
==31840==    by 0x113E05: void cds::container::BronsonAVLTreeMap<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int*, cds::container::bronson_avltree::details::make_map<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int, cds::container::bronson_avltree::traits>::traits>::do_extract_minmax<int* cds::container::BronsonAVLTreeMap<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int*, cds::container::bronson_avltree::details::make_map<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int, cds::container::bronson_avltree::traits>::traits>::do_extract_min<cds::container::BronsonAVLTreeMap<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int*, cds::container::bronson_avltree::details::make_map<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int, cds::container::bronson_avltree::traits>::traits>::extract_min()::{lambda(int const&)#1}>(cds::container::BronsonAVLTreeMap<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int*, cds::container::bronson_avltree::details::make_map<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int, cds::container::bronson_avltree::traits>::traits>::extract_min()::{lambda(int const&)#1})::{lambda(int const&, int*, cds::container::BronsonAVLTreeMap<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int*, cds::container::bronson_avltree::details::make_map<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int, cds::container::bronson_avltree::traits>::traits>::rcu_disposer&)#1}>(int, cds::container::BronsonAVLTreeMap<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int*, cds::container::bronson_avltree::details::make_map<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int, cds::container::bronson_avltree::traits>::traits>::extract_min()::{lambda(int const&)#1}) (in /home/masteroo/work/datastates/vskip/vskip-theta/basic_test)
==31840==    by 0x11300E: int* cds::container::BronsonAVLTreeMap<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int*, cds::container::bronson_avltree::details::make_map<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int, cds::container::bronson_avltree::traits>::traits>::do_extract_min<cds::container::BronsonAVLTreeMap<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int*, cds::container::bronson_avltree::details::make_map<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int, cds::container::bronson_avltree::traits>::traits>::extract_min()::{lambda(int const&)#1}>(cds::container::BronsonAVLTreeMap<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int*, cds::container::bronson_avltree::details::make_map<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int, cds::container::bronson_avltree::traits>::traits>::extract_min()::{lambda(int const&)#1}) (in /home/masteroo/work/datastates/vskip/vskip-theta/basic_test)
==31840==    by 0x111E5F: cds::container::BronsonAVLTreeMap<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int*, cds::container::bronson_avltree::details::make_map<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int, cds::container::bronson_avltree::traits>::traits>::extract_min() (in /home/masteroo/work/datastates/vskip/vskip-theta/basic_test)
==31840==    by 0x110D32: cds::container::BronsonAVLTreeMap<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int*, cds::container::bronson_avltree::details::make_map<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int, cds::container::bronson_avltree::traits>::traits>::clear() (in /home/masteroo/work/datastates/vskip/vskip-theta/basic_test)
==31840==    by 0x10FDE9: cds::container::BronsonAVLTreeMap<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int*, cds::container::bronson_avltree::details::make_map<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int, cds::container::bronson_avltree::traits>::traits>::unsafe_clear() (in /home/masteroo/work/datastates/vskip/vskip-theta/basic_test)
==31840==    by 0x10EEA5: cds::container::BronsonAVLTreeMap<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int*, cds::container::bronson_avltree::details::make_map<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int, cds::container::bronson_avltree::traits>::traits>::~BronsonAVLTreeMap() (in /home/masteroo/work/datastates/vskip/vskip-theta/basic_test)
==31840==    by 0x10E1C3: cds::container::BronsonAVLTreeMap<cds::urcu::gc<cds::urcu::general_buffered<cds::container::VyukovMPMCCycleQueue<cds::urcu::epoch_retired_ptr, cds::container::vyukov_queue::traits>, std::mutex, cds::backoff::exponential<cds::backoff::exponential_const_traits> > >, int, int, cds::container::bronson_avltree::traits>::~BronsonAVLTreeMap() (in /home/masteroo/work/datastates/vskip/vskip-theta/basic_test)
==31840==  If you believe this happened as a result of a stack
==31840==  overflow in your program's main thread (unlikely but
==31840==  possible), you can try to increase the size of the
==31840==  main thread stack using the --main-stacksize= flag.
==31840==  The main thread stack size used in this run was 8388608.
==31840== 
==31840== HEAP SUMMARY:
==31840==     in use at exit: 124,014,776 bytes in 3,000,022 blocks
==31840==   total heap usage: 3,000,033 allocs, 11 frees, 124,121,768 bytes allocated
==31840== 
==31840== LEAK SUMMARY:
==31840==    definitely lost: 0 bytes in 0 blocks
==31840==    indirectly lost: 0 bytes in 0 blocks
==31840==      possibly lost: 2,240 bytes in 7 blocks
==31840==    still reachable: 124,012,536 bytes in 3,000,015 blocks
==31840==         suppressed: 0 bytes in 0 blocks
==31840== Rerun with --leak-check=full to see details of leaked memory
==31840== 
==31840== For lists of detected and suppressed errors, rerun with: -s
==31840== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Segmentation fault (core dumped)