gpt4 book ai didi

c++ - 程序退出,状态为 255 C++ Main with Ada

转载 作者:太空狗 更新时间:2023-10-29 21:46:18 27 4
gpt4 key购买 nike

我有一组单线程 C++ 主线程,它们的大部分代码是用 Ada 开发的。这是在 Atego (Rational) Apex Duo 中构建的,目标是 32 位 RHEL 6.3 Linux。 exec 是我开发的一个类系统,它包括套接字、状态机和作为 exec 核心的计时器类。类系统用于在 6 个通过套接字进行通信的不同系统上构建和执行 14 个独立的执行程序。它们都使用相同的类系统,并在启动时基于 INI 文件进行 self 配置。

通过 gettimeofday 使用 linux 系统时钟,execs 帧频率为 50 或 60 Hz

struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};

和一个简单的非忙等待算法来生成所需的调度程序。

我目前面临的问题是这些执行官(看似)随机失败。失败似乎是他们只是停止了框架。我已将所有运行时 C++ 过程封装在“try{} catch(...){}”中,但没有捕获任何内容。同样,Ada 例程受到不会被命中的异常处理程序的保护。

exec 通常会在失败前愉快地运行 30 分钟到一个多小时。没有明显的内存蠕变迹象(使用系统监视器)。我已将 Atego Rational Graphical Debugger 附加到已经运行的执行程序,但无济于事。当一个最终失败时,调用堆栈中没有任何内容,调试器日志中的唯一指示是应用程序“已退出,状态为 255”。

恐怕系统某处的 (Linux) 系统例程或驱动程序正在调用 Exit。似乎有什么东西正在调用退出!

有人知道我该如何进一步解决这个问题吗?

最佳答案

这可能不是一个答案,但它的范围太广,无法发表评论......

因此,故障发生在 6 台机器中的每台机器上的单个可执行文件中;负责通过网络共享数据的可执行文件;正确的?而且“本地”可执行文件似乎是可靠的……或者 6 个有问题的可执行文件是否没有如此干净地映射到 6 个系统?

故障是否与网络加载有关,例如延迟超过您的(电视或交流电源)帧速率?通过阻塞网络使其更快失败可以简化测试...

当 Linux 网络时钟向后运行时,我遇到了系统故障......故障发生在 C++ 组件中,因此当 dt 变为负值时不会出现简单的约束错误,而是荒谬的“4e9 微秒超时”远离失败...

听起来好像 Ada 的任务分配工具和分布式系统附件非常适合此应用程序,但这种级别的设计更改在现阶段可能不合适。

关于c++ - 程序退出,状态为 255 C++ Main with Ada,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15582776/

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