[mod_python] Re: Upgrading expat for apache question

Graham Dumpleton graham.dumpleton at gmail.com
Sat Mar 20 07:06:38 EDT 2010


On 19 March 2010 07:48, wayne collier <Wayne.Collier at noaa.gov> wrote:
> Graham -my understanding of RH apache  is  modules have to   explicitly
> loaded  in httpd.con file.  I check all the snippet  files  and  no  php
> shared object file is being loaded.  I noticed before that did not seem to
> have any mod_authz_ldap shared object loaded in my configuration file. Do I
> need to set things up like i am doing authorization and authentication thru
> apache?  Is possible that needs to be included?
>
> Also, I went thru some of the troubleshooting steps. I ran my web code to
> reproduce the seg fault and then gbc to attach the process id.  I got the
> following before getting really lost here. Any suggestions here would
> greatly appreciated. Thanks.
>
> Wayne
>
> GBD WORK .....
>
> Detaching from program: /usr/local/httpd-2.2.11/bin/httpd, process 18421
> [root at mingus psp]# gdb /usr/local/httpd-2.2.11/bin/httpd 18421
> GNU gdb Fedora (6.8-37.el5)
> Copyright (C) 2008 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later
> <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
> and "show warranty" for details.
> This GDB was configured as "i386-redhat-linux-gnu"...
> Attaching to program: /usr/local/httpd-2.2.11/bin/httpd, process 18421
>
> warning: .dynamic section for "/usr/lib/libgssapi_krb5.so.2" is not at the
> expected address
>
> warning: difference appears to be caused by prelink, adjusting expectations
>
> warning: .dynamic section for "/usr/lib/libkrb5.so.3" is not at the expected
> address
>
> warning: difference appears to be caused by prelink, adjusting expectations
>
> warning: .dynamic section for "/lib/libcom_err.so.2" is not at the expected
> address
>
> warning: difference appears to be caused by prelink, adjusting expectations
>
> warning: .dynamic section for "/usr/lib/libk5crypto.so.3" is not at the
> expected address
>
> warning: difference appears to be caused by prelink, adjusting expectations
>
> warning: .dynamic section for "/lib/libresolv.so.2" is not at the expected
> address
>
> warning: difference appears to be caused by prelink, adjusting expectations
>
> warning: .dynamic section for "/usr/lib/libkrb5support.so.0" is not at the
> expected address
>
> warning: difference appears to be caused by prelink, adjusting expectations
>
> warning: .dynamic section for "/lib/libkeyutils.so.1" is not at the expected
> address
>
> warning: difference appears to be caused by prelink, adjusting expectations
>
> warning: .dynamic section for "/lib/libselinux.so.1" is not at the expected
> address
>
> warning: difference appears to be caused by prelink, adjusting expectations
>
> warning: .dynamic section for "/lib/libsepol.so.1" is not at the expected
> address
>
> warning: difference appears to be caused by prelink, adjusting expectations
>
> warning: .dynamic section for "/usr/lib/liblber-2.3.so.0" is not at the
> expected address
>
> warning: difference appears to be caused by prelink, adjusting expectations
> Reading symbols from /lib/libm.so.6...done.
> Loaded symbols for /lib/libm.so.6
> Reading symbols from /usr/local/httpd-2.2.11/lib/libaprutil-1.so.0...done.
> Loaded symbols for /usr/local/httpd-2.2.11/lib/libaprutil-1.so.0
> Reading symbols from /lib/libexpat.so.0...done.
> Loaded symbols for /lib/libexpat.so.0
> Reading symbols from /usr/local/httpd-2.2.11/lib/libapr-1.so.0...done.
> Loaded symbols for /usr/local/httpd-2.2.11/lib/libapr-1.so.0
> Reading symbols from /lib/libuuid.so.1...done.
> Loaded symbols for /lib/libuuid.so.1
> Reading symbols from /lib/librt.so.1...done.
> Loaded symbols for /lib/librt.so.1
> Reading symbols from /lib/libcrypt.so.1...done.
> Loaded symbols for /lib/libcrypt.so.1
> Reading symbols from /lib/libpthread.so.0...done.
> [Thread debugging using libthread_db enabled]
> [New Thread 0x135700 (LWP 18421)]
> Loaded symbols for /lib/libpthread.so.0
> Reading symbols from /lib/libdl.so.2...done.
> Loaded symbols for /lib/libdl.so.2
> Reading symbols from /lib/libc.so.6...done.
> Loaded symbols for /lib/libc.so.6
> Reading symbols from /lib/ld-linux.so.2...done.
> Loaded symbols for /lib/ld-linux.so.2
> Reading symbols from /lib/libnss_files.so.2...done.
> Loaded symbols for /lib/libnss_files.so.2
>
>
> (gdb) print PyRun_SimpleString("import traceback; traceback.print_stact()")
>
> Program received signal SIGSEGV, Segmentation fault.
> PyImport_AddModule (name=0x5596b3 "__main__") at Python/import.c:366
> 366             PyInterpreterState *interp = PyThreadState_GET()->interp;
> The program being debugged was signaled while in a function called from GDB.
> GDB remains in the frame where the signal was received.
> To change this behavior use "set unwindonsignal on"
> Evaluation of the expression containing the function (PyRun_SimpleString)
> will be abandoned.
> (gdb)

