Django WSGI Application SegFault

最后都变了- 提交于 2019-12-10 16:33:44

问题


so i'm getting segfaults with my django wsgi application in mod_wsgi via apache 2.22

here's the wsgi app:

import os
import sys

sys.path.append('/home/***.com/zpencerq')
sys.path.append('/home/***.com/zpencerq/part')

os.environ['DJANGO_SETTINGS_MODULE'] = 'part.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

here's the error from the logs:

[Mon Jun 18 18:13:39 2012] [info] mod_wsgi (pid=78535): Create interpreter 'www.***.com|'.
[Mon Jun 18 18:13:39 2012] [info] [client 128.227.57.184] mod_wsgi (pid=78535, process='***', application='www.***.com|'): Loading WSGI script '/usr/home/***.com/zpencerq/part/apache/django.wsgi'.
[Mon Jun 18 18:13:39 2012] [error] [client 128.227.57.184] Premature end of script headers: django.wsgi
[Mon Jun 18 18:13:40 2012] [notice] child pid 78535 exit signal Segmentation fault (11)

here's the library references of mod_wsgi:

root@seese# ldd /usr/local/apache/modules/mod_wsgi.so
/usr/local/apache/modules/mod_wsgi.so:
        libpython2.7.so.1 => /usr/local/lib/libpython2.7.so.1 (0x28300000)
        libutil.so.7 => /lib/libutil.so.7 (0x2819f000)
        libm.so.5 => /lib/libm.so.5 (0x281ac000)
        libc.so.7 => /lib/libc.so.7 (0x28080000)
        libthr.so.3 => /lib/libthr.so.3 (0x281c1000)

here are the loaded modules:

Loaded Modules:
 core_module (static)
 authn_file_module (static)
 authn_default_module (static)
 authz_host_module (static)
 authz_groupfile_module (static)
 authz_user_module (static)
 authz_default_module (static)
 auth_basic_module (static)
 include_module (static)
 filter_module (static)
 deflate_module (static)
 log_config_module (static)
 env_module (static)
 setenvif_module (static)
 version_module (static)
 mpm_prefork_module (static)
 http_module (static)
 mime_module (static)
 status_module (static)
 autoindex_module (static)
 asis_module (static)
 suexec_module (static)
 cgi_module (static)
 negotiation_module (static)
 dir_module (static)
 actions_module (static)
 userdir_module (static)
 alias_module (static)
 so_module (static)
 php5_module (shared)
 wsgi_module (shared)
Syntax OK

here are the compiled in modules:

root@seese# httpd -l
Compiled in modules:
  core.c
  mod_authn_file.c
  mod_authn_default.c
  mod_authz_host.c
  mod_authz_groupfile.c
  mod_authz_user.c
  mod_authz_default.c
  mod_auth_basic.c
  mod_include.c
  mod_filter.c
  mod_deflate.c
  mod_log_config.c
  mod_env.c
  mod_setenvif.c
  mod_version.c
  prefork.c
  http_core.c
  mod_mime.c
  mod_status.c
  mod_autoindex.c
  mod_asis.c
  mod_suexec.c
  mod_cgi.c
  mod_negotiation.c
  mod_dir.c
  mod_actions.c
  mod_userdir.c
  mod_alias.c
  mod_so.c

here are some python goodies:

root@seese# ls -l /usr/local/bin/python*
lrwxr-xr-x  1 root  wheel     7 Jun 17 13:30 /usr/local/bin/python -> python2
lrwxr-xr-x  1 root  wheel    14 Jun 17 13:30 /usr/local/bin/python-config -> python2-config
-r-xr-xr-x  1 root  wheel  3420 Mar  6 01:22 /usr/local/bin/python-shared2.7
-r-xr-xr-x  1 root  wheel  1631 Mar  6 01:22 /usr/local/bin/python-shared2.7-config
lrwxr-xr-x  1 root  wheel     9 Jun 17 13:30 /usr/local/bin/python2 -> python2.7
lrwxr-xr-x  1 root  wheel    16 Jun 17 13:30 /usr/local/bin/python2-config -> python2.7-config
-rwxr-xr-x  1 root  wheel  8084 Jun 17 13:30 /usr/local/bin/python2.7
-rwxr-xr-x  1 root  wheel  1624 Jun 17 13:30 /usr/local/bin/python2.7-config

i've been at this for a very long time haha, and very frustrated with the many headaches that came along the way. if someone (perhaps graham dumpleton!) could help me out that would be amazing


回答1:


Quoting from mod_wsgi docs:

Q: Why when first request is made against a WSGI application does the Apache server process handling the request crash with a 'segmentation fault'?

A: This is nearly always caused due to a shared library version conflict. That is, Apache or some Apache module is linked against a different version of a library than that which is being used by a particular Python module that the WSGI application makes use of. The most common culprits are the expat and MySQL libraries, but it can also occur with other shared libraries.

Another cause of a process crash only upon the first request can be a third party C extension module for Python which has not been implemented so as to work within a secondary Python sub interpreter. The Python bindings for Subversion are a particular example, with the Python module only working correctly if the WSGI application is forced to run within the first interpreter instance created by Python.

Further information on these problems can be found in various sections of Application Issues. The problems with the expat library are also gone into in more detail in Issues With Expat Library.

I see you have Apache and Python both installed at /usr/local/, so I assume you have compiled them. You have to make sure the C extensions used in your code are linked against the right versions too. The other option is, you're using some buggy module that behaves badly when loaded via mod_wsgi.

Can you run your application without mod_wsgi, running ./manage.py for instance?



来源:https://stackoverflow.com/questions/11092089/django-wsgi-application-segfault

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!