[英]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.