系統環境:嵌入式系統,SMP四核處理器,RTP主要用于設備控制,內含TCP通訊,通訊資料量大約1MB/s,多個Socket連接通訊
問題現象:程式24小時運行,驗證穩定性,到第5天時,VxWorks界面RTP程式最后一次列印資訊是TCP select send超時,任務卡住,Host無法連接Target,Ctrl X無效,系統宕機,也沒有生成Core Dump。期間網路硬體應該是沒有問題的,不知道各位大大有沒有遇到過類似問題,Rtp程式的邏輯代碼看過了,應該是沒有問題的,看上去是網路通訊方面的問題面大,這種系統卡住的情況一般是什么情況下觸發呢?
程式呼叫的API主要是socket相關,taskSpawn,taskWait,semTake,semGive等,串口讀寫
uj5u.com熱心網友回復:
可能存在記憶體慢慢被占而沒有釋放,最終無記憶體可用而崩潰uj5u.com熱心網友回復:
記憶體方面沒有泄露的問題,memShow查看一直很穩定,目前排查到一處可疑位置,在呼叫VxWorks的socket函式庫中的send API時,代碼有些問題,前面沒有呼叫select檢查可寫,經過壓力測驗(不斷的Send)可以很容易重現上述現象(系統),停止Send后系統網路不能恢復,整個系統網路癱瘓無法ping通,CTRL+X宕機,win32下這份代碼是不會導致系統問題的,現在修改一下再持續觀察下設備狀態還有沒有例外uj5u.com熱心網友回復:
系統檢查各節點,資料通信除了本板卡,還有其他節點嗎?本版卡資料通信只有一塊CPU嗎?涉及FPGA嗎?
軟體層面檢查
你是在多任務環境下拷機嗎?高優先級任務占用cpu的情況有沒有統計?
檢查fifo,資料流有沒有生產者大于消費者的情況。
uj5u.com熱心網友回復:
資料流消費應該是OK的,網路資料監測最多就是100KB/s,但是客戶端和服務端網路通訊有可能斷開,我不知道VxWorks是不是和Unix處理差不多,呼叫send時如果遇到網路斷開,會產生SIGPIPE,導致退出行程或任務,或者因為這個信號例外,這個可能還要測驗一下。uj5u.com熱心網友回復:
目前來看自從send前加了Select后,沒有出現過例外或任務退出的情況轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/97144.html
標籤:VxWorks開發
上一篇:為什么ds18b20接上stm32單片機之后 就一直在oled顯示零度。
下一篇:三菱plc軸監視資料有誤
