我们开发了一个使用TCP和UDP套接字的网络库。 此DLL由testclient使用,该testclient在同一台PC上多次启动以进行负载测试。
在Windows Vista中,多次启动testclient没有问题。 在Windows XP中,启动它最多5次是没有问题的,但是如果我们启动它6次或更多次,然后关闭一个客户端,它们都会因显然随机的堆栈跟踪而崩溃。
是的,虽然我们不使用任何进程间代码(只有客户端之间的套接字),但其中一个客户端的终止会导致所有客户端崩溃。
我们的DLL使用MSVC编译并使用Boost和Crypto ++库(静态链接)。
知道为什么不同的流程会相互影响吗?
答案 0 :(得分:1)
我们需要更多数据才能诊断您的问题。但是,考虑到关闭一个客户端会导致所有客户端崩溃,您需要考虑客户端相互影响的所有方式(进程间通信)。无论是隐式还是显式。所以我先从看
开始总的来说,我发现在C ++中看似随机的堆栈跟踪通常是由以下之一引起的
答案 1 :(得分:0)
一个想法:你有一些错误。
说真的,没有任何信息,没有办法知道你的问题是什么 当进程崩溃时,通常有很好的理由这样做。找出那是什么。 在调试中编译dll和可执行文件,附加调试器并理解所获得的堆栈跟踪。如果你得到一个无意义的堆栈跟踪,找出原因。
与许多问题一样,这个可能会通过“只是调试它”来解决
答案 2 :(得分:0)
修改DLL或锁定DLL可能会导致依赖它的程序崩溃。通常,DLL的更改将被文件系统锁定,但在您的应用程序中,您可能会做一些与众不同的事情。