由于 SIGPROF 信号,clone() 系统调用无限重启

news2024/9/21 0:35:24

最近遇到一个c++ 代码里调用system函数然后没返回的问题,此时调用进程所在CPU占用率100%。

通过 strace 和ftrace工具跟踪系统调用,以及查看内核源码,发现 此时,进程会一直不停的调用 clone系统调用,而 clone系统调用一直返回出错。

strace :

ftrace:

内核添加打印:

根据错误 ERESTARTNOINTR在 内核代码里找到报错的地方:

 include/linux/errno.h

#define ERESTARTNOINTR	513

kernel/fork.c

调用过程是 sys_clone -> do_fork -> copy_process :


	/*
	 * Process group and session signals need to be delivered to just the
	 * parent before the fork or both the parent and the child after the
	 * fork. Restart if a signal comes in before we add the new process to
	 * it's process group.
	 * A fatal signal pending means that current will exit, so the new
	 * thread can't slip out of an OOM kill (or normal SIGKILL).
	*/
	recalc_sigpending();
	if (signal_pending(current)) {
		spin_unlock(&current->sighand->siglock);
		write_unlock_irq(&tasklist_lock);
		retval = -ERESTARTNOINTR;
		goto bad_fork_free_pid;
	}

系统调用时,检测到信号导致系统调用中断返回 ERESTARTNOINTR 错误值,处理信号后重新调用该系统调用。而进程一直在接收SIGPROF信号,导致clone系统调用一直被中断!

SIGPROF信号量的含义:

one of the Alarm Signals:This signal typically indicates expiration of a timer that measures both CPU time used by the current process, and CPU time expended on behalf of the process by the system. Such a timer is used to implement code profiling facilities, hence the name of this signal.

SIGPROF信号量的产生:

利用系统调用setitimer,在用户进程内设立定时器,定时到期时便由内核向进程发送一次信号。

经分析,原因是在程序编译时加了 "-pg"选项,程序启动后调用 rt_sigaction 配置了 SIGPROF 信号的处理函数,而后调用 setitimer 以 10ms 的间隔产生 SIGPROF。从而在信号处理函数中可以统计各个函数命中的次数,并以此估计每个函数的时间占比。

解决方法

参考:

clone() syscall infinitely restarts because of SIGPROF signals · Issue #97 · async-profiler/async-profiler · GitHub

可以通过增加 setitimer的间隔,或在内核ERESTARTNOINTR错误产生处对 SIGPROF信号做特殊处理。

linux kernel官方在2018年8月也上传了对此问题的解决方法:

kernel/git/torvalds/linux.git - Linux kernel source tree

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/987573.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java项目-苍穹外卖-Day10-SpirngTask及WebSocket

文章目录 前言SpringTask介绍SpringTask_corn表达式Spring_Task入门案例 订单状态定时处理需求分析代码开发功能测试 前言 本章实现的业务功能 超时未支付订单自动取消,配送中订单商家忘点完成自动再固定时间检查且修改成完成状态 来单提醒功能 催单提醒功能 …

什么牌子的灯具性价比高?好用实惠的护眼台灯品牌推荐

现在我们很多家长对自己孩子的视力十分关心,生怕自己的孩子是近视、远视、弱视等等。对于父母而言,在孩子读书压力大课业重的关键时期,为孩子选择合适的桌椅,保护灯具从而保护孩子的眼睛是非常重要的事情!那么买给孩子读书做功课的…

iTOP-RK3568开发板内核模块实验-设置交叉编译器

在上一章节我们编写了最简单的 helloworld 驱动程序。有了驱动程序以后,要如何编译并使用驱动呢。编译驱动有俩种方法,分别是将驱动编译成内核和将驱动编译成内核模块。我们先来学习如何将驱动编译成内核模块、 4.1 设置交叉编译器 1 下载网盘资料下的…

U盘格式化后数据恢复?别担心,2个方法轻松恢复!

“昨天我的u盘好像中病毒了,为了清除里面的病毒,我不得已将u盘进行了格式化操作。但是,我的u盘中很重要的文件也被删除了!这可怎么办啊?还有恢复的机会吗” 平常在使用u盘时,我们可能会因为各种原因&#x…

【漏洞复现】金盘图书馆微信管理后台 getsysteminfo 未授权访问漏洞

漏洞描述 北京金盘鹏图软件技术有限公司的金盘图书馆微信管理后台 getsysteminfo 存在未授权访问漏洞,可获取管理员账号密码等敏感数据,导致攻击者能以管理员身份进入系统窃取敏感信息和危险操作。 免责声明 技术文章仅供参考,任何个人和组织使用网络…

每日刷题|回溯法解决全排列问题

​ 食用指南:本文为作者刷题中认为有必要记录的题目 前置知识:回溯法经典问题之组合 ♈️今日夜电波:爱人错过—告五人 1:11 ━━━━━━️💟──────── 4:52 …

商业智能必备利器,帆软、powerBI替代工具

