乙個奇怪的BUG

2021-10-01 01:43:07 字數 1238 閱讀 6520

場景:

兩個程序, 子程序顯示一視窗,每次初始時,需要將子程序視窗銷毀後,再重新建立

其中,出現了這樣的bug, 測試時出現了兩個子程序視窗,其中乙個不受程式控制

流程:

nim_chatroom::chatroomform* pchatform = new chatroomform(this);

pcurchatform = pchatform;

chatroomform::~chatroomform()

case subexe_intlivepreview: //主程序發來的 建立視窗,只預覽,不推流 訊息

createxnwlivewindow(false,false); //只預覽 不推流

}

這一步,執行後, 發現雖然建立了視窗,但視窗不受主程序控制了

case subexe_livestart:  //開始互動直播 ,建立視窗,然後推流

else

createxnwlivewindow();

}}

這一步 發現,出現了兩個子程序視窗

分析

建立預覽視窗時,如果之前存在視窗,則銷毀, 銷毀後,在建立新的視窗。

只所以產生這樣的bug,就在此銷毀機制中,視窗指標的置空時機。

因為,視窗是windows視窗,呼叫close,關閉視窗後,到執行到析構函式,是有一段時間的。

這樣,pcurchatform->close(); //執行視窗銷毀過程,非阻塞

createxnwlivewindow(false,false);  //建立新的視窗, pcurchatform指向新視窗

此時,視窗的執行過程才結束,執行到析構函式,但是此時的pcurchatform 已經是新視窗的了,將新視窗指標置空,所以這個新視窗不受主程序控制

chatroomform::~chatroomform()

case subexe_intlivepreview: //主程序發來的 建立視窗,只預覽,不推流 訊息

createxnwlivewindow(false,false); //只預覽 不推流

}

當再次發來建立訊息時, 因為新視窗的pcur為空,所以重新建立了乙個新視窗,  但是之前的視窗並沒有銷毀,由此出現了 兩個視窗的bug

android 乙個奇怪的bug

今天做乙個android例子,程式本來執行好好的,可是後來不知道為什麼會有這個異常,具體如下 我 layout.xml檔案裡,有乙個linearlayout android id id serinfoll 當我在activity裡,用 linearlayout findviewbyid r.id.s...

乙個失誤引發的奇怪執行緒BUG

今天客戶反應之前做的乙個專案中,有乙個功能時能時不能,於是按照描述,在自己電腦上進行了相應的測試,可是發現問題難以重現。後來按著客戶的環境開了個虛擬機器 xp sp3 進行配置,問題重現了。可是在自己電腦上 win7 64 卻不會出現。難道是系統引發的問題?可是依據專案以前的案例,在xp上執行是ok...

乙個奇怪BUG的記錄(未根本解決)

乙個奇怪bug的記錄 未根本解決 md 基本邏輯 將資料夾下面的所有檔案路徑名,提取到乙個configfile檔案中,然後按行讀取處理。問題 對於bash資料集沒有問題,但是對於redis資料集 檔案比bash少 出現segmentfault,使用gdb定位到是記憶體釋放時候的錯誤 損壞了記憶體管理...