httpd-modules-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From <oh...@cox.net>
Subject Re: Followup to earlier thread about "How to compiling/link/use Apache module that uses shared library?"
Date Fri, 22 Jun 2012 19:22:03 GMT

---- ohaya@cox.net wrote: 
> 
> ---- ohaya@cox.net wrote: 
> > 
> > ---- Sorin Manolache <sorinm@gmail.com> wrote: 
> > > On 2012-06-22 17:35, ohaya@cox.net wrote:
> > > 
> > > >
> > > > Sorry.  I meant to say:
> > > >
> > > > "So, my code calls ObConfig_initialize() then it appears that that calls
> > > > ObConfig::initialize() which is presumably a C++ function. "
> > > >
> > > 
> > > We develop our apache modules in C++ on a regular basis and they 
> > > interact with other modules written in plain C and there's no problem.
> > > 
> > > What I think happens in your case is:
> > > 
> > > I suspect that the Oracle lib was _statically_ linked with libcrypto. So 
> > > the code of some version of libcrypto is in the libobaccess binary. Then 
> > > mod_ssl is _dynamically_ linked with libcrypto. I suspect that the two 
> > > libcryptos have different versions and they are possibly incompatible =>

> > > segfaults at all kind of mallocs/frees. I think it has nothing to do 
> > > with new/delete vs malloc/free.
> > > 
> > > S
> > 
> > 
> > Hi,
> > 
> > How can I determine whether the libobaccess.so was statically linked with libcrypto?
 
> > 
> > Also, I'll check again, but I think that I checked before using ldd, and both obaccess.so
and mod_ssl.so were pointing to the same libcrypto.
> > 
> > Jim 
> 
> Hi,
> 
> Sorry, I got confused.  
> 
> [root@apachemodule ~]# ldd /apps/httpd2222/modules/mod_ssl.so
>         libssl.so.4 => /lib64/libssl.so.4 (0x0000002a95697000)
>         libcrypto.so.4 => /lib64/libcrypto.so.4 (0x0000002a957d4000)
>         libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x0000002a95a05000)
>         libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x0000002a95b1b000)
>         libcom_err.so.2 => /lib64/libcom_err.so.2 (0x0000002a95c8d000)
>         libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x0000002a95d8f000)
>         libdl.so.2 => /lib64/libdl.so.2 (0x0000002a95eb2000)
>         libz.so.1 => /usr/lib64/libz.so.1 (0x0000002a95fb6000)
>         libpthread.so.0 => /lib64/tls/libpthread.so.0 (0x0000002a960c9000)
>         libc.so.6 => /lib64/tls/libc.so.6 (0x0000002a961de000)
>         libresolv.so.2 => /lib64/libresolv.so.2 (0x0000002a96418000)
>         /lib64/ld-linux-x86-64.so.2 (0x000000552aaaa000)
> [root@apachemodule ~]#
> [root@apachemodule ~]#
> [root@apachemodule ~]# ldd /apps/netpoint/lib64/libobaccess.so
>         libnsl.so.1 => /lib64/libnsl.so.1 (0x0000002a95ab8000)
>         libdl.so.2 => /lib64/libdl.so.2 (0x0000002a95bd0000)
>         libpthread.so.0 => /lib64/tls/libpthread.so.0 (0x0000002a95cd3000)
>         libstdc++.so.6 => /lib64/libstdc++.so.6 (0x0000002a95de9000)
>         libm.so.6 => /lib64/tls/libm.so.6 (0x0000002a95fd9000)
>         libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000002a9615f000)
>         libc.so.6 => /lib64/tls/libc.so.6 (0x0000002a9626d000)
>         /lib64/ld-linux-x86-64.so.2 (0x000000552aaaa000)
> 
> Only mod_ssl.so is showing pointer to libcrypto.
> 
> Is there a way to determine if libobaccess.so is linked statically to libcrypto, and
now showing up in the ldd?
> 
> Jim
> 

Hi,

I found this:

http://stackoverflow.com/questions/4925012/can-i-get-a-report-of-all-the-libraries-linked-when-building-my-c-executable

When I run:

objdump -t /apps/netpoint/lib64/libobaccess.so | grep "ABS"

I get a bunch of stuff, including a bunch of "x509_xxx.c", e.g.:


[root@apachemodule ~]# objdump -t /apps/netpoint/lib64/libobaccess.so | grep "ABS" | grep
"x509"
0000000000000000 l    df *ABS*  0000000000000000              x509_fnc.c
0000000000000000 l    df *ABS*  0000000000000000              x509_fnc.c
0000000000000000 l    df *ABS*  0000000000000000              x_x509.c
0000000000000000 l    df *ABS*  0000000000000000              x509_d2.c
0000000000000000 l    df *ABS*  0000000000000000              x509_err.c
0000000000000000 l    df *ABS*  0000000000000000              x509_vfy.c
0000000000000000 l    df *ABS*  0000000000000000              x509_obj.c
0000000000000000 l    df *ABS*  0000000000000000              x509name.c
0000000000000000 l    df *ABS*  0000000000000000              x509type.c
0000000000000000 l    df *ABS*  0000000000000000              x509_lu.c
0000000000000000 l    df *ABS*  0000000000000000              x509_lu.c
0000000000000000 l    df *ABS*  0000000000000000              x509_lu.c
0000000000000000 l    df *ABS*  0000000000000000              x509_lu.c
0000000000000000 l    df *ABS*  0000000000000000              x509_fnc.c
0000000000000000 l    df *ABS*  0000000000000000              x509_fnc.c
0000000000000000 l    df *ABS*  0000000000000000              x509_fnc.c
0000000000000000 l    df *ABS*  0000000000000000              x509_fnc.c
0000000000000000 l    df *ABS*  0000000000000000              x509_st.c
0000000000000000 l    df *ABS*  0000000000000000              x509_st.c
0000000000000000 l    df *ABS*  0000000000000000              x509_st.c
0000000000000000 l    df *ABS*  0000000000000000              x509_st.c
0000000000000000 l    df *ABS*  0000000000000000              x509_st.c
0000000000000000 l    df *ABS*  0000000000000000              x509_st.c
0000000000000000 l    df *ABS*  0000000000000000              x509_st.c
0000000000000000 l    df *ABS*  0000000000000000              x509_st.c
0000000000000000 l    df *ABS*  0000000000000000              x509_st.c
0000000000000000 l    df *ABS*  0000000000000000              x509_st.c
0000000000000000 l    df *ABS*  0000000000000000              x509_cmp.c
0000000000000000 l    df *ABS*  0000000000000000              x509_cmp.c
0000000000000000 l    df *ABS*  0000000000000000              x509_cmp.c
0000000000000000 l    df *ABS*  0000000000000000              x509_cmp.c
0000000000000000 l    df *ABS*  0000000000000000              x509_cmp.c
0000000000000000 l    df *ABS*  0000000000000000              x509_cmp.c
0000000000000000 l    df *ABS*  0000000000000000              x509_cmp.c
0000000000000000 l    df *ABS*  0000000000000000              x509_cmp.c
0000000000000000 l    df *ABS*  0000000000000000              x509_lu2.c
0000000000000000 l    df *ABS*  0000000000000000              x509_lu2.c
0000000000000000 l    df *ABS*  0000000000000000              x509_def.c
0000000000000000 l    df *ABS*  0000000000000000              x509_v3.c
0000000000000000 l    df *ABS*  0000000000000000              x509_cct.c
0000000000000000 l    df *ABS*  0000000000000000              x509_gpp.c
0000000000000000 l    df *ABS*  0000000000000000              x509_ext.c
0000000000000000 l    df *ABS*  0000000000000000              x509_ext.c
0000000000000000 l    df *ABS*  0000000000000000              x509_lu.c
0000000000000000 l    df *ABS*  0000000000000000              x509_lu.c
0000000000000000 l    df *ABS*  0000000000000000              x509_lu.c
0000000000000000 l    df *ABS*  0000000000000000              x509_lu.c
[root@apachemodule ~]#

I just picked on, "x509_lu.c" and googled and that looks like it's part of openssl:

http://www.polarhome.com/cvs/CVSROOT/openssl/crypto/x509/x509_lu.c

Does that confirm that they statically linked stuff from openssl (and libcrypto) into libobaccess.so?

Assuming that's the case, is there any way around this?

Thanks,
Jim

Mime
View raw message