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

Reply via email to