Exceptions in Boost

2008-02-06
2014-03-11
  • Peter Suwara
    Peter Suwara
    2008-02-06

    Why on earth does variant.hpp use exceptions without checking BOOST_NO_EXCEPTIONS. Is there a work around to not using boost exceptions.

    Cheers,
    Peter

     
  • Sneha Gaikwad
    Sneha Gaikwad
    2014-03-11

    Some related issues I could see where BOOST library is throwing exceptions! Please let me know have you encountered such similar problems as such!!

    The libGkmDnb.so is a custom component shared object that has been created under Data Stage!
    The main prior issue which was detected due to conflict of compilation of iostream and stlport4 library together.

    Dependency:

    The APT_Util library uses iostream library while the stlport4 is required for compilation of BOOST library.

    Compilation and Linking Error:

    (dnbGkm) $ make
    /dnb/opt/SUNWspro/prod/bin/CC -dalign -library=iostream -library=stlport4 -O -PIC -m64 -I /home/ab15609/redis-2.6.9/deps/hiredis -I /dnb/opt/IBM/InformationServer91/Server/branded_odbc/include -c gkmFrame.cpp -I /dnb/opt/IBM/InformationServer91/Server/PXEngine/include/ -I /home/ab36936/DnbDSComponents_GKM/dnbDScache -I /home/ab36936/DnbDSComponents_GKM/dnbDSrdmlookup -I ../dnbDScache -I /home/ab15609/redis-2.6.9/deps/hiredis -I /dnb/opt/SUNWspro/prod/include/CCios -I /dnb/prosess/InformationServer/Utv/DIHub/CustomComponents/lib/boost/boost_1_55_0 -I /dnb/opt/SUNWspro/prod/include/CC/stlport4/
    CC: -library=stlport4 cannot be used with -library=iostream
    *** Error code 1
    make: Fatal error: Command failed for target `gkmFrame.o'
    ab36936@nukigaki (dnbGkm) $

    Exception at the Datastage library:


    main_program: Error loading "libdnbGkm": Could not load "libdnbGkm": ld.so.1: osh: fatal: relocation error: file /dnb/prosess/InformationServer/Utv/DIHub/CustomComponents/lib/libdnbGkm.so: symbol 1cDstdRNamed_exceptionEwhat6kM_pkc_: referenced symbol not found.


    Excerpts of Makefile is given below:

    libdnbGkm.so: uidGen.o gkmKeys.o gkmDataObject.o gkmDomainKeys.o logger.o gkmFrame.o
    $(LINK.cc) -G -o libdnbGkm.so -h libdnbGkm.so.1.0 uidGen.o gkmKeys.o gkmDataObject.o gkmDomainKeys.o logger.o gkmFrame.o -L $(MYLIBDIR) -L $(MYGKMDIR) -L $(MYRDMDIR)
    -ldnbOdbcConnector -L $(DNBDSCACHE_INCLUDE) -ldnbCacheManager -L $(HIREDISDIR) -L $(ODBCINCLUDEDIR) -L $(ODBCLIBDIR) -lhiredis -L $(STLINCLUDE) -L $(IOSLIB) -lsocket -lnsl -l
    dl -L /dnb/opt/SUNWspro/prod/lib/stlport4 -lstlport
    if test -f libdnbGkm.so.1.0 ; then rm libdnbGkm.so.1.0; fi
    ln -s libdnbGkm.so libdnbGkm.so.1.0

    Could find the exception in the following library stlport4

    elfdump -Cs /dnb/opt/SUNWspro/prod/lib/stlport4/libstlport.so.1 | grep -i named

    [429] 0x000eaa20 0x00000024 OBJT GLOB D 0 .rodata std::RTTI1nDstdRNamed_exception_
    [1058] 0x000a5ca8 0x00000064 FUNC GLOB D 0 .text std::
    Named_exception::Named_exception(const std::basic_string<char,std::char_traits<char>,std::allocator<char> >&)
    [1076] 0x00104e84 0x00000010 OBJT GLOB D 0 .data std::
    Named_exception::vtbl
    [1154] 0x000a5d74 0x00000008 FUNC GLOB D 0 .text std::
    Named_exception::~Named_exception()
    [1838] 0x000a5ca8 0x00000064 FUNC GLOB D 0 .text std::
    Named_exception::Named_exception #Nvariant 1(const std::basic_string<char,std::char_traits<char>,std::allocator<char> >&)
    [2287] 0x000eaa84 0x00000024 OBJT GLOB D 0 .rodata std::
    RTTI1CpnDstdRNamed_exception_
    [2642] 0x000eaac0 0x00000024 OBJT GLOB D 0 .rodata std::RTTI1CpknDstdRNamed_exception_
    [3036] 0x000a5d1c 0x00000008 FUNC GLOB D 0 .text const char*std::
    Named_exception::what()const
    [3192] 0x000a5d34 0x00000030 FUNC GLOB D 0 .text std::Named_exception::~Named_exception #Nvariant 1()
    [1962] 0x000eaa20 0x00000024 OBJT GLOB D 0 .rodata std::RTTI1nDstdRNamed_exception_
    [2591] 0x000a5ca8 0x00000064 FUNC GLOB D 0 .text std::
    Named_exception::Named_exception(const std::basic_string<char,std::char_traits<char>,std::allocator<char> >&)
    [2609] 0x00104e84 0x00000010 OBJT GLOB D 0 .data std::
    Named_exception::vtbl
    [2687] 0x000a5d74 0x00000008 FUNC GLOB D 0 .text std::
    Named_exception::~Named_exception()
    [3371] 0x000a5ca8 0x00000064 FUNC GLOB D 0 .text std::
    Named_exception::Named_exception #Nvariant 1(const std::basic_string<char,std::char_traits<char>,std::allocator<char> >&)
    [3820] 0x000eaa84 0x00000024 OBJT GLOB D 0 .rodata std::
    RTTI1CpnDstdRNamed_exception_
    [4175] 0x000eaac0 0x00000024 OBJT GLOB D 0 .rodata std::RTTI1CpknDstdRNamed_exception_
    [4569] 0x000a5d1c 0x00000008 FUNC GLOB D 0 .text const char*std::
    Named_exception::what()const
    [4725] 0x000a5d34 0x00000030 FUNC GLOB D 0 .text std::Named_exception::~Named_exception #Nvariant 1()

    Please let me know which libraries are essential and to be used to remove this exception at Data Stage level.

    Please note that I am loading this library at the datastage; the UNIX is based of SUN/SOLARIS library is a 62 Bit processor.