1. 程式人生 > >記憶體不足引起的SIGKILL:一個緩衝區不斷增長問題的定位與解決

記憶體不足引起的SIGKILL:一個緩衝區不斷增長問題的定位與解決

新版本的錄製程式終於快完工了,在添加了一個新特性“報警錄製”後,就開始測試了。

一開始就不順利:程式正常執行一段時間後就會崩潰,由於程式添加了守護程序,在崩潰後會自動重啟。

因此測試得到的結果就是:程式執行一段時間後就自動重啟,並不斷持續;有時幾個小時重啟一次,有時甚至每分鐘都重啟。

廢話少說,開始定位問題:

1.去掉自動重啟功能,在gdb下執行,20多分鐘後就崩潰了:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2011-10-26 17:50:22,565: INFO  : recved alarm:[10.0.60.2-1-3905],type:12, startTime:1319622622, recvTime:1319622622 2011-10-26 17:50:22,628: INFO  : SetAlmStatus CHAN[1] = TRUE 2011-10-26 17:50:22,628: INFO  : recved alarm:[10.0.60.2-1-3905],type:12, startTime:1319622622, recvTime:1319622622 2011-10-26 17:50:22,962: NOTICE  : Open file:
'/figure/data/AlarmRecord/StreamTS/1-碼流_魅力音 樂主路/2011-10-26/20111026175022.ts' [Thread 0xa7db70 (LWP 6645) exited] [Thread 0xa3cb70 (LWP 6644) exited] [Thread 0x5cdfb70 (LWP 6643) exited] [Thread 0x45fdb70 (LWP 6642) exited] [Thread 0x3bfcb70 (LWP 6641) exited] [Thread 0x240fb70 (LWP 6640) exited]
[Thread 0x52deb70 (LWP 6638) exited] [Thread 0x1a0eb70 (LWP 6637) exited] [Thread 0x67b7b70 (LWP 6636) exited] [Thread 0x31fbb70 (LWP 6635) exited] [Thread 0x956b70 (LWP 6634) exited] [Thread 0x935b70 (LWP 6633) exited] [Thread 0x8f4b70 (LWP 6632) exited] Program terminated with signal SIGKILL, Killed. The program no longer exists.

顯示程式是收到SIGKILL退出的,bt檢視呼叫堆疊,也是空的。

2.檢視APUE,說SIGKILL訊號是不可被捕捉的。網上資料說“In fact, the process isn't even made aware of the SIGKILL signal since the signal goes straight to the kernel init. At that point, init will stop the process. The process never gets the opportunity to catch the signal and act on it”,看樣子是系統向程式傳送了無法被捕捉的訊號SIGKILL,然後程式就退出了。因此懷疑是程式佔用的系統資源過多,導致程式被OS給幹掉了。

3.查系統日誌
既然懷疑,就要去找證據。在/var/log/message中發現如下記錄:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

相關推薦

記憶體不足引起SIGKILL一個緩衝區不斷增長問題的定位解決

新版本的錄製程式終於快完工了,在添加了一個新特性“報警錄製”後,就開始測試了。 一開始就不順利:程式正常執行一段時間後就會崩潰,由於程式添加了守護程序,在崩潰後會自動重啟。 因此測試得到的結果就是:程式執行一段時間後就自動重啟,並不斷持續;

【問題解決記憶體不足引起“gcc: internal compiler error: Killed (program cc1plus)”以及解決辦法

gcc 編譯出現 internal compiler error: Killed 在使用原始碼包安裝onnx時出現這樣的錯誤,經過搜尋發現是記憶體不足引起的。 原因:主要問題是記憶體不足導致的,

Oracle系統記憶體不足引起的ORA-12518: TNS: 監聽程式無法分發客戶機連線

