免费注册 查看新帖 |

Chinaunix

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

求助:有关recvfrom问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-31 14:42 |只看该作者 |倒序浏览
各位大侠,小弟遇到一个问题,一个已经设置为非阻塞socket的socket在某种异常情况下(如反复拔插设备网线时会出现)recvfrom时居然阻塞住了,大家有遇到同样的问题么?有什么可能导致此问题发生?

.......
ioctl(sock, FIONBIO, &TRUE);
.....
recvlen = recvfrom( sock ,buf,len,0,(SOCKADDR*)&from,(socklen_t*)&fromlen );

ps:程序中由于公司历史原因未使用select,而是使用的while(1)+sleep的方式,我想尽管可能会有问题,但是既然是非阻塞的sock应该也没什么关系吧?

先谢谢大家了!

论坛徽章:
0
2 [报告]
发表于 2009-08-31 16:46 |只看该作者
原帖由 weweyangyang 于 2009-8-31 14:42 发表
各位大侠,小弟遇到一个问题,一个已经设置为非阻塞socket的socket在某种异常情况下(如反复拔插设备网线时会出现)recvfrom时居然阻塞住了,大家有遇到同样的问题么?有什么可能导致此问题发生?

.......
i ...

你确定是阻塞到recvfrom了吗?

论坛徽章:
0
3 [报告]
发表于 2009-08-31 17:22 |只看该作者
应该是确定吧,用GDB看到的

#0  0xffffe424 in __kernel_vsyscall ()
#1  0xb7d7f198 in recvfrom () from /lib/libpthread.so.0
#2  0x08425030 in CSockSwitch::TransData () at ../source/puiservice.cpp:48
#3  0x08425c0e in CSockSwitch:ataSwitchTaskProck () at ../source/puiservice.cpp:48
#4  0xb7ac9771 in OspTaskTemplateFunc () from /opt/nvr/libosp.so
#5  0xb7d7843b in start_thread () from /lib/libpthread.so.0
#6  0xb7789fde in clone () from /lib/libc.so.6
(gdb)

阻住后,无论什么时候线程栈内都是这个状态
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP