gpt4 book ai didi

linux - 为什么我的应用程序是为 64 位编译的,所以会出现段错误?

转载 作者:太空宇宙 更新时间:2023-11-04 11:33:13 25 4
gpt4 key购买 nike

我正在 64 位 Linux 系统 (RHEL5.5) 上运行一个应用程序(在 64 位机器上编译)。此应用程序每隔 40-50 分钟就会崩溃。我很惊讶地看到这一点,因为当我在 32 位机器上运行相同的代码时它运行得非常好。

其中一个可能的原因是我发现有问题的系统中的可用内存只有 50 MB。所以我假设它是因为内存不足而崩溃的。但我也看到系统有大约 5 GB 的缓存内存。我假设此缓存内存应该可用于我的所有内存请求。我的这个假设是否正确,或者我在一段时间后释放此缓存以解决此问题。

当我的应用程序崩溃时,我在系统日志中看到以下消息:内核:MyApplicationName[20655]:0000000030363938 处出现段错误 rip 0000000000b35c7e rsp 00000000f322a3a0 错误 4

谁能指出这里的问题是什么?这个错误 4 在系统中意味着什么。

最佳答案

错误 4 是 EINTR,它在 /usr/include/asm-generic/errno-base.h 中:

#define EINTR            4      /* Interrupted system call */

但是您的问题似乎与内存或此错误 4 根本无关。这更可能是因为您的应用程序代码尚未为 64 位系统准备好而出现的错误。您的主要问题不是 error 4 , 这是 segfault .

段错误是指当应用程序试图使用它不能或无权使用的内存时。在这种情况下,内核通常别无选择,只能停止它。

为了获得有关此错误的更多信息,您可以使用调试符号编译您的应用程序,将 gdb 附加到您的进程,并在 gdb shell 中使用此命令发生段错误时询问完整跟踪 thread apply all bt .

关于linux - 为什么我的应用程序是为 64 位编译的,所以会出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9817703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com