linux进程假死的原因_linux下程序假死
linux下程序假死
发布时间:2006-09-10 00:51:19来源:红联作者:coolentboy
前一段时间新开发的一个程序,总是会出现一些奇怪的停滞,也就是说程序长期运行就不再输出信息了。
因为是在调试阶段所以程序在很多地方都有用printf()输出的消息,以判断程序出现错误的位置,然后有诊断性的解决问题。
程序大致结构如下:信号处理函数a(),对信号处理函数得到的数据进行处理b().捕捉到的消息全部是在数据处理函数b()内的,因为程序是在rh9.0上开发,然后在裁减系统上跑而且目前程序都是在小系统内实测的,不然得不出实际效果;而且程序是处于长期运行,所以用gdb不太好不过该错误(刚开始这么认为得),所以就一直用printf()函数来得到一些错误。
[code] void a(...){
...
printf("signal catched\n");
...
}
void b(...){
...
printf("enter b()\n");
...
while(1){
...
printf("...");
c();
printf("data have received\n");
..
}
}[/code]
void b()函数内printf()很多就对了,每次程序都是在b()内某个printf()消息输出后,就停滞不动了。
刚开始认为是使用锁出现了问题,但是后来改过后改问题仍然出现。
最后将小系统使用得库文件等都使用rh9.0下得程序来跑,通过配置环境变量来做的,在程序停滞的时候进入gdb环境。
[code]gdb
>attach (no)
>thread apply no backtrace full
>bt(显示不出来需要的信息)[/code]
注:b() 采用线程来实现,当然了还有其它的很多不同模块的线程也在运行。
从线程栈可以看到:
当b()线程运行到printf()->vfprintf()时信号到达;进入信号处理函数a()->printf()->vfprintf()停滞。
从栈可以看出程序是因为printf()函数导致停滞的,查阅资料有说是和流控制有关,我想最大的可能就是和printf()的实现机制有关系。
不过最让我想不通的还是b()还有一次是死在malloc()内,但是我的a()处理函数根本没有使用malloc()函数。
linux进程假死的原因_linux下程序假死相关推荐
- Linux进程线程学习笔记:运行新程序
Linux进程线程学习笔记:运行新程序 周银辉 在上一篇中我们说到,当启动一个新进程以后,新进程会复制父进程的大部份上下文并接着运行父进程中的代码,如果我们使新进程不运行原父进程的代码,转而运行另外一 ...
- 电脑死机原因、和预防电脑死机技巧!!
1.电脑死机原因? 2.如何预防电脑死机? (1)先介绍电脑死机原因! 无法启动系统,画面"定格"无反应,鼠标.键盘无法输入,软件运行非正常中断等.尽管造成死机的原因是多方面的,但 ...
- linux 进程 崩溃被杀 原因查找
目录 到底是什么信号 OOM 谁发的信号 systemtap audit 案例与总结 一个进程的异常终止,通常有两种情况,一种是crash,另一种是被kill掉了. crash是指程序出现了自己无法解 ...
- linux进程--死锁产生的原因及四个必要条件(六)
产生死锁的原因主要是: 因为系统资源不足. 进程运行推进的顺序不合适. 资源分配不当等. 如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁.其 ...
- linux电子词典项目流程,毕业设计_linux下电子词典的设计与实现.doc
毕业设计_linux下电子词典的设计与实现 毕业设计(论文) 题目:Linux下电子词典的设计与实现 学 生 姓 名 学 号 201022080223 班 级 通信102202H班 所属院(系) 电子 ...
- linux进程假死的原因_Linux系统死机的原因及解决办法
系统出现死机,一般分为两种情况:一是硬件问题;二是软件问题. 一.硬件问题 可以考虑分析以下几点: 1.不要超频CPU,如果已经超频的先回复到原来的频率 虽然平时运行没有问题,但可能在高负载的使用中就 ...
- linux安装多个mysql数据库_linux下多个mysql5.7.19(tar.gz)安装图文教程
初级第一次在Linux下安装MySQL-5.7.19版本教程请看上一篇,如果已经会安装了,那么请看这篇linux下安装多个mysql-5.7.19 环境:centos 6.5 1-下载 2-跳过登陆 ...
- linux 在本地创建svn服务器_linux下搭建svn服务器及创建项目
一. 使用yum 安装SVN包 关于YUM 服务器的配置参考: Linux 搭建 YUM 服务器 http://blog.csdn.net/tianlesoftware/archive/2011/01 ...
- linux进程tss和ldt,x86体系下linux中的任务切换与TSS
tss的作用举例:保存不同特权级别下任务所使用的寄存器,特别重要的是esp,因为比如中断后,涉及特权级切换时(一个任务切换),首先要切换栈,这个栈显然是内核栈,那么如何找到该栈的地址呢,这需要从tss ...
- Linux里下载mysql显示红色_Linux下安装mysql
到mysql官网下载mysql编译好的二进制安装包,在下载页面Select Platform:选项选择linux-generic,然后把页面拉到底部,64位系统下载Linux - Generic (g ...
最新文章
- ubuntu笔记 - 安装和配置Sublime Text
- lda 吗 样本中心化 需要_PCA 与 LDA 分析
- yolov3 anchor 理解
- jquery替换onclick的方法
- Qt5.7+Opencv2.4.9人脸识别(四)模型训练
- python中get属性_python3中__get__,__getattr__,__getattribute__的区别
- TS高级类型内置工具类型
- WebSocket 详解 1
- 【渝粤教育】国家开放大学2018年春季 8612-22T传染病护理学 参考试题
- Python机器学习常用模块
- PCB叠层及阻抗控制关键因素
- 基于matlab的图像复原,MATLAB在图像复原中的应用
- Windows Server 2012 R2磁盘分区
- 《观沧海》课文练习题及答案
- 使用可道云在centos上搭建个人网盘(附带端口修改)
- 『TensorFlow』SSD源码学习_其五:TFR数据读取数据预处理
- SAP发票校验中支付条件中的基准日期缺省值的配置及控制逻辑测试
- 深度学习、机器学习、人工智能的区别
- stlink下载调试器使用说明(STM32采用stlink下载程序)
- 利用 tesseract 自动识别图片中的文字
热门文章
- 【Markdown 数学公式】markdown常用公式写法
- 流量卡之家:物联网僵尸网络和DDoS攻击:构建网络风险防火墙
- 智慧养殖系统方案云平台功能
- 微型计算机三部分基本组成,微型计算机的基本组成-电脑自学网
- matlabrobert锐化_图像锐化matlab算法
- python 吃cpu 显卡 内存_浅析 Pycharm 内存、cpu 占用率
- html首字母大写,CSS实现英文单词的首字母大写
- 制作u盘winpe启动盘_u盘启动盘制作工具 纯净+好用,原来不止是 微pe
- Android 图片压缩也即生成缩略图方法
- PDF编辑方法,如何裁剪PDF中的一页