繁体   English   中英

在Windows XP中多次启动程序和DLL有问题吗?

[英]Problems with starting a program + DLL multiple times in Windows XP?

我们开发了一个使用TCP和UDP套接字的网络库。 该DLL由testclient使用,它在同一台PC上多次启动以进行负载测试。

在Windows Vista中,多次启动testclient没问题。 在Windows XP中,将其启动最多5次是没有问题的,但是如果我们将其启动6次或更多次,然后关闭一个客户端,则所有这些都将崩溃,并且显然带有随机堆栈跟踪。

是的,尽管我们不使用任何进程间代码(仅使用客户端之间的套接字),但其中一个客户端的终止会导致所有这些客户端的崩溃。

我们的DLL是使用MSVC编译的,并使用Boost和Crypto ++库(静态链接)。

知道为什么不同的过程会相互影响吗?

我们将需要更多数据才能诊断您的问题。 但是,考虑到关闭一个客户端会使所有客户端崩溃,您需要考虑客户端相互影响的所有方式(进程间通信)。 隐式或显式地。 所以我先来看

  • 当第六个客户端关闭时,服务器将执行什么操作。 它是否发送其他五个客户端无法处理的特殊数据包?
  • 您正在向文件系统读取或写入任何内容吗?
  • 您是否使用共享内存?

虽然总的来说,我发现在C ++中看似随机的堆栈跟踪通常是由以下原因之一引起的

  • 数据损坏
  • 线程逻辑中的竞争条件。

一个想法:您有一些错误。

认真地说,如果没有任何信息,就无法知道您的问题所在。
当进程崩溃时,通常有很好的理由这样做。 找出那是什么。 在调试中编译您的dll和可执行文件,附加一个调试器并使您获得的堆栈跟踪有意义。 如果您得到一个废话堆栈跟踪,找出原因。

与许多问题一样,这一问题很可能可以通过“仅调试它”来解决

DLL的修改或锁定DLL可能导致依赖于它的程序崩溃。 通常,对DLL的更改将由文件系统锁定,但是在您的应用程序中,您可能会做一些不寻常的事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM