平台崩溃之operator new异常(七)-2010-5-18

2010-5-18

今天早上过来,登上10000号查看平台状态,平台暂时还没有死掉。又是重复的期待中...。这样的时间过得真慢...。  

下午14:00左右,客服人员说平台连不上了,远程上去看,弹出user breakpoint called窗口出来,调用栈为:

MSVCRTD! 10211920()
MSVCRTD! 10211863()
MSVCRTD! 10211836()
MSVCRTD! 1020e1be()
MSVCP60D! 104b7a69()
MSVCP60D! 104ad0d2()
MSVCP60D! 1048ba18()
MSVCP60D! 1048bccc()
MSVCP60D! 1048a005()
MSVCP60D! 1048a060()
MSVCP60D! 10489bb3()
ExVariantToString(_variant_t {100 VT_I2}) line 61 + 45 bytes
COrgHelper::Get(unsigned int 10008, IORGINFO * * 0x2456fb0c, unsigned char 1) line 72 + 42 bytes
CDAPPlugin::GetOrg(unsigned int 10008, unsigned char 1) line 90 + 17 bytes
CRTOPlugin::OrgIsOnline(unsigned int 10008) line 245 + 28 bytes
CSepSEMQ::CanInquiry2(CSEMQItemBase * 0x2456fcf0) line 51
CSEMQ::Inquiry2() line 1154 + 20 bytes
InquiryProc2(void * 0x00e78b50) line 607
exec_task_func(void * 0x1fe922a0) line 32 + 15 bytes
ACED! 00585ab7()
ACED! 005859e4()
ACED! 004fa836()
MSVCRTD! 1020c323()
KERNEL32! 7c824829()

ExVariantToString函数的61行是如下代码:
strValue = pszValue == NULL?"":pszValue;
变量pszValue=100


今天师伯发现了localtime的线程安全问题。代码已经改好,今天晚上放上去跑。

另外,发现之前修改的关于微软关于ConvertBSTRToString函数的bug,使用_com_util_fix修复的代码没有起作用。原因是头文件包含有问题。
包含的顺序应该是:
#include "comutil.h"
#include <comdef.h>
如果这样包含:
#include <comdef.h>
#include "comutil.h"
那么代码就不会起作用,通过以下bug可以验证这点。
栈溢出bug:
#define BUG_ARR_MAX 2000000
 char *szBuf = new char[BUG_ARR_MAX];
 memset(szBuf, 'X', BUG_ARR_MAX);
 szBuf[BUG_ARR_MAX - 1] = '/0';
 _bstr_t bstrString(szBuf);///<栈溢出
代码已经修改好了,并把平台所有用到_com_util命名空间的函数全部替换过来了,并修改了所有的头文件顺序。

今天晚上7:50分左右替换程序,重启了平台。下一步,如果再出问题,则将dap的方法移到rto里面再试,代码已经在本地修改好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值