随着商业智能领域的发展,越来越多的企业开始意识到数据对于业务发展的重要性。而在这个过程中,BI(商业智能)工具成为了企业进行数据分析、决策支持的必备利器。然而,市场上BI工具种类繁多,每个工具都有其独…

机器学习笔记之最优化理论与方法(八)无约束优化问题——常用求解方法(中)

机器学习笔记之最优化理论与方法——基于无约束优化问题的常用求解方法[中] 引言回顾:最速下降算法的缺陷经典牛顿法基本介绍经典牛顿法的问题经典牛顿法的优点与缺陷经典牛顿法示例 修正牛顿法介绍拟牛顿法拟牛顿法的算法过程 矩阵 B k 1 \mathcal B_{k1} Bk1​的…

从软件工程师角度聊聊 Kubernetes

作为软件工程师,我们应该熟悉 K8s,尽管它有点像 DevOps,但它能让我们更好地了解幕后发生的事情,让我们与部署工作更密切相关,更有责任感。本文将从软件工程师的角度探讨 Kubernetes (K8s),我们将介绍其动机…

【NoSQL】redis之持久化(RDB、AOF)

一、Redis 高可用 在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。 但是在Redis语境中,高可用的含义似乎要宽泛一些,除了保证…

LeetCode刷题笔记【30】:动态规划专题-2(不同路径、不同路径 II)

文章目录 前置知识62.不同路径题目描述解题思路代码 63. 不同路径 II题目描述障碍信息传递法(比较复杂)被障碍物阻挡后直接清空计数法(更简洁) 总结 前置知识 参考前文 参考文章: LeetCode刷题笔记【29】:动态规划专题-1(斐波那契数、爬楼梯…

【代码随想录】Day 45 动态规划7 (爬楼梯(进阶)、零钱兑换、完全平方数)

爬楼梯(进阶) https://leetcode.cn/problems/climbing-stairs/ 零钱兑换 https://leetcode.cn/problems/coin-change/ 完全平方数 https://leetcode.cn/problems/perfect-squares/

GE IS220PAICH2A 336A4940CSP11 数字量输入模块产品应用领域

GE IS220PAICH2A 336A4940CSP11 是一款数字量输入模块,通常用于工业自动化和控制系统中,用于监测和采集数字输入信号。这种类型的模块可以在各种应用领域中发挥作用,以下是一些可能的应用领域: 工业过程控制: GE IS220…

九个月内累计被罚1.3亿元,知网为何屡触法网

大数据产业创新服务媒体 ——聚焦数据 改变商业 9月6日,国家网信办根据《个人信息保护法》作出顶格处罚,对中国知网处以5000万元的罚款。 国家网信办的调查发现,知网运营的手机知网、知网阅读等14款APP存在违反必要原则收集个人信息、未经同…

怎么把照片变成视频?分享个简单的制作方法

在现代社交网络中,图文视频已成为非常流行的视觉语言。由于图文视频具有强烈的视觉吸引力和交互性,它们已成为许多人在社交媒体上分享自己的生活和经历的首选方式。以下是制作图文视频的步骤: Step 1 首先,我们需要选取一些照片来…

图片上的字怎么去掉?尝试下这几种简单操作方法

在设计中,图片通常被用来传达信息或增强视觉效果。然而,有时候图片中的文字可能会干扰到内容的阅读或降低整体设计的美感。除此之外,如果图片中的文字已经在其他地方出现过了,比如在正文或标题中,那么重复使用文字会让…

基于轻量级神经网络GhostNet开发构建的200种鸟类细粒度识别分析系统

最近项目需要用到轻量级的网络模型,后期考虑进一步的剪枝和量化达到加速推理的目的,正好有时间就想着基于实际的数据集来开发构建项目做测试,本文的核心目的就是选定轻量级神经网络模型GhostNet来开发构建细粒度鸟类识别系统,首先…

MySQL服务关闭开机自启,改成手动启动状态

最近在写前端,所以就先把后端数据库禁用或手动启动吧。防止浪费太多内存或资源。一般就之前损坏了的数据库就禁用吧,其他最近不常用的服务就没必要开机自启动吧,毕竟电脑只有一台,不想学习想用电脑来玩的话就讲工作服务从开机自启…

数字出版软件系统开发

数字出版涵盖了广泛的内容,从电子书到数字杂志、在线期刊和互动教育教材等。为了实现这些数字出版物,有许多不同类型的软件系统可供使用,每种都有自己的特点和功能。以下是一些常见的数字出版软件系统以及它们主要实现的功能,希望…

国标视频云服务EasyGBS国标视频平台设备录像下载文件为ps格式,如何改为MP4格式?

EasyGBS是基于国标GB/T28181协议的视频云服务平台,不仅支持无缝、完整接入内网或者公网的国标设备,在输出上,提供RTSP、RTMP、FLV、HLS、WebRTC等多种格式视频流的分发服务,实现全平台、全终端输出。 有用户反馈,在使用…