最近我一直在我的networking服务器上收到很多分段错误警告。
警告看起来像:
[notice] child pid xxxx exit signal Segmentation fault (11)
我已经咨询了服务器提供商(这是一个专门的红帽企业服务器),他们找不到任何东西。
我到目前为止所做的:
由于我已经尝试了以下错误:
在发生警告的时候,似乎有大量的自由内存,进程的数量非常less(httpd进程的数量约为最大允许的四分之一)。
什么可能导致这些错误?
编辑:当前版本
编辑2:虽然我很久以前问过这个问题,但是直到升级到php 5.3之后,我才解决了这个问题。
曾多次观察到“出口信号分段故障(11)”错误。 这发生在一些脚本没有完成,而Apache崩溃。
如果你在apache上使用基于PHP的网站,这很可能发生。
如果你正在使用php检查conf.d / php.conf中的phpconfiguration文件中的configuration:
SetOutputFilter PHP SetInputFilter PHP LimitRequestBody 524288
删除LimitRequestBody行。 并观察。 错误应该消失。
另外如果你使用的是PHP,下面的版本完美的工作。 apache 2.0.43和php 4.3.0_RC1
注意:这个答案纯粹是基于我过去对我面临的错误和问题的研究。 让我知道您当前的configuration和反馈。
什么可能导致这些错误?
有一件事会对诊断问题有所帮助,如果您尝试查找发生此错误时正在查看哪些页面/资源。 如果你能够检查你的访问日志,看看发生段错误的同时发生了什么。
有可能是一些PHP脚本或其他事情正在做一些导致崩溃的事情。 一旦找出导致崩溃的页面/文件,那么您可以深入了解它正在做什么,或者是否有可用的错误修复。
OKay,分段错误是一个程序错误的指示; 这不是一个内存太less的问题。 它发生在程序试图访问不允许访问的内存时。
如果发生在Apache中,则需要启用核心转储并重新启动httpd进程。 Apache文档中有这样的指导。
你有没有更新Apache或最近的任何模块? 我已经看到这个问题,当你有一个国防部是build立在不同的接口版本(在我的情况下,外汇)我认为。 如果您可以缩小到几个软件,请检查所有的版本信息。 见http://www.dscpl.com.au/wiki/ModPython/Articles/ExpatCausingApacheCrash
通常当我看到这是由一个PHP脚本无限recursion造成的。 您可以使用error_log上的时间戳来标识可能导致问题的来自access_log的请求。 如果有PHP脚本请求,那么你(或你的开发者)应该看看这些页面,看看是否有任何潜在的问题。
吉姆。
最近我有一个这样的错误,这与MySQL没有正确访问数据库的Cacti有关。
文件global_forms.php中有一个数组,它将数组设置为键的值之一。 该数组有一个键和一个值,称为一个函数来从数据库加载configuration值。 我从来没有料到这个组合会导致分段错误,但是在追踪它之后没有其他的原因。
你有没有正确的mod_whatever下载? 我有一个类似的情况,我为Solaris下载了mod_jk,但是我运行的Apache包含在Sun中,并没有使用gcc编译,而是使用它们的编译器。 我不得不下载mod \ jk源文件并用Sun编译器编译。
我知道这是黑暗中的一个镜头,但是由于没有答案被标记为select,我以为我会把它扔到那里。
查看这个博客entnry了解如何使用核心转储来查找PHP代码中的错误的详细信息:
http://www.omh.cc/blog/2008/mar/6/fixing-apache-segmentation-faults-caused-php/
这不是我的博客文章 – 我只是偶然发现它,并发现它有用。
斯科特