高分求解问题:邪门了啊,c#的程序竟然出现了Visual C++的运行库的错误!!!!1

时间:2022-08-09 17:45:32
我开发的程序调试一切正常,当给客户安装后竟然莫名其妙的弹出了C++运行库的错误对话框,而且一弹就好多的,大概十几个,点击忽略程序可以继续。
对话框标题是:Microsoft Visual C++ Runtime Library.
内容是:
Assertion failed!
Program:..Programs File\信息监听传输\Site_server.exe(这是我开发的程序)
File:q:\SPHINX\NETLIBS\nt\ssock\src\ntssockc.c(莫名其妙的路径,我开发环境,运行环境均没有此路径)
Line:1039
Expression: 1 == pConnectionObject->fCallChack
For information on how your program can cause assertion failure,see the Visual C++ documentation on asserts 
(Press Retry to debug the application - JIT must be enabled)

下面三个按钮:终止、重试、忽略
点终止即把程序关闭,点重试也会把程序关闭,点忽略程序可以继续
另注:另外还有一个也是用c#开发的程序也和我的程序在同一个机器上运行。这两个程序都是做网络服务端的程序。

37 个解决方案

#1


中毒了,
典型的现象是当前的泡泡堂中毒就是这样。

应该是funlove病毒

#2


你是否调用vc++写的类库?
还使用了callback函数。

#3


没有调用任何vc写的东西啊

#4


按1楼的方法试试杀毒

#5


你用的是winsocket吧,它的底层就是调用API(ws2_32.dll),可能这就是用C++写的

#6


该回复被版主删除

#7


检查你编译时的库文件路径。

会不会,开发环境里的framework路径与运行环境里的framework路径不同造成的?

#8


我是楼主
我根本就没有用到q:\SPHINX\NETLIBS\nt\ssock\src\ntssockc.c这个文件,而且无论在我的开发环境还是在运行环境都没有用到这样一个文件啊,都没有q盘啊。你说这不邪门了吗?哪就跑出这么个文件来呢?

#9


mark

#10


楼主是否使用了:ZEODBO控件

#11


楼主是否使用了:ZEODBO控件
===========================


我是楼主
没有用任何第三方控件

#12


没用ZEODBO控件就奇怪了,还是检查一下吧

#13


楼上,检查什么呢?

#14


检查SPHINX\NETLIBS\nt\ssock\src\ntssockc.c在哪个文件里,如果有很可能是用了ZEODBO控件
当然我指的是客户的机子,因为你说你调试时一切正常.
有病毒或木马使用这个控件也是可能的,灰鸽子不也用了第三方控件,所以不能排除
木马的可能性
所以我觉得在你的机子肯定没用ZEODBO控件情况下,那就是你客户的机子上有程序用了ZEODBO控件,或是有木马使用了这个控件,
所以,当然是要检查一下机器里有没有ZEODBO控件

#15


那么楼主再换台电脑试试,如果OK,说明那台电脑有问题

就查毒,查杀木马。

#16


it is indeed strange

#17


ZEODBO控件
这是个什么控件啊?干吗用的?

#18


系统乱了,换台机器试试。

#19


或是你的程序里,大量系统资源没有释放,系统进入无*状态。:)

#20


我是楼主
这台服务器是新买的,是刚装的系统,应该不会有第三方的软件使用ZEODBO控件控件,至于病毒倒是有可能

#21


呵呵,楼主试试吧,我们在这猜来猜去,不会有结果的~

#22


诺顿,升级了病毒库
杀了,没毒

#23


把你的程序拿到其它电脑运行试试。

你的程序应该是有多个客户端时错误吧?

#24


我是楼主
关键问题是用c#写的,怎么出来了Visual C++6.0的错误,这样的错误一般还只出现在用VC6的调试环境下面,更让人费解的是q:\SPHINX\NETLIBS\nt\ssock\src\ntssockc.c,这tmd是个什么路径啊?从来都没用过这个文件啊,疯了

#25


楼主的程序用没用到SQL

#26


用到SQL SERVER 2000了

#27


那会是什么问题呢?

#28


你通过什么方式连接SQL Server的?

怀疑你在数据库中用了NetLib的加密/解密函数

http://www.netlib.com/sql-encryption-api-list.shtml

#29


用的是ADO Connection
try
{
DataSet ds;
                                    ds.Reset();
sqlComm.CommandText = _sqlStr;
sqlComm.Connection =sqlConn;
sqlDA.SelectCommand = sqlComm;
SqlCommandBuilder sqlCommBuilder = new SqlCommandBuilder(sqlDA);
sqlConn.Open();
result = sqlDA.Fill(ds);
}
catch(SqlException exs)
{
ExceptionManage(exs);
}
catch(Exception ex)
{
throw ex;
}
finally
{
sqlConn.Close();
}

#30


难道说你给客户装的是Beta版的SQL?

看下面这几个连接

