标签: segmentation-fault

如果出现段错误,您可以在 Linux 中获得任何程序来打印堆栈跟踪吗?

如果我从 shell 运行一个程序,它会出现段错误:

$ buggy_program
Segmentation fault
Run Code Online (Sandbox Code Playgroud)

然而,它会告诉我,有没有办法让程序打印回溯,也许是通过运行这样的东西:

$ print_backtrace_if_segfault buggy_program
Segfault in main.c:35
(rest of the backtrace)
Run Code Online (Sandbox Code Playgroud)

我也不想将 strace 或 ltrace 用于此类信息,因为它们会以任何一种方式打印...

linux segmentation-fault

25
推荐指数
4
解决办法
3万
查看次数

调整 Apache2 prefork MaxClients ServerLimit

我有一台 128 GB Ram 的机器,它使用 Apache2 作为 Web 服务器(在这台机器上没有数据库服务器,数据库机器是一台 64 GB Ram 机器,可以处理 2000 个最大连接)。我使用监控工具看到目前大约有 44 个忙碌的工作人员和 12 个空闲的工作人员,我的 prefork 模块的最佳理论值是多少?

我有时会在高负载时间加载网站时出现空白页面,并在我的 apache 错误日志中出现此错误:

【注意】child pid 13595 exit signal Segmentation fault (11)

如何解决这个问题呢?

我的 Apache2 Prefork 模块配置:

StartServers          3
MinSpareServers       3
MaxSpareServers       5
ServerLimit           3200
MaxClients            3100
MaxRequestsPerChild   0
Run Code Online (Sandbox Code Playgroud)

在 www 机器上免费 -h

总计:128 G 空闲空间:97GB(运行 apache2)共享 0b 缓冲区 1.9G 缓存 23G

Apache2 和其他程序使用的 Ram:

Private  +   Shared  =  RAM used    Program

 96.0 KiB +  61.0 KiB = 157.0 …
Run Code Online (Sandbox Code Playgroud)

hosting mpm-prefork shared-hosting segmentation-fault apache-2.2

23
推荐指数
1
解决办法
6万
查看次数

为什么 logrotate 每次都会导致 Apache 出现段错误?

每次logrotate运行 Apache/2.4.7 (Ubuntu) 都会遇到段错误并且不会重新启动:

[Wed Sep 10 06:35:54.266018 2014] [mpm_event:notice] [pid 20599:tid 140630283466624] AH00493: SIGUSR1 received.  Doing graceful restart
[Wed Sep 10 06:35:54.885118 2014] [core:notice] [pid 20599] AH00060: seg fault or similar nasty error detected in the parent process
Run Code Online (Sandbox Code Playgroud)

我的 apache logrotate 脚本如下所示:

/var/log/apache2/*.log {
    daily
    missingok
    rotate 52
    compress
    delaycompress
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
        /usr/sbin/apachectl graceful
    endscript
    prerotate
        if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
            run-parts /etc/logrotate.d/httpd-prerotate; \
        fi; \
    endscript
}

/srv/apache/log/*.log { …
Run Code Online (Sandbox Code Playgroud)

logrotate segmentation-fault apache-2.4

15
推荐指数
1
解决办法
1万
查看次数

段错误时如何从 apache 获取核心转储

我已经按照网上很多地方的说明,在 apache 产生段错误时如何从 apache 获取核心转储,但它仍然拒绝生成转储。

我有:

  1. CoreDumpDirectory指令添加到httpd.conf文件中并将其设置为/tmp
  2. 已执行 ulimit -c unlimited
  3. 提供了使用的转储模式 echo '/tmp/core-%e.%p' > /proc/sys/kernel/core_pattern
  4. 还跑了 echo 0 > /proc/sys/kernel/core_uses_pid

Httpd 已重新启动,但仍未创建转储。

我正在运行 CentOS 5.8 x64httpd-2.2.3-65.el5.centos.3php-5.3.20-13.el5.art

任何帮助将非常感激!

httpd dump segmentation-fault

14
推荐指数
1
解决办法
3万
查看次数

如何诊断频繁的段错误

我的服务器在不同的工具中将频繁的分段错误记录到 /var/log/kern.log。到目前为止,我已经在 Perl、PHP 和 rsync 中看到过它们。所有安装的软件都是最新的 Debian 软件包。这是日志文件的摘录:

Mar  2 01:07:54 gaz kernel: [ 5316.246303] imapsync[4533]: segfault at 8b ip 00007fb448c98fe6 sp 00007ffff571dd68 error 4 in libperl.so.5.10.1[7fb448bd7000+164000]
Mar  2 01:17:42 gaz kernel: [ 5904.354307] php5-cgi[4441]: segfault at 2bb3dc8 ip 0000000002bb3dc8 sp 00007fffbeeaae48 error 15
Mar  2 02:54:05 gaz kernel: [11687.922316] php5-cgi[4495]: segfault at 2d7acf9 ip 0000000002d7acf9 sp 00007fff60c6eb18 error 15
Mar  2 10:50:08 gaz kernel: [40250.390322] BUG: unable to handle kernel paging request at 00000000024b03f0
Mar  2 10:50:08 gaz kernel: …
Run Code Online (Sandbox Code Playgroud)

hardware linux diagnostic segmentation-fault

11
推荐指数
2
解决办法
3万
查看次数

段错误未登录到 /var/log/messages

我正在使用 Red Hat Enterprise Linux Server 版本 5。在这种情况下,每当用户进程由于段错误而崩溃时,它就不会登录到 /var/log/messages 中。甚至 dmesg 也没有显示任何与此相关的消息。

在另一个发行版(Cent OS 5)中,每当我的用户进程 crashed.dmesg 也显示段错误时,我在 /var/log/messages 中看到了段错误消息。

是否有任何要启用的设置,以便将段错误记录到 /var/log/messages.log 中。

我交叉检查了两个系统的 /etc/syslog.conf。两者都是相同的,甚至是 /etc/sysconfig/syslog 文件。


现在我检查内核源代码,arch/x86/mm/fault.c,发现只有在2.6.23及之后才能将segfault的错误信息打印到/var/log/messages。由于 RHEL5.4 使用 2.6.18 内核,因此无法将信息记录到系统日志中。

linux segmentation-fault

7
推荐指数
1
解决办法
1万
查看次数

`ls` 导致特定目录的分段错误

我用作$HOME/.local前缀来安装一些没有root访问权限的应用程序。里面有一个目录$HOME/.local我不能执行ls命令:

[tuananh@server lib]$ ls
Segmentation fault
[tuananh@server lib]$ cd ..
[tuananh@server .local]$ ls lib
audit                    libform.a         
libncurses.a             libopenblas.so.0
...
[tuananh@server .local]$ 
Run Code Online (Sandbox Code Playgroud)

这可能是什么原因?uname -a对于我的服务器:

Linux server 2.6.32-358.2.1.el6.x86_64 #1 SMP Tue Mar 12 14:18:09 CDT 2013 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

编辑: 的输出LD_TRACE_LOADED_OBJECTS=1 ls。我发现了一些从这个目录加载的库。那么现在我应该怎么做才能找到导致问题的那个?

linux-vdso.so.1 =>  (0x00007fff831b8000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x0000003d94800000)
librt.so.1 (0x00007fdcde5a3000)
libcap.so.2 => /lib64/libcap.so.2 (0x0000003d95c00000)
libacl.so.1 => /lib64/libacl.so.1 (0x0000003d97c00000)
libc.so.6 (0x00007fdcde1f5000)
libdl.so.2 (0x00007fdcddff1000)
/lib64/ld-linux-x86-64.so.2 (0x0000003d92c00000)
libpthread.so.0 (0x00007fdcdddd3000)
libattr.so.1 => /lib64/libattr.so.1 …
Run Code Online (Sandbox Code Playgroud)

linux redhat ls segmentation-fault

6
推荐指数
1
解决办法
7633
查看次数

使用 PHP 分段错误调试 Apache 的建议

每小时左右一个 Apache 子进程段。我们的网络服务器上的故障。我们正在运行带有 Apache prefork MPM 的非线程 PHP 5.2.17 Apache 模块。我已经使用一些核心转储、gdb 和来自 php 的 github repo 的这个 .gdbinit 文件运行了 httpd,在 gdb 中为每个文件输入以下命令:

dump_bt executor_globals.current_execute_data
Run Code Online (Sandbox Code Playgroud)

由于没有 gdb 或 php 解释器的内部工作经验,我无法从结果中做出任何事情。

core.22762
[0x53896ef0] () :-2118682552
[0x538977a0] () /Statement/Interface.php:113
[0x538978a0] /Zend/Db/Statement/Interface.php()

core.22791
[0x538977a0] () @:0
[0x538978a0] ()

core.5568
[0x53896ef0] () :2061035360
[0x538977a0] () :1767992432
[0x538978a0] ()

core.30384
[0x538977a0] () :0
[0x538978a0] ()

core.3091
[0x53896ef0] mysql_query():992424253
[0x538977a0] () ~:17
[0x538978a0] ()
Run Code Online (Sandbox Code Playgroud)

(core.3091 之后也显示了这一点Program terminated with signal 11, Segmentation fault. …

php zend-framework gdb segmentation-fault apache-2.2

5
推荐指数
1
解决办法
3461
查看次数

apache child pid 退出信号 Segmentation fault (11)

当我安装 joomla 时,我看不到index.php并且我在我的/var/log/apache2/error.log

[notice] child pid 3211 exit signal Segmentation fault (11)
Run Code Online (Sandbox Code Playgroud)

为了激活核心转储,我按照此链接中的说明进行操作

CoreDumpDirectory /tmp/apache2-gdb-dump # added this to /etc/apache2/apache2.conf
mkdir -p /tmp/apache2-gdb-dump
chown www-data: /tmp/apache2-gdb-dump
chmod 0777 /tmp/apache2-gdb-dump
/etc/init.d/httpd restart
Run Code Online (Sandbox Code Playgroud)

但我什么也没看到 coredumpdirectory

ls /tmp/apache2-gdb-dump
Run Code Online (Sandbox Code Playgroud)

我可以看到localhost/administratorjoomla 但看不到localhost/index.php

joomla segmentation-fault apache-2.2

5
推荐指数
1
解决办法
5823
查看次数