On Dec 3, 2010, at 2:12 PM, 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 >
Debug build: billmp1:~ zfw$ /opt/amp/packages/debug/bin/mpic++ t.cc `METHOD=dbg /opt/amp/packages/debug/libmesh/contrib/bin/libmesh-config --cxxflags --include --ldflags` t.cc:5:5: warning: unused parameter ‘argc’ [-Wunused-parameter] t.cc:5:5: warning: unused parameter ‘argv’ [-Wunused-parameter] billmp1:~ zfw$ ./a.out hello : billmp1:~ zfw$ Optimized build: billmp1:~ zfw$ /opt/amp/packages/debug/bin/mpic++ t.cc `METHOD=opt /opt/amp/packages/optimized/libmesh/contrib/bin/libmesh-config --cxxflags --include --ldflags` billmp1:~ zfw$ ./a.out hello : 5 billmp1:~ zfw$ > > > 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
