[csw-users] How Can I Determine If My Copies Of gcc And libstdc++ Are Compatible?

Dagobert Michelsen dam at opencsw.org
Tue Jul 3 18:50:15 CEST 2012


Hi Eric,

Am 03.07.2012 um 17:59 schrieb eric eric:
> How can I determine if my copies of gcc and libstdc++ are compatible?

Short answer: not easily.

Looking at your details you are having multiple problems at the same time:

1. You seem to mix packages from Blastwave and OpenCSW. This is problematic due to
   different flags and compile options. I suggest going through this migration:
     http://www.opencsw.org/use-it/migrating-from-blastwave-to-opencsw/

2. You use the Blastwave/OpenCSW libstdc++ where the application was compiled against
   the /usr/sfw libstdc++ - at least I suppose so because neither bw/ocsw has these
   interfaces:

>        libstdc++.so.6 (GLIBCXX_3.4.15) =>       (version not found)
>        libstdc++.so.6 (CXXABI_1.3) =>   (version not found)

3. You have libraries compiled with the old gcc and try to mix them with libs/apps
   compiled with the new gcc. This can also lead to trouble if the compilers were
   from different environments (note the multiple inclusions of libstdc++.so.6 at
   different runpathes), make sure to use a homogenous RPATH setting (-R) during linkage.


When you give more details on the compile environment for all things you build your own
and pkginfo -x on all included packages I could do a further analysis, but the above
issues should get you on the right track for now.


Best regards

  -- Dago

