IT分销/经销 数据库Informix

请教:调用informix的api函数后,api函数不返回问题

在调用informix的api后,调用堆栈如下,但就是不返回。导致调用阻塞。函数堆栈如下:WS2_32!WSARecv+0x65   WSOCK32!recv+0x31   isqlt09a!service1+0xd932   isqlt09a!service1+0xcaae   isqlt09a!ifx_int8cmp+0xe441   i... 显示全部
在调用informix的api后,调用堆栈如下,但就是不返回。导致调用阻塞。

函数堆栈如下:
WS2_32!WSARecv+0x65   
WSOCK32!recv+0x31   
isqlt09a!service1+0xd932   
isqlt09a!service1+0xcaae   
isqlt09a!ifx_int8cmp+0xe441   
isqlt09a!ifx_int8cmp+0x1aab9   
isqlt09a!ifx_int8cmp+0x14002   
isqlt09a!ifx_int8cmp+0x770e   
isqlt09a!ifx_int8cmp+0x193b   
isqlt09a!CheckOsInit+0x1819   
isqlt09a!CheckOsInit+0x18f7   
isqlt09a!CheckOsInit+0x1db   
isqlt09a!sqli_defprep_set+0x483a
isqlt09a!sqli_prep+0x454   
isqlt09a!sqli_prep+0x1a8   
isqlt09a!sqli_prep+0x3f   
………………
(注:省略部分为我调用informix的api的代码,该代码平时使用是没问题的,只在某些时候出现,怀疑是其他的地方问题导致)

请专家指点一下,不胜感激。谢谢!!

10月27日补充提问
非常感谢大家的回复,我都试过,但都没有得到想要的效果。
  
这个问题在用户那里偶尔重现,重现条件未知。
我希望:1.有办法能重现(能重现才能证明问题的根源再哪里);2.问题原因是什么;3.采取怎样的规避措施
收起
参与40

查看其它 39 个回答qdbenz 的回答

qdbenz qdbenz 其他 福涵
看你说的现象来看,
个人觉得不是你应用写的问题,
问题出在你的数据库配置上,
因为你的应用在一定的时间内还是能正常使用的。

通过你说的调用api无响应,
看起来象是缓冲区溢出,
可能是由于你的堆栈缓冲区设置得太小了吧,
最好能与正常使用的客户参照一下,
可以查看关于虚拟存储的相关参数:
SHMADD、SHMVIRTSIZE 、STACKSIZE
个人感觉最可能是STACKSIZE设置过小,
SHMADD设置不合理,
造成初始STACK缓冲区空间不足后,
调用SHMADD多次增加空间后,
造成缓冲区溢出。
IT分销/经销 · 2010-07-22
浏览364

回答者

qdbenz
其他 福涵
评论33

qdbenz 最近回答过的问题

回答状态

  • 发布时间:2010-07-22
  • 关注会员:0 人
  • 回答浏览:364
  • X社区推广