Boost logo

Boost Users :

From: Michal Simecek (simecek_at_[hidden])
Date: 2005-04-07 10:55:56


Hi,

compiling and linking the following program on a opteron with the following
command
and the operating system red hat 3 (current enterprise server version)

   gcc-3.2.2 -c -I. -I../source -I./boost_1_32_0 -O2 -m64 boosttest.cc -o
boosttest.o
   gcc-3.2.2 -m64 -o boosttest boosttest.o -lstdc++

will cause, that the program runs into an endles loop. I figured out, that
the
pointer in VIter which is compared when comparing VIter and VIterEnd is
damaged.
With a lot of differen gcc versions and also in 32 bit mode and with lower
optimization it works fine. The problem is, I have to run it also compiled
with
gcc 3.2.2.

Is it an optimization bug in the compiler or any mistake I made or a problem
in
the boost?
I was looking for a hint on the net but without success.
Can anybody
help?

Thanks

-------------------------------------------------------------------------------

int main (int argc, char **argv)
{
  typedef boost::adjacency_list
  <
    boost::listS,
    boost::listS,
    boost::undirectedS
> my_graph2_t;

  my_graph2_t MyGraph2;
  boost::graph_traits<my_graph2_t>::vertex_descriptor MyVDescriptor;
  boost::graph_traits<my_graph2_t>::vertex_descriptor MyNextVDescriptor;

  MyVDescriptor = boost::add_vertex(MyGraph2);
  MyNextVDescriptor = boost::add_vertex(MyGraph2);
  boost::add_edge(MyVDescriptor, MyNextVDescriptor, MyGraph2);

  boost::graph_traits<my_graph2_t>::adjacency_iterator VIter;
  boost::graph_traits<my_graph2_t>::adjacency_iterator VIterEnd;

  tie(VIter, VIterEnd) = boost::adjacent_vertices(MyVDescriptor, MyGraph2);
          
  while ( VIter != VIterEnd )
  {
    std::cout << "loop ..." << std::endl;
    ++VIter;
  }

  return
0;
}

--------------------------------------------------------------------------------


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net