免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: kyle218
打印 上一主题 下一主题

[C++] 关于调试“后台服务子进程莫名其妙退出”,无Core,偶然性发生 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2010-01-05 16:36 |只看该作者
原帖由 cookis 于 2010-1-5 13:23 发表
可以看一下 /va/log/messages 这个日志,如果被OS 杀掉了,OS会记在这里边

不是在这个目录,/etc/syslog.conf重新配置了,
bash-9.0$  cat /etc/syslog.conf |grep -v "#"
local0.crit /dev/console
local0.info /var/hacmp/adm/cluster.log
user.notice /var/hacmp/adm/cluster.log
daemon.notice /var/hacmp/adm/cluster.log

里面都是如下的:
.........user:notice HACMP for AIX: EVENT.........
.........user:err|error syslog: slp_srvreg : Probably one more instance of the daemon is running. slp_srvreg can't continue

看来不是被OCS信号杀掉的,还是应用程序出的问题??

[ 本帖最后由 kyle218 于 2010-1-5 17:22 编辑 ]

论坛徽章:
0
22 [报告]
发表于 2010-01-05 16:48 |只看该作者
说一下 我的情况, 我用valgrind 开过。 跑了大半个月也没什么特殊的发现。

说openssl 里面有个地方没有初始化, 这个是我用的时候没使用密钥造成的,其他的话 valgrind 没发现错误。

但是崩溃后, valgrind 是有日志的, 但是都是很散乱的地方,所以应该是崩溃以后的泄漏。

我的代码里面是用到了不少STL的地方, 我感觉这个是很有可能造成内存不足的。 但是我现在无法定论。


最简单的例子, 我使用string 存储 读取的网页html 源码。 结果源码经常大到1-2M.
反复多次,最后crash,也找不出问题。 现在自己new ,delete 就没有问题。

所以stl 还是有很多毛病的, 著名开源软件 还真没有用stl的,全是c. 自己写。

[ 本帖最后由 benjiam 于 2010-1-5 16:50 编辑 ]

论坛徽章:
0
23 [报告]
发表于 2010-01-05 17:19 |只看该作者
原帖由 benjiam 于 2010-1-5 16:48 发表
说一下 我的情况, 我用valgrind 开过。 跑了大半个月也没什么特殊的发现。

说openssl 里面有个地方没有初始化, 这个是我用的时候没使用密钥造成的,其他的话 valgrind 没发现错误。

但是崩溃后, valgr ...

借花献佛一下~~这个贴很受启发
2) 如果用了STL, 造成out of memery, 不一定是内存泄露,
   可以参考一下http://blog.163.com/dengminwen@1 ... 226720097189486788/

[ 本帖最后由 kyle218 于 2010-1-5 17:20 编辑 ]

论坛徽章:
1
申猴
日期:2014-02-11 14:50:31
24 [报告]
发表于 2010-01-05 18:12 |只看该作者
原帖由 benjiam 于 2010-1-5 16:48 发表
说一下 我的情况, 我用valgrind 开过。 跑了大半个月也没什么特殊的发现。

说openssl 里面有个地方没有初始化, 这个是我用的时候没使用密钥造成的,其他的话 valgrind 没发现错误。

但是崩溃后, valgr ...



不知stl是不是用到了malloc函数,假如是,而且每次申请的都是小内存,那么就有可能有内存碎片,虽然这时free()了,但根据malloc的算法原理这些内存还是没有还给操作系统,所以一段时间后造成内存相当大,在加上aix堆的大小是有限制的,所以有可能被kill掉了

论坛徽章:
39
2017金鸡报晓
日期:2017-02-08 10:39:4219周年集字徽章-周
日期:2023-04-15 12:02:2715-16赛季CBA联赛之深圳
日期:2023-02-16 14:39:0220周年集字徽章-年
日期:2022-08-31 14:25:28黑曼巴
日期:2022-08-17 18:57:0919周年集字徽章-年
日期:2022-04-25 13:02:5920周年集字徽章-20	
日期:2022-03-29 11:10:4620周年集字徽章-年
日期:2022-03-14 22:35:1820周年集字徽章-周	
日期:2022-03-09 12:51:3220周年集字徽章-年
日期:2022-02-10 13:13:4420周年集字徽章-周	
日期:2022-02-03 12:09:4420周年集字徽章-20	
日期:2022-01-25 20:14:27
25 [报告]
发表于 2010-01-05 18:47 |只看该作者
AIX系统没用过, 但是C++ 还是用过的.

不要怀疑STL, STL是不会出问题的.

思路1: 是不是有比较特殊的任务导致程序无覆盖?
思路2: 是否有多线程协调的问题?

论坛徽章:
0
26 [报告]
发表于 2010-01-05 20:18 |只看该作者
原帖由 醉卧水云间 于 2010-1-5 18:47 发表
AIX系统没用过, 但是C++ 还是用过的.

不要怀疑STL, STL是不会出问题的.

思路1: 是不是有比较特殊的任务导致程序无覆盖?
思路2: 是否有多线程协调的问题?

恩,我看了一下,
1:进程退出总是在处理这一类特殊任务的退出,接下来的处理都未进行;
2:无多线程

我很怀疑是原来某一类信号我没捕捉默认强行终止进程(但是问题终究还是存在的),而这类信号是下面的A类,而非C类;

A 缺省的动作是终止进程
B 缺省的动作是忽略此信号
C 缺省的动作是终止进程并进行内核映像转储(dump core)
D 缺省的动作是停止进程
E 信号不能被捕获
F 信号不能被忽略
信号种类大全:http://blog.chinaunix.net/u3/93633/showart_1858438.html

[ 本帖最后由 kyle218 于 2010-1-5 20:29 编辑 ]

论坛徽章:
0
27 [报告]
发表于 2010-01-06 16:10 |只看该作者
楼主,肯定是你的程序占用了 过多的某些资源,被内核干掉了~有些 系统有/etc/sysctl 这个文件,可以试着配置一下~~另外,上次我遇见OOM的时候跑valgrind也没问题,但不用valgrind就挂了~还有,多看下系统日志~~

论坛徽章:
0
28 [报告]
发表于 2010-01-06 22:11 |只看该作者
原帖由 zhyclt 于 2010-1-6 16:10 发表
楼主,肯定是你的程序占用了 过多的某些资源,被内核干掉了~有些 系统有/etc/sysctl 这个文件,可以试着配置一下~~另外,上次我遇见OOM的时候跑valgrind也没问题,但不用valgrind就挂了~还有,多看下系统日志~~


的确有可能,因为我今天监控到AIX内存的使用率超过94%了,但是这个时候进程没有被kill掉;
而且我很奇怪的是为什么都是在处理同一类任务的时候挂了;

同时我也errpt查看了系统日志,没发现内核干掉进程的log,不知道还是其他地方可以查看类似日志没?

论坛徽章:
0
29 [报告]
发表于 2010-01-06 22:47 |只看该作者
用truss看最后是什么系统调用出错

主程序获得子进程返回码并查看退出原因 (如果是信号退出可以看出是什么信号引起的)

论坛徽章:
0
30 [报告]
发表于 2010-01-07 00:23 |只看该作者
1. lscore, 看看core的一些设置
2. 查看一些文件系统是否有足够的空间来容纳你的core文件
3. 程序如果是32位的,最后连接时有没有使用-bmaxdata参数?
4. 因为出错比较有规律,因此估计还是程序的问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP