免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2197 | 回复: 5
打印 上一主题 下一主题

前段时间发的一个 socket通讯的deamon程序莫名其妙退出的问题。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-23 20:17 |只看该作者 |倒序浏览
前段时间发了一个帖子:


  1. 写的一个deamon程序,在测试机器上跑了两天,没有一点问题。
  2. 可是放到现场总是跑上几个小时就莫名其妙的退出。并且日志没有任何异常。也没有core dump
  3. 程序大概的功能就是作为server端接收client进程A发过来的消息,然后处理消息,将处理完的消息封包,通过socket发送给另一个进程B。程序中处理了 sigpipe,sighup等信号,当B产生sigpipe时打印syslog,不退出。现场进程A,B运行正常。ps查看进程没有内存泄漏。

  4. 现场数据量比较大(大概1秒钟一条),消息处理用到较多的stl函数。我在测试机上模拟0.5秒发送一条消息。跑了两天也没有任何异常。
复制代码



我改了好几次,多线程改成单线程,又多进程,问题一直存在。后来我重建一个用户把这个程序放到这个用户下,竟然没有出现这个问题。
我发现原来的用户下有一个处理syslog消息的demon进程,这个进程会在消息多的时候抛出多个进程来处理syslog消息,最多可以抛出30个进程。而且这个程序在运行的过程中还会出现core dump。我以为是达到了用户最大线程数,但是我用ulimit -a查看用户最大进程数很大,不可能达到。还会有什么原因呢?内存耗尽??但每个进程耗的内存并不大,而且程序也一直在跑着,只是出现core dump 。那还会有什么原因呢??????????





  1. bash-2.03$ ulimit -a
  2. core file size (blocks)     unlimited
  3. data seg size (kbytes)      unlimited
  4. file size (blocks)          unlimited
  5. open files                  256
  6. pipe size (512 bytes)       10
  7. stack size (kbytes)         8192
  8. cpu time (seconds)          unlimited
  9. max user processes          29995
  10. virtual memory (kbytes)     unlimited
复制代码

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2006-06-23 20:20 |只看该作者
段错误.

论坛徽章:
0
3 [报告]
发表于 2006-06-23 20:32 |只看该作者
关注

论坛徽章:
0
4 [报告]
发表于 2006-06-23 21:44 |只看该作者
原帖由 letian0711 于 2006-6-23 20:17 发表
前段时间发了一个帖子:

[code]
写的一个deamon程序,在测试机器上跑了两天,没有一点问题。
可是放到现场总是跑上几个小时就莫名其妙的退出。并且日志没有任何异常。也没有core dump
程序大概的功能就是作 ...


可能是代码溢出了,如果不知道从那下手抓BUG,最笨的办法就是把代码切片用个死循环测试了.

论坛徽章:
0
5 [报告]
发表于 2006-06-24 02:55 |只看该作者
不是有core dump 文件么?
bt一下看看在那里挂的么。

论坛徽章:
0
6 [报告]
发表于 2006-06-26 10:06 |只看该作者

回复 5楼 NetSnail 的帖子

我没有处理syslog消息的这个程序的代码。core dump是syslog程序产生的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP