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

Reply via email to