Re: c服务程序运行崩溃的诡异问题
C/C++本地代码调试
c服务程序运行崩溃的诡异问题
jonnystill7
2012-06-30, 21:05 下午
先描述一下问题情景吧:
c编写了一个程序,在两台终端间进行socket通信,程序里面包括较多的多线程和socket处理,这个程序支持控制台方式双击运行,也支持以服务程序的方式后台启动,同时这个程序在内部处理过程中需要调用到第三方提供的一个DLL动态库,在调试过程中为了压力测试,设置了会话寿命,每隔30秒,两台终端间就会重新建立socket连接。
当两台终端都是winxp(sp3)时,不管是用控制台方式还是服务方式启动,运行起来都没有问题。
但是当一台终端是winxp(sp3),一台终端是winxp(sp2)时,该程序在sp2机器上运行时,以控制台方式启动运行正常,但当以服务方式运行的时候,第一次建立socket连接时没有问题,30秒寿命一过,第二次重连时,程序就崩溃,弹出的错误窗口中说调用的那个第三方动态库中读取了非法地址。
目前可以肯定的是第三方动态库肯定没有问题,但不知道我的程序是怎样触发这个问题的。
尝试用windbg附加到进程中去调试,可是程序崩溃的时候windbg显示的调用堆栈信息已经是在第三方动态库里面了,貌似跟我的程序无关了。。。。
张老师能不能给提供一点分析解决的思路?
Re: c服务程序运行崩溃的诡异问题
格蠹老雷
2012-07-01, 10:42 上午
建议看一下你调用的是哪个接口函数,仔细检查一下传递的参数,必要的话和DLL的提供者沟通一下,看是否存在误解;如果确认调用参数和调用条件没有问题,那么可以让DLL提供者做更多分析...
Re: c服务程序运行崩溃的诡异问题
jonnystill7
2012-07-01, 14:04 下午
谢谢张老师,我再试试。