Articles of coredump

在自己的内核模块中,在磁盘睡眠时SIGSTOP任务

我目前正在开发一个使用定制核心格式的崩溃收集机制。 本质上,它挂钩了linux_binfmt-> core_dump条目,指向我们的自卸车。 在允许内核完全终止进程之前,翻料机本身通过进程的PID启动一个用户模式助手来获取哪个转储过程信息通过ptrace: call_usermodehelper(argv[0], argv, envp, UMH_WAIT_PROC); 我的问题是,这个任务在技术上处于磁盘睡眠状态,并没有停止,所以ptrace调用失败。 我试图SEND_SIG_FORCED一个SIGSTOP无济于事: send_sig_info(SIGSTOP, SEND_SIG_FORCED, current); 任何有关如何仍然阻止进程终止,但将其置于停止状态以获得ptrace usermode收集器工作的build议将不胜感激。

我没有得到所有的过程coredump

我试图得到coredump,所以我使用: ulimit -c unlimited 我在后台运行我的程序,我杀了它: kill -SEGV %1 但我只是得到: [1]+ Exit 1 ./Test 而且没有创buildcoredumps。 我对其他程序也做了同样的工作,所以为什么这些都不起作用呢? 任何人都可以帮助我? 谢谢。 (GNU / Linux,Debian 2.6.26)

如何在UNIX / Linux中对生产应用程序执行核心转储分析?

我遇到了使用GDB进行核心转储分析的选项 – 它提到我需要使用特殊的命令行参数来构build可执行文件,以包含符号信息的合并。 但是它增加了可执行文件的大小,我猜测它会减慢应用程序的运行速度。 如果有另一种方法来执行核心转储分析而不影响应用程序的性能,有人可以请教吗?

Linux内核:发生进程coredump之前的事件/path序列

当出现分段错误并且生成一个进程coredump时,在内核和用户空间(wrt Linux)中发生的事件的顺序是什么? Linux不支持sigsegv处理程序。 信号处理程序如何被调用,并返回一个coredump生成? 我正在寻找事件序列和任何指向Linux内核函数名称的指针(关于任何最新的内核)。 我将从函数名称中找出其余部分,我明白可以从代码中找出其余部分。

避免将信息转储到核心文件中

我想避免将某些信息从我的程序转储到核心文件中,以防发生崩溃。 为此,我可以使用coredump_filter( http://man7.org/linux/man-pages/man5/core.5.html ) 手册页提供以下说明 文件中的值是内存映射types的位掩码(请参见mmap(2))。 如果在掩码中设置了一个位,则转储相应types的存储器映射; 否则他们不会被倾销。 该文件中的位具有以下含义: bit 0 Dump anonymous private mappings. bit 1 Dump anonymous shared mappings. bit 2 Dump file-backed private mappings. bit 3 Dump file-backed shared mappings. bit 4 (since Linux 2.6.24) Dump ELF headers. bit 5 (since Linux 2.6.28) Dump private huge pages. bit 6 (since Linux 2.6.28) […]

核心转储文件名称被截断

如果将/proc/sys/kernel/core_pattern设置为/cores/core.%e.%p ,则核心转储将按照模式命名,但是对于运行带有长名称的可执行文件的进程,例如SampleCrashApplication ,生成的核心文件将包含一个截断的可执行文件名称: /cores/core.SampleCrashAppl.9933 这是什么原因造成的? man core页面只谈到最终的核心文件名的大小是128(2.6.19之前的内核是64)

为C ++应用程序启用核心转储(通过apache – > Perl – > C ++调用)

我有一个Web GUI,它提供了一个C ++应用程序的开/关控制。 C ++应用程序是从一个perl包装器调用的,它是保持程序运行的工作,如果它停止了,就重新启动它。 点击网页button(最终) 在后台启动startWrapper.pl 。 问题是C ++应用程序每隔几天崩溃一次segfault。 我想为这个后台任务启用核心转储。 然而,我读过的所有东西似乎都需要一个tty和/或login会话(例如ulimit命令)。 我将如何启用核心转储这个后台任务? 可以从C ++源代码中设置configuration吗? Linuxconfiguration文件? 作为伪代码, startWrapper.pl ( startWrapper.pl )如下所示: if (is_process_running() ) { return; } else { while (1) { system("/path/to/c++/application &"); while (1) { if (not_running_anymore()) break; sleep(10); } } } 编辑我点了答案太早。 如果我a)直接调用二进制文件或b)从perl包装器调用它,使用setrlimit工程。 但是,如果从Apache调用perl包装,它不会转储核心。 (我在程序中放了一个“炸弹”,在10秒后进行段错误,当从apache调用时,包装器检测到它并重新启动二进制文件,但没有核心文件。 这可能是一些用户ID与有效的ID问题? Apache启动Perl的包装为Apache 。 perl包装器使用system来启动setuid root的二进制文件。 编辑II 手动启动 […]

如何在centos中为守护进程生成核心转储?

我有一些守护进程偶尔崩溃,我想知道如何启用核心转储世代。 我知道,默认情况下,在Linux的ulimit核心转储是零,所以我需要将其设置为无限,如果我想查看我正在运行的进程的核心转储。 但是我想要做的是为在root帐户下运行的守护进程生成核心转储。 任何人都可以告诉我如何configuration系统? 先谢谢你。

分割错误,没有核心转储

我一直在我的程序中出现分段错误,但是没有生成核心转储文件。 ulimit显示的值是无限的,确实是ulimit -c unlimited,看起来没有问题。 有任何想法吗?

核心文件中的_kernel_vsyscall()

我的程序突然崩溃,并在核心文件中引发这个错误。 确切地说: Program terminated with signal 6, Aborted. #0 0x00c60410 in __kernel_vsyscall () #0 0x00c60410 in __kernel_vsyscall () #1 0x00444df0 in raise () from /lib/libc.so.6 #2 0x00446701 in abort () from /lib/libc.so.6 #3 0x0047d3ab in __libc_message () from /lib/libc.so.6 #4 0x004856c5 in _int_free () from /lib/libc.so.6 #5 0x00485b09 in free () from /lib/libc.so.6 这是相关的Linux或我在我的代码中犯了一个错误? 如何解决这个问题? […]