免费注册 查看新帖 |

Chinaunix

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

@程序在测试机上跑没问题,现场莫名其妙的退出@ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-09 09:52 |只看该作者 |倒序浏览
写的一个deamon程序,在测试机器上跑了两天,没有一点问题。
可是放到现场总是跑上几个小时就莫名其妙的退出。并且日志没有任何异常。也没有core dump


程序大概的功能就是作为server端接收client进程A发过来的消息,然后处理消息,将处理完的消息封包,通过socket发送给另一个进程B。程序中处理了 sigpipe,sighup等信号,当B产生sigpipe时打印syslog,不退出。现场进程A,B运行正常。ps查看进程没有内存泄漏。

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

论坛徽章:
0
2 [报告]
发表于 2006-06-09 10:07 |只看该作者
建议贴出部分代码和ps查询结果,否则真不好分析

论坛徽章:
0
3 [报告]
发表于 2006-06-09 10:34 |只看该作者
代码得摘出来,现在没时间,晚上看看。
ps结果:

  1. bash-2.03$ ps -efl |grep nokia
  2. 8 S    probe  2953 16939  0  50 20        ?    138        ? 10:16:34 pts/10   0:00 grep nokia
  3. 8 S    probe 27009     1  0  40 20        ?    374        ? 10:08:25 ?        0:00 ./nokia_alarmPrb -d
复制代码

论坛徽章:
0
4 [报告]
发表于 2006-06-09 10:42 |只看该作者
可能封包边界处理不对

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

回复 4楼 liubinbj 的帖子

你说的封包边界指的是???
我封包的包头用的是两byte16进制的消息总长度,然后每个消息字段前用的是一个byte的每个字段的16进制长度。

我测试机上运行的A,B进程和现场的是一样的,要是封包边界不对的话,测试机上应该也会有问题的吧。

论坛徽章:
0
6 [报告]
发表于 2006-06-09 14:12 |只看该作者
这种情况经常会碰到的.
无非两种情况
1.现场环境和测试环境的差别.
2.程序本身不健壮,测试用数据未能覆盖到在线系统的所有情况.

论坛徽章:
0
7 [报告]
发表于 2006-06-09 14:20 |只看该作者

回复 6楼 unicorns 的帖子

这种问题最不好找了,不知从哪找起

论坛徽章:
0
8 [报告]
发表于 2006-06-09 14:43 |只看该作者
lz做安全的?

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

回复 6楼 unicorns 的帖子

碰到这种问题,该怎么解决?

论坛徽章:
0
10 [报告]
发表于 2006-06-10 20:56 |只看该作者
现场进程在调试器下运行,设断点exit/_exit.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP