这一年来解决的几个故障
来源:互联网 发布:sql中累加函数 编辑:程序博客网 时间:2024/04/28 23:37
这一年来解决的几个故障
(1)纯英文系统下报警确认("√")的勾为乱码
在纯英文系统下浏览软件显示的报警确认的勾为乱码.
问题原因:
确认报警标志字符"√",在英文系统下HL7协议接收确认报警字符串,解析字符"√"错误,因而会出现问题。
更改方法:
通过HL7 发送确认报警时,确认的报警将报警字符串中"√"删除,他床接收时,确认的报警将在报警字符串头部加上"√"。
(2)errno问题
int iValue = _wtoi( pszCpy );
if( ERANGE == errno )
{
delete []pszCpy;
pszCpy = NULL;
return ERROR_TRANS_OVERFLOW;
}
这种情况下, _wtoi函数转换正确不会设置errno值(错误时会设置)。因为调用此函数之前,主线程可能已经把errno设置成ERANGE,所以会进入if
条件返回错误。
更改方法:
int iValue = _wtoi( pszCpy ); 之前加上_set_errno(0);,
这样就保证errno出错一定是在
int iValue = _wtoi( pszCpy );
引起的。(errno是线程安全的)
(3)COM对象引用计数不正确(IUnknownPtr)
Bed引用计数不正确的原因:
ST回顾组件GetBed()接口获取Bed对象时没有将Bed对象的引用计数加1(其他组件相应接口都加1),而在Master组件中的
CBedSetContainerWnd::OnPatientDischarge函数中调用ST回顾组件GetBed()时返回值赋值给一个IUnknownPtr类型的堆栈变量bed,这个过程Bed对象
的引用计数不会增加。但堆栈变量bed(IUnknownPtr类型)在销毁时会将Bed引用计数减1,这个过程结束后,Bed的引用计数就不正确。所以会导致
Bed对象提前释放,因而会导致中央站异常退出。
更改方法:
ST回顾组件GetBed()接口获取Bed对象时将Bed对象的引用计数加1。
(4)ADO-Connection对象Release线程不安全
问题原因:
多线程同时调用Connection对象Release导致异常。
更改方法:
对Connection对象重新封装一个类,加入Connection对象的Release的调用在各线程之间同步机制。
(5)成员变量为vector注意多线程
for(ColumnVector::iterator it=m_vectorColumn.begin()+1;it!=m_vectorColumn.end();it++)。
由代码可知单线程情况下是不会出现错误的,所以肯定是多线程引起的。
因为在统计心律失常线程和界面主线程都会对m_vectorColumn操作,所以会引起这个故障。
更改方法:
临界区,将CHeaderWnd类的m_vectorColumn成员保护起来.统计线程和主线程对m_vectorColumn需要互斥的地方加临界区保护。
(6)COM接口 retval参数属性问题
GetCurReferenceSTTemplate接口中的pstTemplateDetail参数有retval属性。
GetCurReferenceSTTemplate将pstTemplateDetail参数用临时变量缓存、并且没有初始化(VARIANT类型需要初始化)。如果GetCurReferenceSTTemplate返回值是空,则缓存的临时变量会有不确定值或者是错误值。STUSTTemplateDetail结构体中有VARIANT类型的成员,GetCurReferenceSTTemplate(由于是将结果浅拷贝到stuCurRefDetail)导致将stuCurRefDetail中的成员(VARIANT类型)不确定值。VARIANT类型的成员变量值不确定或者错误在后续的VariantCopy或者VariantClear可能出异常。
解决办法,修改 DataServer的GetCurReferenceSTTemplate接口,去掉retval属性就可解决。
如果有需要深度拷贝(特别是VARIANT类型)的类型参数,不要使用retval属性。
- 这一年来解决的几个故障
- 解决路由器故障的几个范例
- 最近解决的几个死机故障
- 总结一下这一年来的心得体会
- robbin: 我来CSDN的这一年
- 我来CSDN的这一年
- 我来CSDN的这一年
- 关于这一年来程序员的生活
- 我来CSDN的这一年
- 这一年来的一点感受
- 一年来的感悟。
- 这一年来
- 几个典型的蓝屏故障
- SQL Server 的几个故障
- 硬盘故障的解决
- 新的一年来了
- 毕业一年来的感触
- 一年来的技术整理
- 4.3 买票找零 卡特兰数
- 用Bochs调试NTLDR
- 课程设计
- linux环境下安装memcache过程详解
- 从DOS命令到制作IMG的详细教程
- 这一年来解决的几个故障
- bochs在window环境下的调试
- Doxygen 的注释格式
- stringtokenizer类的使用方法
- Linux用Nasm巧汇编
- 初恋时,不懂爱情
- 一招搞定,appserv-win32-2.6.0安装后不能进入数据库管理 jfbcb.com
- 在linux下安装NASM
- 读书小记01