Hi, I have the following piece of code that is generating the above assertion. Could someone tell me what is going wrong: template <typename T> struct my_node_t : public avl_set_base_hook<> { my_node_t(T data): m_data(data) {} template <typename U> friend bool operator< (const my_node_t<U>& lhs, const my_node_t<U>& rhs) { return lhs.m_data < rhs.m_data; }; T m_data; }; typedef my_node_t<int> avlnode_t; typedef avltree<avlnode_t> avltree_t; struct args_t { unsigned int seed[MAX_THREADS]; vector<avlnode_t>* items; avltree_t* tree_ptr; thread_args_t(size_t num_threads, avltree_t* map, vector<avlnode_t>* init_vec, size_t num_entries, unsigned int s) { num_items = num_entries; tree_ptr = map; initial_items = init_vec; for (size_t i = 0; i < num_threads; ++i) { seed[i] = i + s; } for (int i = 0; i < 10; ++i) { initial_items->push_back(i * 100); } for (vector<avlnode_t>::iterator it = initial_items->begin(); it != initial_items->end(); ++it) { tree_ptr->insert_equal(*it); } } ~thread_args_t() { tree_ptr->clear(); delete tree_ptr; delete initial_items; } }; void worker(void* args_ptr) { args_t* args = static_cast<args_t*>(args_ptr); avltree_t* tree = args->tree_ptr; vector<avlnode_t>* values = args->initial_items; int index = 5; //generate_random<int>(my_seed, 0, num_items + 1))) avlnode_t& find_element = *(values->begin() + index); tree->insert_equal(find_element); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ <-raises exception } int main() { int num_threads = 1, num_entries = 10; vector<avlnode_t>* init_vec = new vector<avlnode_t>; avltree_t* tree = new avltree_t; args_t* args = new args_t(num_threads, tree, init_vec, num_entries); |