> In Brief
> ========
> 
> Our app hangs during static initialization under certain circumstances and the
> problem seems to coincide with our migration from gcc 4.5.1 to 4.7.1.  The
> stack trace includes paths such as "../gcc-4.5.1/libstdc++" which makes me
> wonder, maybe our libstdc++ is specific to gcc 4.5.1, maybe we need to upgrade
> libstdc++?
> 
> I checked the link below but it does not list gcc 4.7.1:
> 
> http://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html
> 
> In Detail
> =========
> 
> 1) We're on Solaris 10:
> 
> $ cat /etc/release
>                   Oracle Solaris 10 8/11 s10s_u10wos_17b SPARC
>  Copyright (c) 1983, 2011, Oracle and/or its affiliates. All rights reserved.
>                            Assembled 23 August 2011
> 
> 2) We're on gcc 4.7.1:
> 
> $ /opt/csw/bin/gcc -v
> Reading specs from /opt/csw/lib/gcc/sparc-sun-solaris2.10/4.7.1/specs
> COLLECT_GCC=/opt/csw/bin/gcc
> COLLECT_LTO_WRAPPER=/opt/csw/libexec/gcc/sparc-sun-solaris2.10/4.7.1/lto-wrapper
> Target: sparc-sun-solaris2.10
> Configured with:
> /home/maciej/src/opencsw/pkg/gcc4/trunk/work/solaris10-sparc/build-isa-sparcv8plus/gcc-4.7.1/configure
> --prefix=/opt/csw --exec_prefix=/opt/csw --bindir=/opt/csw/bin
> --sbindir=/opt/csw/sbin --libexecdir=/opt/csw/libexec --datadir=/opt/csw/share
> --sysconfdir=/etc/opt/csw --sharedstatedir=/opt/csw/share
> --localstatedir=/var/opt/csw --libdir=/opt/csw/lib
> --infodir=/opt/csw/share/info --includedir=/opt/csw/include
> --mandir=/opt/csw/share/man --enable-cloog-backend=isl --enable-java-awt=xlib
> --enable-languages=ada,c,c++,fortran,go,java,objc --enable-libada
> --enable-libssp --enable-nls --enable-objc-gc --enable-threads=posix
> --program-suffix=-4.7 --with-as=/opt/csw/bin/gas --with-cloog=/opt/csw
> --with-gmp=/opt/csw --with-gnu-as --with-included-gettext
> --with-ld=/usr/ccs/bin/ld --without-gnu-ld --with-libiconv-prefix=/opt/csw
> --with-mpfr=/opt/csw --with-ppl=/opt/csw --with-system-zlib=/opt/csw
> Thread model: posix
> gcc version 4.7.1 (GCC)
> 
> 3) We're on libstdc++ 6:
> 
> $ file /opt/csw/lib/libstdc++.so.6
> /opt/csw/lib/libstdc++.so.6:    ELF 32-bit MSB dynamic lib SPARC32PLUS
> Version 1, V8+ Required, dynamically linked, not stripped
> 
> How can I get more info about the above file?  Minor/Sub version
> number?  ABI/GCC compatibility?
> 
> 4) Here is the output of ldd on our app:
> 
> $ ldd myapp
>        libmyapp.so =>   /path/to/bin/libmyapp.so
>        libboost_unit_test_framework.so.1.48.0 =>
> /path/to/lib/libboost_unit_test_framework.so.1.48.0
>        libboost_date_time.so.1.48.0 =>
> /path/to/lib/libboost_date_time.so.1.48.0
>        libboost_filesystem.so.1.48.0 =>
> /path/to/lib/libboost_filesystem.so.1.48.0
>        libboost_serialization.so.1.48.0 =>
> /path/to/lib/libboost_serialization.so.1.48.0
>        libboost_system.so.1.48.0 =>     /path/to/lib/libboost_system.so.1.48.0
>        libldap.so.5 =>  /usr/lib/libldap.so.5
>        libstdc++.so.6 =>        /opt/csw/gcc4/lib/libstdc++.so.6
>        libstdc++.so.6 (GLIBCXX_3.4.15) =>       (version not found)
>        libstdc++.so.6 (CXXABI_1.3) =>   (version not found)
>        libm.so.2 =>     /lib/libm.so.2
>        libgcc_s.so.1 =>         /opt/csw/gcc4/lib/libgcc_s.so.1
>        libpthread.so.1 =>       /lib/libpthread.so.1
>        libc.so.1 =>     /lib/libc.so.1
>        libgcc_s.so.1 =>         /opt/csw/lib/libgcc_s.so.1
>        librt.so.1 =>    /lib/librt.so.1
>        libstdc++.so.6 =>        /opt/csw/lib/libstdc++.so.6
>        libsasl.so.1 =>  /usr/lib/libsasl.so.1
>        libsocket.so.1 =>        /lib/libsocket.so.1
>        libnsl.so.1 =>   /lib/libnsl.so.1
>        libmd.so.1 =>    /lib/libmd.so.1
>        libnspr4.so =>   /usr/lib/mps/libnspr4.so
>        libplc4.so =>    /usr/lib/mps/libplc4.so
>        libnss3.so =>    /usr/lib/mps/libnss3.so
>        libssl3.so =>    /usr/lib/mps/libssl3.so
>        libm.so.1 =>     /lib/libm.so.1
>        libaio.so.1 =>   /lib/libaio.so.1
>        libmp.so.2 =>    /lib/libmp.so.2
>        libscf.so.1 =>   /lib/libscf.so.1
>        libdl.so.1 =>    /lib/libdl.so.1
>        libnssutil3.so =>        /usr/lib/mps/libnssutil3.so
>        libplds4.so =>   /usr/lib/mps/libplds4.so
>        libthread.so.1 =>        /lib/libthread.so.1
>        libdoor.so.1 =>  /lib/libdoor.so.1
>        libuutil.so.1 =>         /lib/libuutil.so.1
>        libgen.so.1 =>   /lib/libgen.so.1
>        /lib/libm/libm_hwcap1.so.2
>        /platform/SUNW,SPARC-Enterprise/lib/libc_psr.so.1
>        /usr/lib/mps/cpu/sparcv8plus/libnspr_flt4.so
> 
> 5) Here is the stack trace when our app hangs:
> 
> (gdb) bt
> #0  0xfe7ca710 in __lwp_park () from /lib/libc.so.1
> #1  0xfe7c459c in cond_sleep_queue () from /lib/libc.so.1
> #2  0xfe7c4760 in cond_wait_queue () from /lib/libc.so.1
> #3  0xfe7c4ba4 in cond_wait_common () from /lib/libc.so.1
> #4  0xfe7c4ca8 in cond_wait () from /lib/libc.so.1
> #5  0xfe7c4ce4 in pthread_cond_wait () from /lib/libc.so.1
> #6  0xfea4ee3c in __gthread_cond_wait (g=0xfef735d8)
>    at /opt/csw/src/gcc-4.5.1-001/sparc-sun-solaris2.8/libstdc++-v3/include/sparc-sun-solaris2.8/bits/gthr-default.h:862
> #7  __gthread_cond_wait_recursive (g=0xfef735d8)
>    at /opt/csw/src/gcc-4.5.1-001/sparc-sun-solaris2.8/libstdc++-v3/include/sparc-sun-solaris2.8/bits/gthr-default.h:876
> #8  wait_recursive (g=0xfef735d8) at
> /opt/csw/src/gcc-4.5.1-001/sparc-sun-solaris2.8/libstdc++-v3/include/ext/concurrence.h:311
> #9  __cxxabiv1::__cxa_guard_acquire (g=0xfef735d8) at
> ../../../../gcc-4.5.1/libstdc++-v3/libsupc++/guard.cc:293
> #10 0xfef628c4 in boost::system::generic_category () at
> libs/system/src/error_code.cpp:424
> #11 0xff211f84 in __static_initialization_and_destruction_0
> (__initialize_p=1, __priority=65535)
>    at /data/home/bufebs/boost_1_48_0/install/gcc-4.7.1/debug/include/boost/system/error_code.hpp:214
> #12 0xff2120cc in _GLOBAL__sub_I_MyApp.cpp(void) ()
>    at /path/to/my/code/myapp.cpp:352
> #13 0xff2840e4 in __do_global_ctors_aux ()
>   from /path/to/my/bin/myapp.so
> #14 0xff28411c in _init () from /path/to/my/bin/myapp.so
> #15 0xff3c4bf8 in call_init () from /usr/lib/ld.so.1
> #16 0xff3d4be4 in elf_bndr () from /usr/lib/ld.so.1
> #17 0xff3b56dc in elf_rtbndr () from /usr/lib/ld.so.1
> #18 0xff3b56dc in elf_rtbndr () from /usr/lib/ld.so.1
> Backtrace stopped: previous frame identical to this frame (corrupt stack?)
> 
> As mentioned above the stack trace includes strings like
> "gcc-4.5.1/libstdc++" which makes me wonder if maybe our libstdc++ is
> specific to gcc 4.5.1?  Maybe we need to upgrade to a libstdc++ for
> gcc 4.7.1?
> 
> I would be grateful for any help.
> 
> Kind Regards,
> Eric
> _______________________________________________
> users mailing list
> users at lists.opencsw.org
> https://lists.opencsw.org/mailman/listinfo/users



More information about the users mailing list