簡體   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