我有一个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数据服务器;这是否正确?) –