id summary reporter owner description type status milestone component version severity resolution keywords cc 5143 segfaults in ordered_index christoph.kluge@… Joaquín M López Muñoz "Hi, we are suffering segfaults in ordered_index_node_impl::increment line 254 static void increment(pointer& x) { if(x->right()!=pointer(0)){ x=x->right(); while(x->left()!=pointer(0))x=x->left(); // XXX } else{ pointer y=x->parent(); while(x==y->right()){ x=y; y=y->parent(); } if(x->right()!=y)x=y; } } What, if x->left() becomes 0? Well, it does, over here! Shouldn't this read while(x!=pointer(0)&&x->left()!=pointer(0))x=x->left(); ? What is this line of code supposed to do anyway, other than uselessly consuming CPU time? Why not write x = 0; instead, if this was meant? ordered_index_node_impl_base::left and ordered_index_node_impl_base::right do not have any side-effects. By the way, for the classes ordered_index_node_std_base and ordered_index_node_compressed_base, I don't see any of the POD data members getting initialized. A user-provided constructor is not defined. From the C++ Standard, IIRC, POD data members are not initialized by the implicitly-generated constructor and therefore have indeterminate values. This also applies to recent versions of boost, the trunk included. The code doesn't appear to have changed here. To me this looks like this is working only by chance. Has anyone ever bothered to review this code? Cheers, Christoph " Bugs closed To Be Determined multi_index Boost 1.35.0 Problem invalid