[英]Apache mod_wsgi crashing
我正在嘗試設置ReviewBoard,但遇到了mod_wsgi似乎崩潰的問題。 我收到這樣的錯誤消息:
AH00052: child pid 44359 exit signal Segmentation fault (11)
我嘗試按照以下說明使用GDB進行調試: https : //code.google.com/p/modwsgi/wiki/DebuggingTechniques#Debugging_Crashes_With_GDB 。 我沒有運氣。 當我附加gdb並點擊崩潰的URL時,我得到的唯一信息是:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7f170ab51700 (LWP 45017)]
0x00007f17159f957f in __strlen_sse42 () from /lib64/libc.so.6
Missing separate debuginfos, use: debuginfo-install expat-2.0.1-11.el6_2.x86_64 keyutils-libs-1.4-5.el6.x86_64 krb5-libs-1.10.3-37.el6_6.x86_64 libcom_err-1.42.8-1.0.2.el6.x86_64 libffi-3.0.5-3.2.el6.x86_64 libgcc-4.4.7-11.el6.x86_64 libselinux-2.0.94-5.8.el6.x86_64 libstdc++-4.4.7-11.el6.x86_64 libuuid-2.17.2-12.18.0.1.el6.x86_64 openssl-1.0.1e-30.el6_6.8.x86_64 zlib-1.2.3-29.el6.x86_64
(gdb)
我在Oracle Enterprise Linux 6上運行Apache 2.4.12,mod_wsgi 4.4.11和Python 2.6.6。我很困在這里,因為這超出了我以前必須做的任何事情。
編輯:獲得一些更多的信息:
Thread 2 (Thread 0x7fc77b65a700 (LWP 46498)):
#0 __strlen_sse42 () at ../sysdeps/x86_64/multiarch/strlen-sse4.S:32
No locals.
#1 0x00007fc78302ce4b in PyString_FromString (str=0x0) at Objects/stringobject.c:116
size = <value optimized out>
op = <value optimized out>
#2 0x00007fc783090811 in PyModule_AddStringConstant (m=<module at remote 0x7fc7759b56a8>, name=0x7fc76af55ec5 "XML_ERROR_UNDECLARING_PREFIX", value=<value optimized out>) at Python/modsupport.c:636
o = <value optimized out>
#3 0x00007fc76af5508d in initpyexpat () at /usr/src/debug/Python-2.6.6/Modules/pyexpat.c:2041
m = <module at remote 0x7fc7759a6fd8>
d = <value optimized out>
errmod_name = <value optimized out>
errors_module = <module at remote 0x7fc7759b56a8>
modelmod_name = <value optimized out>
model_module = <module at remote 0x7fc7759b5718>
sys_modules = <value optimized out>
capi = {magic = 0x0, size = 0, MAJOR_VERSION = 0, MINOR_VERSION = 0, MICRO_VERSION = 0, ErrorString = 0, GetErrorCode = 0, GetErrorColumnNumber = 0, GetErrorLineNumber = 0, Parse = 0, ParserCreate_MM = 0, ParserFree = 0,
SetCharacterDataHandler = 0, SetCommentHandler = 0, SetDefaultHandlerExpand = 0, SetElementHandler = 0, SetNamespaceDeclHandler = 0, SetProcessingInstructionHandler = 0, SetUnknownEncodingHandler = 0, SetUserData = 0}
capi_object = <value optimized out>
#4 0x00007fc78308d865 in _PyImport_LoadDynamicModule (name=0x7fc77b631500 "pyexpat", pathname=0x7fc77b630430 "/usr/lib64/python2.6/lib-dynload/pyexpat.so", fp=<value optimized out>) at Python/importdl.c:53
m = <value optimized out>
lastdot = <value optimized out>
shortname = <value optimized out>
packagecontext = 0x0
oldcontext = 0x0
p = 0x7fc76af54ad0 <initpyexpat>
#5 0x00007fc78308b8a5 in import_submodule (mod=None, subname=0x7fc77b631500 "pyexpat", fullname=0x7fc77b631500 "pyexpat") at Python/import.c:2592
buf = "/usr/lib64/python2.6/lib-dynload/pyexpat.so\000\000e.so\000-py2.6.egg/pyexpat.pyc\000e.so\000yc\000e.so\000y2.6.egg/pyexpat.pyc\000e.so\000.so\000\307\177\000\000om\376\202\307\177\000\000\020\005c{\307\177\000\000\020R1\203\307\177\000\000\001\000\000\000\000\000\000\000\251\262\r\203\307\177\000\000\251\262\r\203\307\177\000\000+x\376\202\307\177\000\000\220\026%\002\000\000\000\000\020R1\203\307\177\000\000\030\000\000\000\060\000\000\000\340\005c{\307\177\000\000$\000\000\000\307\177\000\000\t\000\000\000\000\000\000\000"...
fp = 0x7fc775a970e0
path = <value optimized out>
loader = 0x0
fdp = <value optimized out>
modules =
{'reviewboard.diffviewer.django': None, 'django.utils.deprecation': <module at remote 0x7fc774dddb08>, 'reviewboard.diffviewer.parser': <module at remote 0x7fc775496520>, 'pygments.filters': <module at remote 0x7fc775b5c050>, 'haystack.signals': <module at remote 0x7fc774f69948>, 'django.dispatch.threading': None, 'docutils.utils.warnings': None, 'pprint': <module at remote 0x7fc774600408>, 'django.middleware.gzip': <module at remote 0x7fc774ba8ad0>, 'django.dispatch.weakref': None, 'paramiko.proxy': <module at remote 0x7fc7756aa520>, 'django.utils.log': <module at remote 0x7fc774b2a750>, 'paramiko.select': None, 'reviewboard.admin.haystack': None, 'SocketServer': <module at remote 0x7fc774b9dcc8>, 'django.contrib.admin.decimal': None, 'xml.etree.sys': None, 'django.test.contextlib': None, 'shlex': <module at remote 0x7fc775550d00>, 'django.utils.http': <module at remote 0x7fc774a31948>, 'djblets.util.datetime': None, 'django.conf.urls.django': None, 'json.sre_constants': None, 'django.core.serializers': <mod...(truncated)
m = <value optimized out>
#6 0x00007fc78308bb24 in load_next (mod=None, altmod=None, p_name=<value optimized out>, buf=0x7fc77b631500 "pyexpat", p_buflen=0x7fc77b6314f8) at Python/import.c:2412
name = 0x7fc775a52b64 "pyexpat"
dot = <value optimized out>
len = 7
p = 0x7fc77b631500 "pyexpat"
result = <value optimized out>
#7 0x00007fc78308c17d in import_module_level (name=0x0, globals=<value optimized out>, locals=<value optimized out>, fromlist=['__doc__'], level=<value optimized out>) at Python/import.c:2133
buf = "pyexpat\000\004\000\000\000\000\000\000\000\340\315\301u\307\177\000\000\260\367\277u\307\177\000\000\017\000\000\000\000\000\000\000p\352\230u\307\177\000\000\260\001{\207\307\177\000\000\345,\001\203\307\177\000\000p#c{\307\177\000\000t\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\250\351\b\203\307\177\000\000ponent(\001\000\000\000t\t\000\000\000universali\002\000\000\000i\005\000\000\000(\001\000\000\000t\n\000\000\000__import__t\006\000\000\000Writerc\000\000\000\000\000\000\000\000\001\000\000\000B\000\000\000s_\000\000\000e\000\000Z\001\000d\000\000Z\002\000d\001\000Z\003\000d\002\000Z\004\000d\003\000\204\000\000Z\005\000d\b\000Z\a\000"...
它似乎與pyexpat有關,我確實在這里閱讀了有關這些問題的信息: https : //code.google.com/p/modwsgi/wiki/IssuesWithExpatLibrary 。 但是,我正在運行Python 2.6.6,它說那里的問題僅適用於2.5之前的Python版本。
您已經自己診斷了答案。 這是我遇到的同樣的問題。
/lib64/libexpat.so.1.5.2
Oracle Enterprise Linux 6 <install path>/ohs/lib/libexpat.so.0.5.0
Oracle HTTP Server 12c(本質上是更名的Apache) 像您一樣,我回溯了Apache httpd coredump。 Apache在調用initpyexpat
在__strlen_ss43
崩潰,這是加載Python模塊pyexpat
一部分,該模塊pyexpat
被加載是因為ReviewBoard需要它。
鏈接時, 這是一個已知問題,由Python pyexpat
模塊針對libexpat
一個版本進行編譯而libexpat
,但是加載了不兼容的版本 。
在我的系統上, pyexpat
模塊(作為ReviewBoard的依賴項安裝)已編譯並與系統的/lib64/libexpat.so.1.5.2
。 但是,Apache配置為加載libexpat.so.0.5.0
。
鏈接的文章說此問題已在Python 2.6中修復,但在OEL 6中未修復:
$ ldd /usr/lib64/python2.6/lib-dynload/pyexpat.so
linux-vdso.so.1 => (0x00007fff0c7de000)
libexpat.so.1 => /lib64/libexpat.so.1 (0x00007f0f27dc0000)
...
pyexpat
模塊沒有鏈接文章所說的前綴,它只是使用系統范圍的libexpat
,因此任何操作都可以。
我發現除了ReviewBoard之外,在需要libexpat的Apache設置中我什么都沒有使用。 因此,我有理由使用為pyexpat
編譯的目錄刪除/替換Apache安裝目錄中的libexpat.so
鏈接:
# cd <install path>/ohs/lib
# mkdir disabled
# mv libexpat* disabled
# ln -s /lib64/libexpat.so.1 libexpat.so.0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.