Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I'm getting Segmentation fault error when trying to access the "Hello World" pyramid app. This error only occurs when running against CentOS 5.7 setup, but no problem whatsoever when tested against OSX and Arch Linux. Could it be a CentOS specific issue?

[error] [client 10.211.55.2] Premature end of script headers: pyramid.wsgi
[notice] child pid 31212 exit signal Segmentation fault (11)

I have tried to follow the troubleshooting guides posted here http://code.google.com/p/modwsgi/wiki/InstallationIssues which suggests that it might caused by missing Shared Library. A quick check reveals that shared library is not the issue.

[centos57@localhost modules]$ ldd mod_wsgi.so 
    linux-gate.so.1 =>  (0x00e6a000)
    libpython2.7.so.1.0 => /home/python/lib/libpython2.7.so.1.0 (0x0024c000)
    libpthread.so.0 => /lib/libpthread.so.0 (0x00da8000)
    libdl.so.2 => /lib/libdl.so.2 (0x00cd6000)
    libutil.so.1 => /lib/libutil.so.1 (0x00110000)
    libm.so.6 => /lib/libm.so.6 (0x0085c000)
    libc.so.6 => /lib/libc.so.6 (0x00682000)
    /lib/ld-linux.so.2 (0x0012b000)

Then I found another clue that might be able to solve my problem. Unfortunately libexpat is not the source of the problem. http://code.google.com/p/modwsgi/wiki/IssuesWithExpatLibrary

[centos57@localhost bin]$ ldd ~/httpd/bin/httpd | grep expat
libexpat.so.1 => /usr/local/lib/libexpat.so.1 (0x00b00000)

[centos57@localhost bin]$ strings /usr/local/lib/libexpat.so.1 | grep expat
   libexpat.so.1
   expat_2.0.1

[centos57@localhost bin]$ python
  Python 2.7.2 (default, Nov 26 2011, 08:08:44) 
  [GCC 4.1.2 20080704 (Red Hat 4.1.2-51)] on linux2
  Type "help", "copyright", "credits" or "license" for more information.
  >>> import pyexpat
  >>> pyexpat.version_info
  (2, 0, 0)
  >>> 

I've been pulling my hair out trying to figure out what I'm missing in my setup. Why the problem only occurs with CentOS?

Here is the detailed setup:

Apache 2.2.19
Python 2.7.2
mod_wsgi-3.3

/home/httpd/conf/extra/pyramid.wsgi

from pyramid.paster import get_app
application = get_app('/home/homecamera/hcadmin/root/production.ini', 'main')

/home/httpd/conf/extra/modwsgi.conf

LoadModule wsgi_module modules/mod_wsgi.so
WSGIScriptAlias /myapp /home/root/test.wsgi
<Directory /home/root>
  WSGIProcessGroup pyramid
  Order allow,deny
  Allow from all
</Directory>

# Use only 1 Python sub-interpreter.  Multiple sub-interpreters
# play badly with C extensions.

WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
WSGIDaemonProcess pyramid user=daemon group=daemon processes=1 \
  threads=4 \
  python-path=/home/python/lib/python2.7/site-packages
WSGIScriptAlias /hello /home/httpd/conf/extra/pyramid.wsgi

<Directory /home/httpd/conf/extra>
  WSGIProcessGroup pyramid
  Order allow,deny
  Allow from all
</Directory>

Again this same setup works on OSX and Arch Linux but not on CentOS 5.7. Could someone out there point me to the right direction before I ran out of my hair.

====================================================================================

When apache started with gdb, I got a couple of warnings

Reading symbols from /home/httpd/bin/httpd...done.
Attaching to program: /home/httpd/bin/httpd, process 1821

warning: .dynamic section for "/lib/libcrypt.so.1" is not at the expected address

warning: difference appears to be caused by prelink, adjusting expectations

warning: .dynamic section for "/lib/libutil.so.1" is not at the expected address

warning: difference appears to be caused by prelink, adjusting expectations

gdb output. After hitting refresh button, to load pyramid.

(gdb) cont
Continuing.
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/libresolv.so.2" is not at the expected address
warning: difference appears to be caused by prelink, adjusting expectations

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x8edbb90 (LWP 1824)]
0x0814c120 in EVP_PKEY_CTX_dup ()

apache_error_log

[info] mod_wsgi (pid=1821): Starting process 'pyramid' with threads=1.
[info] mod_wsgi (pid=1821): Initializing Python.
[info] mod_wsgi (pid=1821): Attach interpreter ''.
[info] mod_wsgi (pid=1821): Create interpreter 'web.domain.com:20000|/hcadmin'.
[info] [client 10.211.55.2] mod_wsgi (pid=1821, process='pyramid', application='web.domain.com:20000|/hcadmin'): Loading WSGI script '/home/httpd/conf/extra/pyramid.wsgi'.
[error] hello 1
share|improve this question

1 Answer 1

up vote 1 down vote accepted

Since you are using daemon mode, attach gdb to the daemon process and fire off a request and see what stack trace you get from gdb.

http://code.google.com/p/modwsgi/wiki/DebuggingTechniques#Debugging_Crashes_With_GDB

share|improve this answer
    
I updated my post with the output from gdb. There are warnings shown in the message, could this be the problem? –  carbotex Nov 29 '11 at 9:53
    
You need to go 'where' to generate full stack trace. From memory though that function is part of SSL library, so possibly you have a conflict with version of SSL library required by Apache and what SSL modules in Python or some third party Python module want. So, similar issue to expat, but with the SSL library. –  Graham Dumpleton Nov 29 '11 at 9:55
    
This issue has possibly been dealt with on mod_wsgi list before. See groups.google.com/group/modwsgi/browse_thread/thread/… –  Graham Dumpleton Nov 29 '11 at 9:58
    
The issue was because Apache and Python was linking a different version of openssl library. However, I still can't get my setup to work on CentOS. Compiling Apache without --with-ssl option, solved the problem, but it's not the solution we want. –  carbotex Nov 30 '11 at 9:26

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.