And make sure the compiler and libstdc++ work with those flags in the first place:
http://stackoverflow.com/questions/1416096/c-debug-builds-broke-in-snow-leopard-x-code GCC on any system will break if you incautiously mix debug and non-debug STL containers, but GCC on Apple tends to break even with debug containers alone. It's possible that the hpc folks' builds fixed that in other gcc builds but regressed in 4.6. --- Roy On Fri, 3 Dec 2010, Kirk, Benjamin (JSC-EG311) wrote: > 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/i 3 > 86 >> -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/con t > ri >> 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 > ------------------------------------------------------------------------------ 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