http://www.mssqlserver.com/faq/troubleshooting-assertion.asp

这个人和你碰到的错误是差不多的:

http://groups.google.com/group/microsoft.public.sqlserver.connect/browse_thread/thread/ae953fa3ed58ed78/aa7eb9fd857ec88c?lnk=st&q=SPHINX+NETLIBS&rnum=2&hl=zh-CN#aa7eb9fd857ec88c

http://support.microsoft.com/?kbid=229608

试试重装SQL或者试试把操作系统和SQL的补丁都打上再看看有没有问题

#31


估计装个正式版的,然后把所有补丁都打上就不会有问题了

另外检查一下你的程序发布时,有没有把DEBUG版本的DLL发布了

病毒应当不大像吧 :), 阿门!

#32


偶无法断定是什么问题,不过既然楼主用的是SQL SERVER 2000,那就不会是病毒了,也不会是操作系统的问题,(这么说好像有点武断,呵呵,这只是偶的判断,仅供参考)
所以偶也建议楼主给SQL SERVER 2000打上补丁
偶发现ntssockc.c是mssql中的一个源程序文件,所以q:\SPHINX\NETLIBS\nt\ssock\src\ntssockc.c不会在楼主的硬盘上,而是在MS的硬盘上,所以楼主不用奇怪,也不要疯了,如果同时有十几个连接,那么楼主的服务端程序会弹出错误对话框十几个,也就不奇怪了

#33


应该是数据连接部分出现了问题。lz排查一下,试着
 try{
     //....
    }
catch(Exception eex){
         //跟踪一下
          }
finally{
       //处理一下
  }

#34


我是楼主


偶无法断定是什么问题,不过既然楼主用的是SQL SERVER 2000,那就不会是病毒了,也不会是操作系统的问题,(这么说好像有点武断,呵呵,这只是偶的判断,仅供参考)
所以偶也建议楼主给SQL SERVER 2000打上补丁
偶发现ntssockc.c是mssql中的一个源程序文件,所以q:\SPHINX\NETLIBS\nt\ssock\src\ntssockc.c不会在楼主的硬盘上,而是在MS的硬盘上,所以楼主不用奇怪,也不要疯了,如果同时有十几个连接,那么楼主的服务端程序会弹出错误对话框十几个,也就不奇怪了

===============================================================================

十几个连接同时对数据库操作就会让数据库出错吗?SURE?


#35


...src\ntssockc.c 的确是MSSQL SERVER的源程序文件,建议完全卸载程序,包括程序的残余目录和文件也要手工清除,搜索注册表,将所有MSSQL相关(就以MSSQL为条件进行搜索吧)项和值删除,然后重启电脑,重装MSSQL,重装后,立即安装SP3(目前MSSQL2000最高补丁),这样处理后应该不会再有问题.

#36


至于出来VC++的运行库错误,是因为你所装载的数据库库文件是由VC开发的,问题不是出在你的C#程序上.很显然Q盘不是你的盘符所在,并且这些是调试信息.是微软本身程序的问题.

#37


偶试试,如果问题解决了,立刻给分

#1


中毒了,
典型的现象是当前的泡泡堂中毒就是这样。

应该是funlove病毒

#2


你是否调用vc++写的类库?
还使用了callback函数。

#3


没有调用任何vc写的东西啊

#4


按1楼的方法试试杀毒

#5


你用的是winsocket吧,它的底层就是调用API(ws2_32.dll),可能这就是用C++写的

#6


该回复被版主删除

#7


检查你编译时的库文件路径。

会不会,开发环境里的framework路径与运行环境里的framework路径不同造成的?

#8


我是楼主
我根本就没有用到q:\SPHINX\NETLIBS\nt\ssock\src\ntssockc.c这个文件,而且无论在我的开发环境还是在运行环境都没有用到这样一个文件啊,都没有q盘啊。你说这不邪门了吗?哪就跑出这么个文件来呢?

#9


mark

#10


楼主是否使用了:ZEODBO控件

#11


楼主是否使用了:ZEODBO控件
===========================


我是楼主
没有用任何第三方控件

#12


没用ZEODBO控件就奇怪了,还是检查一下吧

#13


楼上,检查什么呢?

#14


检查SPHINX\NETLIBS\nt\ssock\src\ntssockc.c在哪个文件里,如果有很可能是用了ZEODBO控件
当然我指的是客户的机子,因为你说你调试时一切正常.
有病毒或木马使用这个控件也是可能的,灰鸽子不也用了第三方控件,所以不能排除
木马的可能性
所以我觉得在你的机子肯定没用ZEODBO控件情况下,那就是你客户的机子上有程序用了ZEODBO控件,或是有木马使用了这个控件,
所以,当然是要检查一下机器里有没有ZEODBO控件

#15


那么楼主再换台电脑试试,如果OK,说明那台电脑有问题

就查毒,查杀木马。

#16


it is indeed strange

#17


