【发布时间】:2011-04-14 18:40:21
【问题描述】:
我在 linux 服务器上运行一个 C/C++ 程序来提供视频。该程序(比如名为插件)的核心功能是转换视频,我们为每个视频请求分叉一个单独的插件进程。但是我遇到了一个奇怪的问题,有时服务器平均负载会出乎意料地高。我在这个阶段从 top 命令看到的是,有些进程运行了很长时间并占用了一些巨大的 CPU。
当我使用 gdb 和回溯堆栈调试这个正在运行的程序时,我发现了损坏的堆栈:“此帧内部的上一帧(损坏的堆栈?)”。我在网上搜索过,发现如果程序出现分段错误,就会发生这种情况。
但是我知道如果程序出现分段错误,程序应该在那时崩溃并退出。但令人惊讶的是,程序在分段错误后仍然运行。
这可能是什么原因?我知道程序中一定有一些大问题,但我就是不明白从哪里开始解决问题...如果你们中的任何人都可以给我看一些灯,那就太好了...
提前致谢
【问题讨论】:
-
可能损坏卡在您的情况下意味着您使用了不应该使用的内存位置。当类似的事情发生时,结果是未定义的行为。该程序注定不会崩溃。任何事情都可能发生。