我有一個C++進程,它現在和之後崩潰(主要是在性能測試完成時)。 當我檢查覈心日誌時,在崩潰前我可以看到很多Informix錯誤。Informix錯誤後的進程崩潰
在進程核心轉儲之前,我看到一系列帶有錯誤代碼406的Informix錯誤,這與Out of Memory
異常有關。 我也看到錯誤代碼244(不能做物理順序讀取獲取下一行)。
有人可以分享你的想法如何這些情況下可能導致進程核心傾銷?
更多詳細信息
過程:多線程的C++過程
環境:的Solaris
數據庫:Informix的與ESQL接口
ESQL DB功能(插入/更新/選擇)是投擲其通過抓該過程。 catch塊中的消息是出現在進程日誌中的最後一條消息。之後,對這個過程沒有任何線索。
當進程coredumps出現時,正常消息(Caught signal. dumped core
)也丟失。
是您的C++程序是核心轉儲還是Informix服務器?你使用線程C++程序嗎?你使用線程庫嗎?你正在使用哪個接口(ODBC,ESQL/C,OLEDB,...)?程序運行在哪個平臺上?數據庫服務器?你正在使用哪些版本?你的應用程序如何處理錯誤報告?在線日誌文件必須說明什麼?等等有很多問題可能是麻煩。不過,服務器應該不會崩潰。它可以做各種各樣的事情,但崩潰不是其中之一。 –
@JonathanLeffler - 這是一個多線程的C++過程。它使用ESQL界面。進程正在Solaris上運行。這個過程沒有任何線索而崩潰。我在進程日誌中看到的最後一個日誌是一系列Informix錯誤。甚至說所記錄的過程,核心傾倒,缺失。 pstack也沒有提供正確的信息。 – cppcoder
您是否正在使用線程安全(r)ESQL/C庫進行鏈接?這是Solaris;是8,9,10或11?哪個版本的ESQL/C?你是否正確地共享線程之間的連接?你知道SET CONNECTION'conn_name'DORMANT嗎?在建立線程之前或之後建立連接嗎?每個與數據庫通信的線程是否都有自己的連接? (我的印象是,你的意見是你的C++程序崩潰了,而不是Informix數據服務器;這是否正確?) –