[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