代码之家  ›  专栏  ›  技术社区  ›  arod

coredumpdirectory不在ubuntu上工作;php出现分段错误

  •  6
  • arod  · 技术社区  · 15 年前

    我在试图解决一个分割错误。此消息出现在my apache-error.log中:

    [注意]子PID 3979退出信号 分段故障(11)

    我试过禁用一些apache和php模块,但仍然出现了同样的错误。

    我也试过把这个放到apache2.conf中:

    coredumpdirectory/tmp/apache2 gdb转储

    然后chmod 777,chown www数据…以便服务器可以写入。

    我看不到核心转储文件来提示错误。

    有人知道为什么coredumpdirectory不在ubuntu上工作吗?

    答案:$ulimit-a 核心文件大小
    (块,-c)不受限制的数据段大小
    (kbytes,-d)无限制调度 优先级(-e)0文件大小 (块,-f)无限挂起信号 (-i)15863最大锁定内存
    (kbytes,-l)32最大内存大小
    (kbytes,-m)无限制打开的文件
    (-N)1024管道尺寸(512 字节,-p)8个POSIX消息队列
    (字节,-q)819200实时优先级 (-r)0堆栈大小
    (千字节,-s)8192 CPU时间
    (秒,-t)无限制最大用户数 进程(-u)15863 虚拟内存(KB,-V) 无限文件锁定
    (-x)无限制

    3 回复  |  直到 9 年前
        1
  •  11
  •   Toby Speight    9 年前

    我终于在ubuntu中看到了apache的核心转储:

    1. 编辑 /etc/default/apport
    2. 编辑apache2.conf:

        CoreDumpDirectory /tmp/apache2-gdb-dump
      
    3. 确保apache可以写入:

      # chmod 777 /tmp/apache2-gdb-dump
      
    4. 移除堆芯转储大小限制:

      # ulimit -c unlimited
      
    5. (可选)更改核心转储的名称模式:

      # echo 'coredump-%e.%p' > /proc/sys/kernel/core_pattern
      

    分析垃圾场的用途 gdb :

    $ gdb apache2 /tmp/apache2-gdb-dump/coredump-x.x
    

    要查看stacktrace详细信息,请在gdb中执行以下操作:

    gdb> where
    

    我做到了,我得到了堆芯。 然而,我的问题并没有通过查看coredump来解决; 这显然是我的php脚本中的一个问题。

    更多信息: http://matrafox.info/apache-child-pid-exit-signal-segmentation-fault.html

        2
  •  2
  •   laher    15 年前

    默认情况下,核心转储在ubuntu上被禁用

    试试这个:

    ulimit -c unlimited
    

    “ulimit-a”告诉您当前的限制是什么(0表示禁用)

        3
  •  1
  •   hoppa    14 年前

    请注意/tmp中的子目录将在重新启动后被删除,这将导致由于配置错误而导致apache无法启动。

    第二点,炒菜是不必要的。/tmp是chmoded777,所以任何人都可以在那里读/写。

    @arod sudo ulimit-c不工作,因为-c也是sudo的一个参数。你需要做sudo-s,然后ulimit-c