On Thu, Aug 24, 2006 at 04:36:22PM +0200, Jordan, Laszlo (GE Healthcare) wrote:
> Hi,
>
> I had a crash in our software, which occured randomly. The valgrind logs
> and the stack trace pointed to a code snippet, which uses ostringstream
> for data conversion. (int -> string, float -> string, double-> string).
> After changing the ostringstream conversion to sprintf, the crash in the
> application no more occured and the valgrind log was clear as well. It
> seems the problem is in the str() function of ostringstream.
> Consider the following test program in order to reproduce the bug:
>
> #include <iostream>
> #include <strstream>
> #include <sstream>
> #include <vector>
> #include <string>
>
> int main()
> {
>
> std::vector<std::string> v;
> {
> std::ostringstream sstr;
> sstr << (double)1.12;
> v.push_back(sstr.str());
> }
>
> return 1;
> }
I used the exact command line you used, with g++ 3.4.2:
> $ g++ -g -O2 -D__STL_DEBUG -DDEBUG test.c
but I am not seeing the valgrind bug that you are seeing.