ZEODBO控件
这是个什么控件啊?干吗用的?

#18


系统乱了,换台机器试试。

#19


或是你的程序里,大量系统资源没有释放,系统进入无*状态。:)

#20


我是楼主
这台服务器是新买的,是刚装的系统,应该不会有第三方的软件使用ZEODBO控件控件,至于病毒倒是有可能

#21


呵呵,楼主试试吧,我们在这猜来猜去,不会有结果的~

#22


诺顿,升级了病毒库
杀了,没毒

#23


把你的程序拿到其它电脑运行试试。

你的程序应该是有多个客户端时错误吧?

#24


我是楼主
关键问题是用c#写的,怎么出来了Visual C++6.0的错误,这样的错误一般还只出现在用VC6的调试环境下面,更让人费解的是q:\SPHINX\NETLIBS\nt\ssock\src\ntssockc.c,这tmd是个什么路径啊?从来都没用过这个文件啊,疯了

#25


楼主的程序用没用到SQL

#26


用到SQL SERVER 2000了

#27


那会是什么问题呢?

#28


你通过什么方式连接SQL Server的?

怀疑你在数据库中用了NetLib的加密/解密函数

http://www.netlib.com/sql-encryption-api-list.shtml

#29


用的是ADO Connection
try
{
DataSet ds;
                                    ds.Reset();
sqlComm.CommandText = _sqlStr;
sqlComm.Connection =sqlConn;
sqlDA.SelectCommand = sqlComm;
SqlCommandBuilder sqlCommBuilder = new SqlCommandBuilder(sqlDA);
sqlConn.Open();
result = sqlDA.Fill(ds);
}
catch(SqlException exs)
{
ExceptionManage(exs);
}
catch(Exception ex)
{
throw ex;
}
finally
{
sqlConn.Close();
}

#30


难道说你给客户装的是Beta版的SQL?

看下面这几个连接

http://www.mssqlserver.com/faq/troubleshooting-assertion.asp

这个人和你碰到的错误是差不多的:

http://groups.google.com/group/microsoft.public.sqlserver.connect/browse_thread/thread/ae953fa3ed58ed78/aa7eb9fd857ec88c?lnk=st&q=SPHINX+NETLIBS&rnum=2&hl=zh-CN#aa7eb9fd857ec88c

http://support.microsoft.com/?kbid=229608

试试重装SQL或者试试把操作系统和SQL的补丁都打上再看看有没有问题

#31


估计装个正式版的,然后把所有补丁都打上就不会有问题了

另外检查一下你的程序发布时,有没有把DEBUG版本的DLL发布了

病毒应当不大像吧 :), 阿门!

#32


偶无法断定是什么问题,不过既然楼主用的是SQL SERVER 2000,那就不会是病毒了,也不会是操作系统的问题,(这么说好像有点武断,呵呵,这只是偶的判断,仅供参考)
所以偶也建议楼主给SQL SERVER 2000打上补丁
偶发现ntssockc.c是mssql中的一个源程序文件,所以q:\SPHINX\NETLIBS\nt\ssock\src\ntssockc.c不会在楼主的硬盘上,而是在MS的硬盘上,所以楼主不用奇怪,也不要疯了,如果同时有十几个连接,那么楼主的服务端程序会弹出错误对话框十几个,也就不奇怪了

#33


应该是数据连接部分出现了问题。lz排查一下,试着
 try{
     //....
    }
catch(Exception eex){
         //跟踪一下
          }
finally{
       //处理一下
  }

#34


我是楼主


偶无法断定是什么问题,不过既然楼主用的是SQL SERVER 2000,那就不会是病毒了,也不会是操作系统的问题,(这么说好像有点武断,呵呵,这只是偶的判断,仅供参考)
所以偶也建议楼主给SQL SERVER 2000打上补丁
偶发现ntssockc.c是mssql中的一个源程序文件,所以q:\SPHINX\NETLIBS\nt\ssock\src\ntssockc.c不会在楼主的硬盘上,而是在MS的硬盘上,所以楼主不用奇怪,也不要疯了,如果同时有十几个连接,那么楼主的服务端程序会弹出错误对话框十几个,也就不奇怪了

===============================================================================

十几个连接同时对数据库操作就会让数据库出错吗?SURE?


#35


...src\ntssockc.c 的确是MSSQL SERVER的源程序文件,建议完全卸载程序,包括程序的残余目录和文件也要手工清除,搜索注册表,将所有MSSQL相关(就以MSSQL为条件进行搜索吧)项和值删除,然后重启电脑,重装MSSQL,重装后,立即安装SP3(目前MSSQL2000最高补丁),这样处理后应该不会再有问题.

#36


至于出来VC++的运行库错误,是因为你所装载的数据库库文件是由VC开发的,问题不是出在你的C#程序上.很显然Q盘不是你的盘符所在,并且这些是调试信息.是微软本身程序的问题.

#37


偶试试,如果问题解决了,立刻给分