Removing the GLIBCXX_DEBUG flags worked for the little test I sent. I had grown quite fond of them.
Bill On 12/3/10 2:24 PM, "Roy Stogner" <[email protected]> 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-le >opard-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/libpets >>>csnes.a >>>/opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpets >>>cksp.a >>>/opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpets >>>cdm.a >>>/opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpets >>>ccontrib.a >>>/opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpets >>>cmat.a >>>/opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpets >>>cvec.a >>>/opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpets >>>c.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/libpets >>>csnes.a >>>/opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpets >>>cksp.a >>>/opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpets >>>cdm.a >>>/opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpets >>>ccontrib.a >>>/opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpets >>>cmat.a >>>/opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpets >>>cvec.a >>>/opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpets >>>c.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/libm >>>esh.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/libpets >>>csnes.a >>>/opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpets >>>cksp.a >>>/opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpets >>>cdm.a >>>/opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpets >>>ccontrib.a >>>/opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpets >>>cmat.a >>>/opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpets >>>cvec.a >>>/opt/amp/packages/debug/petsc-3.0.0-p12/darwin10.4.2-c-debug/lib/libpets >>>c.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
