CoreDumpDirectory不能用于ubuntu;在apache2错误日志中获取分段错误

时间:2011-04-29 14:14:01

标签: python django ubuntu apache2 mod-wsgi

我无法在ubuntu 10.10上记录CoreDumpDirectory中的apache2崩溃。我正在使用Django 1.2.3和apache2与mod_wsgi。我按照回答this问题列出的步骤,但无济于事。我添加了 - CoreDumpDirectory /var/cache/apache2/
在apache2.conf文件的末尾然后执行 'ulimit -c unlimited',重新启动了apache服务器。然后我复制了导致apache错误日志显示的条件 - “child pid 27288 exit signal Segmentation fault (11)”,但没有提到在CoreDumpDirectory中崩溃的apache2日志记录,也没有/ var / cache / apache2中没有任何内容。

编辑:

我能够解决这个问题。问题在于PyLucene环境在运行时被初始化。每次请求到来时我都在执行initvm()调用,这导致了段错误。 This link指示我应该在.wsgi文件中执行此操作,并且在执行此操作后没有出现分段错误。

2 个答案:

答案 0 :(得分:1)

我也遇到过这个mod_wsgi孩子没有转储核心的问题。简而言之:您需要修改/etc/sysctl.conf并设置fs.suid_dumpable=2

长篇故事:

Linux防止为以root身份启动的进程转储核心,然后删除权限。 (这是一个安全功能,因此SUID可执行文件不会将内存泄露给用户)。设置suid_dumpable = 2意味着核心文件将由root拥有,因此也没有直接的安全问题。

为什么会影响mod_wsgi?显然mod_wsgi的子进程是从Apache的主进程中分离出来的。 Apache通常以root身份启动,因为它需要绑定特权端口号(如80),然后删除权限。

(原始错误报告:https://code.google.com/p/modwsgi/issues/detail?id=247

答案 1 :(得分:0)

我能够解决这个问题。问题在于PyLucene环境在运行时被初始化。每次请求到来时我都在执行initvm()调用,这导致了段错误。 This link 指示我应该在.wsgi文件中执行此操作,并且在执行此操作后没有出现分段错误。