I will remove the _GLIBCXX_DEBUG* flags from the debug build on everything and give it another shot.
On Dec 3, 2010, at 2:24 PM, Roy Stogner wrote: > > 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
