【问题标题】:ASAN: core file is not being generated when process gets abortedASAN:进程中止时未生成核心文件
【发布时间】:2021-06-02 04:57:37
【问题描述】:

我一直在尝试配置我的服务(在 RHEL 7 上运行),这涉及使用 libasan 编译的程序,以便每当我的进程中止(由于无效读取或任何其他违规)时,都会生成核心转储。我已经在服务文件的环境变量中添加了相关的 ASAN 标志:

这是我的服务单元文件的样子:

[Unit]
Description     = PROXY STARTUP FILE
After           = syslog.target network.target
[Service]
Type            = simple
User            = testProxy
Group           = testProxy
Environment     = "LD_LIBRARY_PATH=/home/test/lib"
Environment     = "ASAN_OPTIONS=disable_coredump=false:unmap_shadow_on_exit=true:abort_on_error=true"
WorkingDirectory= /home/test
ExecStart       = /home/test/bin/proxy_2
ExecStop        = /bin/kill -9
ExecStartPre    = /home/test/service/pre_startup.sh
ExecStopPost    = /home/test/service/post_cleanup.sh
StandardOutput  = syslog
StandardError   = syslog
SyslogIdentifier = p2
LimitCORE       = infinity
Restart         = always
[Install]
WantedBy        = multi-user.target

I've also followed the steps mentioned here relevant for RHEL 7

我还设置了ulimit -c unlimited。我已经在 .bashrc 文件中添加了这个。

我在下面添加更多信息(可能相关):

[root@localhost ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.5 (Maipo)

[root@localhost ~]# cat /proc/sys/kernel/core_pattern
/var/crash/core-%e.%p.%h.%t

尽管如此,当我的进程由于“未知地址上的 SEGV”而中止时,并没有生成核心文件。以前有人遇到过这样的问题吗?我还需要做什么?

【问题讨论】:

    标签: rhel7 address-sanitizer


    【解决方案1】:

    尽管如此,核心文件并没有生成

    这是故意的:清理过的进程的核心转储将在您的磁盘上占用数 TB 的空间,并且将永远写入(如果您有足够大的磁盘)并且几乎没有用处。

    我相信这是因为地址清理器运行时mmaps 很多“影子”内存在core 转储中几乎没有使用,尽管我不清楚细节。

    【讨论】:

    • 我应该提到,如果我的进程没有作为服务运行,那么会生成核心文件。不,它的大小并没有你想象的那么大。我的问题是,由于某种原因,如果进程作为服务运行,则不会生成核心文件。
    猜你喜欢
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-01
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多