簡體   English   中英

Apache mod_wsgi崩潰

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM