Linux: coredump产生对程序退出的影响

因为要生产coredump文件,有对IO的操作,导致退出相对于不产生coredump文件来说肯定有延迟

c 复制代码
void do_coredump(const kernel_siginfo_t *siginfo)
{
	struct core_state core_state;
	struct core_name cn;
	....
		struct coredump_params cprm = {
		.siginfo = siginfo,
		.regs = signal_pt_regs(),
		.limit = rlimit(RLIMIT_CORE), 
		.....
		
		if (cprm.limit < binfmt->min_coredump)
			goto fail_unlock;   //// 这里会退出

如果是pipe的话,如果ulimit == 1 的时候会退出

c 复制代码
	if (ispipe) {
		int argi;
		int dump_count;
		char **helper_argv;
		struct subprocess_info *sub_info;

		if (ispipe < 0) {
			printk(KERN_WARNING "format_corename failed\n");
			printk(KERN_WARNING "Aborting core\n");
			goto fail_unlock;
		}

		if (cprm.limit == 1) {

如果要看详细的逻辑,还是需要看内核的代码。

如果想看详细的时间占用情况,可以使用ftrace的function graph的功能dump一下调用关系以及时间消耗情况。

相关推荐
利来利往2 小时前
ubuntu设置永不休眠
运维·服务器
光电笑映2 小时前
从环境变量到进程虚拟地址空间——Linux 内存管理的底层脉络
linux·服务器·c++·c
遇印记2 小时前
软考知识点
运维·服务器·网络
源远流长jerry2 小时前
Linux 网络收包机制:从网卡到 Socket 的完整路径
linux·运维·服务器·网络·网络协议·tcp/ip
qq_364371722 小时前
基于 Docker 容器化环境配置
运维·docker·容器
我命由我123453 小时前
Windows 操作系统 - Windows 查看架构类型
运维·windows·笔记·学习·系统架构·运维开发·系统
goyeer3 小时前
【ITIL4】34服务实践 - 服务请求管理
运维·it·数字化·信息化·itil·信息化企业管理
运维全栈笔记4 小时前
基于Docker的MinIO单机部署与功能测试指南
运维·docker·容器
杰 .4 小时前
Linux工具使用
linux·服务器