I don't want a Python stack trace, I want a C stack trace as
documented in that page I sent you to. Use:

  (gdb) thread apply all bt

Graham

> Graham Dumpleton wrote:
>
> On 13 March 2010 11:28, wayne collier <Wayne.Collier at noaa.gov> wrote:
>
>
> Okay I am running RH linux and I don't seem to have mod_ldap or
> mod_authnz_ldap shared objects loaded in my httpd.conf file.
>
>
> They may not be loaded from httpd.conf but from a configuration file
> snippet loaded into Apache. I don't know RH Apache configuration
> layout, but check all snippet files in subdirectories to the
> httpd.conf directory.
>
> The conflict may also be because you are loading mod_php.
>
> Ultimately you may have to use gdb to work out exactly where it
> crashes. Hopefully not too much symbol information has been stripped
> and gdb will be able to tell you from which library LDAP code that is
> crashing is coming from.
>
> Use first documented procedure for running Apache in single process
> under gdb in:
>
>
> http://code.google.com/p/modwsgi/wiki/DebuggingTechniques#Debugging_Crashes_With_GDB
>
> This is for mod_wsgi, but same can be done for mod_python.
>
> Graham
>
>
>
> Also I ran ldd
> and got the following results:
>
>
>
>
> ldd /usr/local/httpd-2.2.11/bin/httpd
>
>
>     linux-gate.so.1 =>  (0x00157000)
>     libm.so.6 => /lib/libm.so.6 (0x00ce8000)
>     libaprutil-1.so.0 => /usr/local/httpd-2.2.11/lib/libaprutil-1.so.0
> (0x00315000)
>     libexpat.so.0 => /lib/libexpat.so.0 (0x00d70000)
>     libapr-1.so.0 => /usr/local/httpd-2.2.11/lib/libapr-1.so.0 (0x00844000)
>     libuuid.so.1 => /lib/libuuid.so.1 (0x002f2000)
>     librt.so.1 => /lib/librt.so.1 (0x00d65000)
>     libcrypt.so.1 => /lib/libcrypt.so.1 (0x07e07000)
>     libpthread.so.0 => /lib/libpthread.so.0 (0x00d17000)
>     libdl.so.2 => /lib/libdl.so.2 (0x00d11000)
>     libc.so.6 => /lib/libc.so.6 (0x00ba0000)
>     /lib/ld-linux.so.2 (0x00b82000)
>
>
>
> ldd /usr/local/httpd-2.2.11/modules/mod_python.so
>
>
>     linux-gate.so.1 =>  (0x00aec000)
>     libpthread.so.0 => /lib/libpthread.so.0 (0x00730000)
>     libdl.so.2 => /lib/libdl.so.2 (0x0027f000)
>     libutil.so.1 => /lib/libutil.so.1 (0x00f70000)
>     libm.so.6 => /lib/libm.so.6 (0x009b1000)
>     libc.so.6 => /lib/libc.so.6 (0x00110000)
>     /lib/ld-linux.so.2 (0x00b82000)
>
> I don't seem to have anything with ldap listed. Am I on the right track.?
>
>
> Wayne
>
> Graham Dumpleton wrote:
>
> A segmentation fault can occur for other reasons. If it is happening
> when you use LDAP, it could be a conflict in versions of LDAP
> libraries being used by Apache or PHP and Python LDAP module.
>
> You should use the 'ldd' command to determine what LDAP shared library
> is used by mod_authnz_ldap and compare that to the LDAP library being
> used by the C extension module component of the Python module you are
> using to access LDAP. Similarly find any PHP extension modules which
> use LDAP and look at those.
>
> If mod_authnz_ldap is loaded into Apache and you don't need it, then
> don't load it and see if problem goes away. Also try not loading PHP
> if it is being loaded. Narrow down which is in conflict.
>
> As far as I remember, Apache itself doesn't link to LDAP library and
> even possible that mod_authnz_ldap uses an internal LDAP library
> rather than linking external library. All the same even use ldd on
> Apache binary itself to see which LDAP library may be linked.
>
> Graham
>
> On 10 March 2010 04:18, wayne collier <Wayne.Collier at noaa.gov> wrote:
>
>
> Okay I guess I will look else where. However, I keep getting segmentation
> faults when try an execute the ldap command
>
> t=l.simple_bind_s(dn,pw). It is only line of code that crashes. If the have
> the classic expat problem, would that mean I would get a segmentation
> fault problem from the start.  Also, ldap script works okay as a stand alone
> script. Thanks.
>
> Wayne
>
>
> Graham Dumpleton wrote:
>
> That is not your problem, quoting:
>
> http://code.google.com/p/modwsgi/wiki/IssuesWithExpatLibrary
>
> which is more up to date in respect of this issue, even if the
> mod_wsgi variant of that document:
>
> """Note that this only applies to Python versions prior to Python 2.5.
> >From Python 2.5 onwards, the copy of the "expat" library bundled in
> with Python is name space prefixed, thereby avoid name clashes with an
> "expat" library which has previously been loaded."""
>
> You are using Python 2.6, so you cannot be affected by this problem.
>
> Graham
>
> On 9 March 2010 05:54, wayne collier <Wayne.Collier at noaa.gov> wrote:
>
>
> Hello all. I need some help solving the dreaded segmentation fault that has
> cropped several time on this board. I have read the link
> http://www.dscpl.com.au/wiki/ModPython/Articles/ExpatCausingApacheCrash and
> followed the step and have uncovered the following.
>
>
>
>
> ldd    /usr/local/httpd-2.2.11/bin/httpd | grep expat
>
>
>     libexpat.so.0 => /lib/libexpat.so.0 (0x00d70000)
>
>
>
> strings /lib/libexpat.so.0  | grep expat_
>
>
> expat_1.95.8
>
>
>
>   ps aux | grep http | head -3
>
>
> webuser  14986  0.0  2.1  54236 19048 ?        S    Mar04   0:01
> /usr/local/httpd-2.2.11/bin/httpd -d /usr/local/httpd-2.2.11 -f
> /usr/local/httpd-2.2.11/conf/httpd.conf
> webuser  14987  0.0  3.2 144128 29540 ?        S    Mar04   0:01
> /usr/local/httpd-2.2.11/bin/httpd -d /usr/local/httpd-2.2.11 -f
> /usr/local/httpd-2.2.11/conf/httpd.conf
> webuser  14998  0.0  3.2 144212 29660 ?        S    Mar04   0:01
> /usr/local/httpd-2.2.11/bin/httpd -d /usr/local/httpd-2.2.11 -f
> /usr/local/httpd-2.2.11/conf/httpd.conf
>
>
>
>   /usr/sbin/lsof -p 14986 | grep expat
>
>
> httpd   14986 webuser  mem    REG     3,5   572313  972637
> /opt/Python/lib/python2.6/lib-dynload/pyexpat.so
> httpd   14986 webuser  mem    REG     3,5   133120 1883791
> /lib/libexpat.so.0.5.0
>
> I am not sure why I get 2 shared libaries here.
>
>
>
>   strings  /lib/libexpat.so.0.5.0 | grep expat_
>
>
> expat_1.95.8
>
>
>
>
> strings /opt/Python/lib/python2.6/lib-dynload/pyexpat.so | grep expat_
>
>
> pyexpat.expat_CAPI 1.0
> expat_CAPI
> expat_2.0.0
>
>
>
>
> import pyexpat
> pyexpat.version_info
>
>
> (2, 0, 0)
>
>
> So it seems like I need get expat_1.95.8 apache is using up to expat_2.0.0.
> Can I simply try replacing the 1.95.8 library with 2.0.0. Or do I have
> recompile with Apache? If I do recompile I need to recompile apache with
> mod_python as well?
>
>
>
>
>
>
> _______________________________________________
> Mod_python mailing list
> Mod_python at modpython.org
> http://mailman.modpython.org/mailman/listinfo/mod_python
>
>
>
>
>
> _______________________________________________
> Mod_python mailing list
> Mod_python at modpython.org
> http://mailman.modpython.org/mailman/listinfo/mod_python
>
>
>
>
>
> _______________________________________________
> 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