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

Reply via email to