我在Linux服務器上運行C/C++程序來爲視頻提供服務。該程序(稱爲插件)的核心功能是轉換視頻,併爲每個視頻請求分開一個單獨的插件進程。但我有一個奇怪的問題,有時服務器負載平均值意外高。我在這個階段從頂層的命令看到的是,有一些進程運行很長時間並且需要一些巨大的CPU。C/C++程序中的損壞堆棧問題
當調試使用gdb和回溯堆棧這個正在運行的程序,我發現了什麼是腐敗棧:「上一幀內該幀(堆棧損壞?)」。我搜查了網絡,發現如果程序出現分段錯誤,就會發生這種情況。
但我知道,如果該計劃得到段錯誤,程序應該崩潰,在這一點上退出。但令人驚訝的是,程序在分段錯誤後仍然運行。
這可能是什麼原因造成的?我知道一定有在節目中的一些大問題,但我只是不明白從哪裏開始解決這個問題......這將是巨大的,如果任何你能告訴我一些燈光......
謝謝推進
在您的案例中可能存在腐敗卡住意味着您使用了一個不應該使用的內存位置。當這樣的事情發生時,結果是未定義的行爲。該程序不會註定要崩潰。什麼都可能發生。 – Muggen 2011-04-14 18:59:45