On Fri, 02 Apr 2010 08:12:10 PDT, Kim Woodle <kwoo...@aya.yale.edu> wrote:
> I'm trying to build an application which would use the boost date_time
> library. When the application is linked to libboost_date_time.so it
crashes
> at start-up with the following trace:
> 
> t...@1 (l...@1) program terminated by signal SEGV (no mapping at the fault
> address)
> 0xfffffd7fff1eb43b: memcpy+0x187b:    movdqu  
0xffffffffffffffe0(%rdx),%xmm2
> (dbx) where
> current thread: t...@1
> =>[1] memcpy(0x416170, 0x439458, 0x43a018, 0x416d30, 0x53253a4d253a3c65,
> 0x400000), at 0xfffffd7fff1eb43b 
>   [2] std::basic_string<char,std::char_traits<char>,std::allocator<char>
>   >::__clone(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ff8877e03
>   [3] std::basic_string<char,std::char_traits<char>,std::allocator<char>
>   >::reserve(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ff8870f4e
>   [4] std::__copy<const
>  
char*,std::back_insert_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>   > >,long>(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ff78cddfa
>   [5] std::_Init_timeinfo(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at
>   0xfffffd7ff78cb1a3
>   [6] std::_Locale_impl::make_classic_locale(0x0, 0x0, 0x0, 0x0, 0x0,
>   0x0), at 0xfffffd7ff78cea86
>   [7] std::locale::_S_initialize(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at
>   0xfffffd7ff78cfa6a
>   [8] __SLIP.INIT_A(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ff78ba81c

>   [9] _init(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ff78dfe55 
>   [10] call_init(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fff3d3228 
>   [11] setup(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fff3d20eb 
>   [12] _setup(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fff3e1e99 
>   [13] _rt_boot(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fff3c4bd6 
>   [14] 0xfffffd7fffdff880(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at
>   0xfffffd7fffdff880
> 
> This trace is from boost 1.35 from blastwave. The same occurs using
boost
> 1.42_0 from boost.org.
> The app name is url
>  ldd ./dist/Debug/SunStudioExpress-Solaris-x86/url
>       libxml2.so.2 =>  /lib/64/libxml2.so.2
>       libxslt.so.1 =>  /usr/lib/64/libxslt.so.1
>       libboost_date_time.so =>         /usr/local/lib/libboost_date_time.so
>       libktrade.so =>  /usr/local/ktrade/lib/libktrade.so
>       libmysqlclient.so.16 => 
>       /usr/mysql/5.1/lib/amd64/mysql/libmysqlclient.so.16
>       libmysqlcppconn.so.1 => 
>       /usr/mysql/5.1/lib/amd64/mysql/libmysqlcppconn.so.1
>       libCstd.so.1 =>  /opt/SunStudioExpress/lib/amd64/libCstd.so.1
>       libCrun.so.1 =>  /opt/SunStudioExpress/lib/amd64/libCrun.so.1
>       libm.so.2 =>     /lib/64/libm.so.2
>       libc.so.1 =>     /lib/64/libc.so.1
>       libpthread.so.1 =>       /lib/64/libpthread.so.1
>       libz.so.1 =>     /lib/64/libz.so.1
>       libsocket.so.1 =>        /lib/64/libsocket.so.1
>       libnsl.so.1 =>   /lib/64/libnsl.so.1
>       librt.so.1 =>    /lib/64/librt.so.1
>       libstlport.so.1 =>      
/opt/sunstudio12.1/lib/stlport4/amd64/libstlport.so.1
>       libgslcblas.so.0 =>      /usr/local/lib/libgslcblas.so.0
>       libgsl.so.0 =>   /usr/local/lib/libgsl.so.0
>       libthread.so.1 =>        /lib/64/libthread.so.1
>       libgen.so.1 =>   /lib/64/libgen.so.1
>       libresolv.so.2 =>        /lib/64/libresolv.so.2
>       libmp.so.2 =>    /lib/64/libmp.so.2
>       libmd.so.1 =>    /lib/64/libmd.so.1
>       libscf.so.1 =>   /lib/64/libscf.so.1
>       libCrun.so.1 =>  /usr/lib/64/libCrun.so.1
>       libgcc_s.so.1 =>         /usr/sfw/lib/64/libgcc_s.so.1
>       libuutil.so.1 =>         /lib/64/libuutil.so.1
>       libsmbios.so.1 =>        /usr/lib/64/libsmbios.so.1
> Thanks in advance for any insight.

Boost is normally built using -library=stlport4 because the default STL
implementation is not sufficient. stlport4 is ABI incompatible with the
default STL so any C++ code you link must also have been built with
stlport4. The resulting binaries should never have libCstd as a dependency.

You may also want to rebuild Boost with -staticlib=stlport4 so it won't
have a runtime dependency on Sun Studio.

Instead of using Blastwave, I would suggest looking at SFEboost in
spec-files-extra which does this correctly and currently provides Boost
1.42.0.

-Albert

_______________________________________________
opensolaris-code mailing list
opensolaris-code@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code

Reply via email to