Are you absolutely positive your object is compiled with the *exact* same compiler flags as libMesh?
Use ./contrib/bin/libmesh-config to get the exact C++ flags used by libMesh. -Ben On Dec 3, 2010, at 1:07 PM, "Cochran, Bill" <[email protected]> wrote: > I am using snow leopard and the hpc.sourceforge.net compilers (gcc 4.6 > experimental). > > Apparently, linking a debug build of libmesh to an object code that uses > std::stringstream breaks std::stringstream in that object code. It seems > like the linker is picking a particular stringstream instantiation from > libmesh.a rather than the one with the associated object file. This does not > happen with an optimized build of libmesh. It does not present on gcc 4.5 or > lower. The bug is extremely easy to replicate. > > Given the following source code (which in no way calls libmesh): > > #include <sstream> > #include <iostream> > #include <string> > > int main ( int argc , char ** argv ) > { > std::string t1 = "hello"; > std::stringstream t2; > t2 << t1 << " : " << 5; > std::cout << t2.str() << std::endl; > } > > Compiled and run gives (as expected): > > billmp1:~ zfw$ /opt/amp/packages/debug/bin/mpicxx t.cc -D_GLIBCXX_DEBUG > -D_GLIBCXX_DEBUG_PEDANTIC -DDEBUG > billmp1:~ zfw$ ./a.out > hello : 5 > billmp1:~ zfw$ > > However, if you link it against libmesh.a, you get: > > billmp1:~ zfw$ /opt/amp/packages/debug/bin/mpicxx t.cc -D_GLIBCXX_DEBUG > -D_GLIBCXX_DEBUG_PEDANTIC -DDEBUG > /opt/amp/packages/debug/libmesh/lib/i386-apple-darwin10.4.2_dbg/libmesh.a > /opt/amp/packages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/libexodusii.a > > /opt/amp/packages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/libgmv.a > > /opt/amp/packages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/libgzstream.a > > /opt/amp/packages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/liblaspack.a > > /opt/amp/packages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/libnemesis.a > > /opt/amp/packages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/libnetcdf.a > > /opt/amp/packages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/libparmetis.a > > /opt/amp/packages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/libmetis.a > > /opt/amp/packages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/libsfcurves.a > /opt/amp/packages/debug/libmesh/contrib/lib/i386 > -apple-darwin10.4.2_dbg/libtetgen.a > /opt/amp/packages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/libtriangle.a > > /opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpetscsnes.a > > /opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpetscksp.a > > /opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpetscdm.a > /opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpetsccontrib.a > > /opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpetscmat.a > > /opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpetscvec.a > /opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpetsc.a > /usr/X11R6/lib/libSM.dylib /usr/X11R6/lib/libICE.dylib > /usr/X11R6/lib/libX11.dylib -framework Accelerate /usr/lib/libblas.dylib > /usr/lib/libblas.dylib -lz > billmp1:~ zfw$ ./a.out > hello : > billmp1:~ zfw$ > > The output is missing the '5'. Now, if you take away libmesh.a, you get: > > billmp1:~ zfw$ /opt/amp/packages/debug/bin/mpicxx t.cc -D_GLIBCXX_DEBUG > -D_GLIBCXX_DEBUG_PEDANTIC -DDEBUG > /opt/amp/packages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/libexodusii.a > > /opt/amp/packages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/libgmv.a > > /opt/amp/packages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/libgzstream.a > > /opt/amp/packages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/liblaspack.a > > /opt/amp/packages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/libnemesis.a > > /opt/amp/packages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/libnetcdf.a > > /opt/amp/packages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/libparmetis.a > > /opt/amp/packages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/libmetis.a > > /opt/amp/packages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/libsfcurves.a > > /opt/amp/packages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/libtetgen.a > /opt/amp/packages/debug/libmesh/contri > b/lib/i386-apple-darwin10.4.2_dbg/libtriangle.a > /opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpetscsnes.a > > /opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpetscksp.a > > /opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpetscdm.a > /opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpetsccontrib.a > > /opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpetscmat.a > > /opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpetscvec.a > /opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpetsc.a > /usr/X11R6/lib/libSM.dylib /usr/X11R6/lib/libICE.dylib > /usr/X11R6/lib/libX11.dylib -framework Accelerate /usr/lib/libblas.dylib > /usr/lib/libblas.dylib -lz > billmp1:~ zfw$ ./a.out > hello : 5 > billmp1:~ zfw$ > > As mentioned above, it does not happen with an optimized version of libmesh: > > billmp1:~ zfw$ /opt/amp/packages/debug/bin/mpicxx t.cc > /opt/amp/packages/optimized/libmesh/lib/i386-apple-darwin10.4.2_opt/libmesh.a > /opt/amp/packages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/libexodusii.a > > /opt/amp/packages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/libgmv.a > > /opt/amp/packages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/libgzstream.a > > /opt/amp/packages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/liblaspack.a > > /opt/amp/packages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/libnemesis.a > > /opt/amp/packages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/libnetcdf.a > > /opt/amp/packages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/libparmetis.a > > /opt/amp/packages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/libmetis.a > > /opt/amp/packages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/libsfcurves.a > > /opt/amp/packages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/libtetgen.a > /opt/amp/pa > ckages/debug/libmesh/contrib/lib/i386-apple-darwin10.4.2_dbg/libtriangle.a > /opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpetscsnes.a > > /opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpetscksp.a > > /opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpetscdm.a > /opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpetsccontrib.a > > /opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpetscmat.a > > /opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpetscvec.a > /opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpetsc.a > /usr/X11R6/lib/libSM.dylib /usr/X11R6/lib/libICE.dylib > /usr/X11R6/lib/libX11.dylib -framework Accelerate /usr/lib/libblas.dylib > /usr/lib/libblas.dylib -lz > billmp1:~ zfw$ ./a.out > hello : 5 > billmp1:~ zfw$ > > Any ideas on how to remedy this would be greatly appreciated. > > Bill Cochran > > > ------------------------------------------------------------------------------ > Increase Visibility of Your 3D Game App & Earn a Chance To Win $500! > Tap into the largest installed PC base & get more eyes on your game by > optimizing for Intel(R) Graphics Technology. Get started today with the > Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs. > http://p.sf.net/sfu/intelisp-dev2dev > _______________________________________________ > Libmesh-users mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/libmesh-users ------------------------------------------------------------------------------ Increase Visibility of Your 3D Game App & Earn a Chance To Win $500! Tap into the largest installed PC base & get more eyes on your game by optimizing for Intel(R) Graphics Technology. Get started today with the Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs. http://p.sf.net/sfu/intelisp-dev2dev _______________________________________________ Libmesh-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/libmesh-users
