Michal Simecek wrote:
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. .. tie(VIter, VIterEnd) = boost::adjacent_vertices(MyVDescriptor, MyGraph2);
while ( VIter != VIterEnd ) { std::cout << "loop ..." << std::endl; ++VIter; }
What does "damaged" means? Is it "damaged" at the time of creation. If not, you should be able to single step in the debugger, and locate the point where it's damaged. Or you can set hardware watch point and the memory location that's damaged and let gdb/processor find the point that damages the variable. Once that one, we might try to investigate further.
Is it an optimization bug in the compiler or any mistake I made or a problem in the boost?
Impossible to tell without more specific details. - Volodya