場景:
兩個程序, 子程序顯示一視窗,每次初始時,需要將子程序視窗銷毀後,再重新建立
其中,出現了這樣的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定位到是記憶體釋放時候的錯誤 損壞了記憶體管理...