因系統記憶體使用率過高,導致客戶端無法正常連線資料庫(在伺服器上sqlplus  / as sysdba可以登入,但sqlplus a/[email protected] as sysdba

SD-WAN不斷增長的驅動力

三位數 一點 it預算 產品 簡化 切換 克服 管理員 資源 軟件定義的廣域網(SD-WAN)如今已成為企業網絡中最喧鬧的領域之一,具有靈活性和成本節約的前景。但SD-WAN的一個關鍵驅動因素是它可以用於智能地優化和保護與雲的連接 - 包括將用戶直接連接到雲數據中心 - 同

美麗心靈一個天才的悲情幸運

2002年奧斯卡最佳影片《美麗心靈》不僅獲得了票房口碑雙豐收,還將羅素·克勞送上了奧斯卡最佳男主角的寶座。這部人物傳記類的電影,在當年無論是製作上還是角色上都頗為生動,獲獎無數。故事的主人公是1994年獲得諾貝爾經濟學獎的著名經濟學家、博弈論創始人——約翰·納什

Android記憶體洩漏定位解決

問題現象 反覆點選被測試的Android App的toolbar介面,然後返回再點選。在此重複過程中,發現到一定次數時,頁面開啟速度變慢,有時達到5s,十分影響使用者體驗。該問題涉及app所採用的webview框架的所有介面,影響面大。 初步分析 載入介面慢,一

Android遇到記憶體溢位(Out Of Memory)BUG的經驗解決方法

突然出現的Out Of Memory這個BUG導致我們專案中斷了好幾天,在經過不斷地摸索之後,今天終於得到了解決。鑑於其強大的破壞力與多發性(尤其是當開發圖形豐富的軟體時),在此將解決方法同大家分享,希望大家以後少走彎路,而本人水平有限,如有不當,還望指教! 那

tensorflow 記憶體不足Process finished with exit code 137 (interrupted by signal 9: SIGKILL)

tensorflow/stream_executor/cuda/cuda_driver.cc:967] failed to alloc 536870912 bytes on host: CUDA_ER Process finished with exit code 137 (interrupte

64位word2013 Excel 2013提示記憶體不足,PowerPoint 2013無法開啟檔案的一個解決方案

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

設計模式-生產者消費者模式 常見場景 某個模組負責產生資料,這些資料由另一個模組來負責處理。產生資料的模組,就形象地稱為生產者;而處理資料的模組,就稱為消費者。 該模式還需要有一個緩衝區處於生

常見場景: 某個模組負責產生資料,這些資料由另一個模組來負責處理。產生資料的模組,就形象地稱為生產者;而處理資料的模組,就稱為消費者。 該模式還需要有一個緩衝區處於生產者和消費者之間,作為一箇中介。生產者把資料放入緩衝區,而消費者從緩衝區取出資料 緩衝區作用 1. 解耦,生產者和消費者只依賴緩衝區,而不互

解決 Eclipse 提示記憶體不足

記憶體不足的提示了。 提示大概如下:MyEclipse has detected that less than 5% of the 64MB of PermGen (Non-heap memory) 

Memcheck一個記憶體錯誤檢測器

4.2.8。記憶體洩漏檢測 Memcheck記錄所有響應於malloc/ etc的呼叫發出的堆塊 new。所以當程式退出時,它知道哪些塊沒有被釋放。 如果--leak-check適當設定,對於每個剩餘的塊,Memcheck確定塊是否可以從根集中的指標到達。根組包括(a)所有執行緒的通用暫存器,以及(b)

iOS 面試題(1)一個 Objective-C 物件的記憶體結構是怎樣的?

接下來分享的將會是唐老師一系列的iOS面試題,因為之前好幾期唐老師都刪掉了,說是要出書,所以轉載過來,需要的朋友們可以看下,也方便我自己鞏固、學習。 轉載自:http://mp.weixin.qq.com/s?__biz=MjM5NTIyNTUyMQ==&mid=

關於socket應用一個不斷監聽一個程序的伺服器以及傳送資訊的客戶端 TCP的三次握手和四次揮手

       大端節序:高位節放在低地址        小端節序:高位節放在高地址        PC多采用小端節序,而手機多采用大端節序,在網路傳播過程中一律轉換成大端節序,所以大端節序也稱為網路位元組序。       主要標頭檔案#include <sys/soc

高端面試必備一個Java物件佔用多大記憶體

這個問題一般會出現在稍微高階一點的 Java 面試環節。要求面試者不僅對 Java 基礎知識熟悉,更重要的是要了解記憶體模型。 #### Java 物件模型 HotSpot JVM 使用名為 oops (Ordinary Object Pointers) 的資料結構來表示物件。這些 oops 等同於本地

pyDash一個基於 web 的 Linux 性能監測工具

亮顯 依賴關系 stat 運行 tld 下一個 google avi 查看 pyDash 是一個輕量且基於 web 的 Linux 性能監測工具,它是用 Python 和 Django 加上 Chart.js 來寫的。經測試,在下面這些主流 Linux 發行版上可運行:Ce

Web前端面試指導(十七)一個滿屏 品 字布局 如何設計?

web前端題目點評這道題目有可能是筆試題,有可能面談的時候進行敘述,如果是筆試題要求對css樣式代碼非常熟練,如果是面談敘述,就需要你的表達能力非常強,要抓住要點,把需要用到的技能點講清楚就可以了。需要用到技術1. 元素水平居中對齊1) 使用margin對齊(推薦)2) 使

初遇C#一個簡單的小程序(圓形周長,面積計算器)

編碼 雙精度 崩潰 輸入 面向對象 窗口 語句 readline 面向對象的語言 作為一個面向對象的語言,與用戶的交互很關鍵! 在此,我們可以先分析一下我們這個小程序要與用戶交互的內容:1.命名很重要,讓用戶看見這個程序就知道這個程序的作用。 2.當用戶打開這個程序時,提示

Arduino Tian開發板一個功能強大的天氣預報中心

man 2pc 目前 range 分享 amazon 入門 雲平臺 充電 每天都在出現新的連接設備。 Arduino攜手雲平臺一起加入這場戰鬥,於是出現了一個新的挑戰者 - Arduino Tian! 使用python和經典Arduino框架,本教程將引導您將您的A

free一個在 Linux 中檢查內存使用情況的標準命令

合作夥伴 sre 最新 shm cached spa 交換 比較 廣泛 摘要: 我們都知道, IT 基礎設施方面的大多數服務器(包括世界頂級的超級計算機)都運行在 Linux 平臺上,因為和其他操作系統相比, Linux 更加靈活。有的操作系統對於一些微乎其微的改動和補丁更