1

我有一个 C++ 进程不时崩溃(主要是在完成性能测试时)。当我检查核心日志时,我可以在崩溃之前看到很多 Informix 错误。

Out of Memory在进程核心转储之前,我看到一系列与异常相关的错误代码 406 的 Informix 错误。我还看到错误代码 244(无法进行物理顺序读取以获取下一行)。

有人可以分享您对这些场景如何导致进程核心转储的想法吗?

更多细节

进程:多线程 C++ 进程
环境:Solaris
数据库:带有 ESQL 接口的 Informix

ESQL DB 函数(插入/更新/选择)正在抛出,被进程捕获。catch 块中的消息是进程日志中出现的最后一条消息。之后就没有关于这个过程的线索了。

进程核心转储时出现的正常消息(Caught signal. dumped core)也丢失了。

4

1 回答 1

1

当你说during performance testing那里时,你有一个巨大的线索!!!!!!!

通常,对于性能测试用例,编译器优化会加速,导致一些写得不太好的代码短路,从而导致崩溃。

给你一个典型的例子:当变量应该被跨线程读取时,它们没有被声明为 volatile。

于 2012-06-15T08:34:58.783 回答