[mod_python] old libexpat shared library

Luyi Chen lychen1109 at gmail.com
Sun Apr 6 04:37:10 EDT 2008


Thanks Graham,

Here's the info:

$ ldd /usr/local/apache2/bin/httpd
        libz.so.1 => /usr/lib/libz.so.1 (0x00002b02938de000)
        libm.so.6 => /lib/libm.so.6 (0x00002b02939f4000)
        libaprutil-1.so.0 => /usr/local/apache2/lib/libaprutil-1.so.0
(0x00002b0293b79000)
        libexpat.so.0 => /usr/local/apache2/lib/libexpat.so.0
(0x00002b0293c91000)
        libexpat.so.1 => /usr/lib/libexpat.so.1 (0x00002b0293db3000)
        libapr-1.so.0 => /usr/local/apache2/lib/libapr-1.so.0
(0x00002b0293ed6000)
        librt.so.1 => /lib/librt.so.1 (0x00002b0293ffe000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x00002b0294107000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00002b029423a000)
        libdl.so.2 => /lib/libdl.so.2 (0x00002b029434f000)
        libc.so.6 => /lib/libc.so.6 (0x00002b0294452000)
        /lib64/ld-linux-x86-64.so.2 (0x00002b02937c7000)
$ ldd /usr/lib/libz.so.1
        libc.so.6 => /lib/libc.so.6 (0x00002b2764dc5000)
        /lib64/ld-linux-x86-64.so.2 (0x0000555555554000)
$ ldd /lib/libm.so.6
        libc.so.6 => /lib/libc.so.6 (0x00002b8bf9a3c000)
        /lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2
(0x0000555555554000)
$ ldd /usr/local/apache2/lib/libaprutil-1.so.0
        libexpat.so.0 => /usr/local/apache2/lib/libexpat.so.0
(0x00002b61001d0000)
        libapr-1.so.0 => /usr/local/apache2/lib/libapr-1.so.0
(0x00002b61002f2000)
        librt.so.1 => /lib/librt.so.1 (0x00002b610041e000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x00002b6100526000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00002b610065a000)
        libdl.so.2 => /lib/libdl.so.2 (0x00002b610076f000)
        libc.so.6 => /lib/libc.so.6 (0x00002b6100871000)
        /lib64/ld-linux-x86-64.so.2 (0x0000555555554000)
$ ldd /usr/local/apache2/lib/libexpat.so.0
        libc.so.6 => /lib/libc.so.6 (0x00002af851439000)
        /lib64/ld-linux-x86-64.so.2 (0x0000555555554000)
$ ldd /usr/lib/libexpat.so.1
        libc.so.6 => /lib/libc.so.6 (0x00002b96d0162000)
        /lib64/ld-linux-x86-64.so.2 (0x0000555555554000)
$ ldd /usr/local/apache2/lib/libapr-1.so.0
        librt.so.1 => /lib/librt.so.1 (0x00002ba649f41000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x00002ba64a04a000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00002ba64a17d000)
        libdl.so.2 => /lib/libdl.so.2 (0x00002ba64a292000)
        libc.so.6 => /lib/libc.so.6 (0x00002ba64a395000)
        /lib64/ld-linux-x86-64.so.2 (0x0000555555554000)
$ ldd /lib/librt.so.1
        libc.so.6 => /lib/libc.so.6 (0x00002aab3a499000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00002aab3a6d3000)
        /lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2
(0x0000555555554000)
$ ldd /lib/libcrypt.so.1
        libc.so.6 => /lib/libc.so.6 (0x00002ae20b9dd000)
        /lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2
(0x0000555555554000)
$ ldd /lib/libpthread.so.0
        libc.so.6 => /lib/libc.so.6 (0x00002b15ada6d000)
        /lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2
(0x0000555555554000)
$ ldd /lib/libdl.so.2
        libc.so.6 => /lib/libc.so.6 (0x00002b4f78de5000)
        /lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2
(0x0000555555554000)
$ ldd /lib/libc.so.6
        /lib/ld-linux-x86-64.so.2 (0x00002b7744489000)

My own analysis is that apr-util depends on the old version of
libexpat. So I checked Apache installation doc, and found that I can
use --with-included-apr to force Apache use the bundled apr. Since my
os (Ubuntu 6.06) is an old version, I thought this is very likely to
be the cause.

I tried to recompile Apache with the --with-included-apr option,
here's my newest config.nice
#! /bin/sh
#
# Created by configure

"./configure" \
"--prefix=/usr/local/apache2" \
"--enable-proxy" \
"--enable-proxy-http" \
"--enable-proxy-balancer" \
"--enable-dav" \
"--enable-rewrite" \
"--enable-deflate" \
"--with-included-apr" \
"$@"


But it didn't solve the problem. The above information from ldd
command is actually after I recompiled Apache, which is unchanged.

The libexpat on my OS is the latest version, because I have runned this command:
apt-get install libexpat1
And it says it's already the newest version, which is 1.95.8-3
according to the ubuntu's pachage directory.

Luyi






On Sun, Apr 6, 2008 at 3:09 PM, Graham Dumpleton
<graham.dumpleton at gmail.com> wrote:
> 2008/4/5 Luyi Chen <lychen1109 at gmail.com>:
>
> > Hi,
>  >
>  >  I am trying to make mod_python working on Apache 2.2.6, ubuntu dapper
>  >  6.06. But I was hit by the problem of wrong expat library issue, as
>  >  stated by Graham Dumpleton, on this page
>  >  http://www.dscpl.com.au/wiki/ModPython/Articles/ExpatCausingApacheCrash
>  >
>  >  I am using a custom compiled Apache2 in /usr/local/apache2, so I
>  >  checked version of libexpat with the following line,
>  >
>  >  ldd /usr/local/apache2/bin/httpd
>  >
>  >  in the result there're two lines
>  >   libexpat.so.0 => /usr/local/apache2/lib/libexpat.so.0 (0x00002b4f4e1c5000)
>  >   libexpat.so.1 => /usr/lib/libexpat.so.1 (0x00002b4f4e2e7000)
>
>  If you have this, then something is quite broken with your Apache
>  httpd to start with, before even mod_python is loaded.
>
>  What is the full 'ldd' output from running it against 'httpd'.
>
>  Also go through each of the .so file it is dependent upon and run
>  'ldd' on them as well and post all the results.
>
>  As far as I can tell, one of the .so files depended on by httpd is
>  itself dependent on libexpat (a different version), as I can't see
>  otherwise how you can get an executable dependent on two different
>  versions of a shared library.
>
>  Graham
>
>
>  >  The one in /usr/local/apache2/lib is an old version 1.95.2, while the
>  >  one in /usr/lib is 1.95.8, which is identical to the version of
>  >  libexpat used by python.
>  >
>  >  How do I tell Apache to use the new version of libexpat only?
>  >
>  >  Luyi
>  >  _______________________________________________
>  >  Mod_python mailing list
>  >  Mod_python at modpython.org
>  >  http://mailman.modpython.org/mailman/listinfo/mod_python
>  >
>


More information about the Mod_python mailing list