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