You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

INET3路由协议代码迁移至INET4触发Exit code 139错误如何解决

问题根因

Exit code 139属于Linux环境下的段错误,此处是mobility指针为空导致的非法内存访问,核心原因是INET 3到INET 4版本中获取移动性模块的接口逻辑发生了变更,原有INET 3的模块获取方式拿到的是空指针。

适配修改步骤

  • 第一步:确认当前节点模块的移动性子模块路径配置正确,veins-5.1-i2配套的veins-inet Mobility模块默认挂载路径为节点的mobility子模块,无需额外修改路径。
  • 第二步:替换原有INET 3风格的移动性模块获取代码,INET 4要求使用getModuleFromPar接口从参数绑定模块,示例代码如下:
// 原有INET 3写法(会拿到空指针导致崩溃)
// mobility = check_and_cast<IMobility*>(getParentModule()->getSubmodule("mobility"));

// 替换为INET 4兼容写法
#include "inet/mobility/contract/IMobility.h"
mobility = inet::getModuleFromPar<inet::IMobility>(par("mobilityModule"), this);
  • 第三步:在你的路由协议NED文件中新增mobilityModule参数声明,示例如下:
module YourRoutingProtocol extends <你原有继承的协议父类> {
    parameters:
        string mobilityModule = default("^.mobility"); // 指向节点的mobility子模块
        // 其他原有参数保持不变
}
  • 第四步:清理项目后重新编译运行,验证Coord senderPos=mobility->getCurrentPosition();调用是否正常。

补充排查点

如果修改后仍报错,可依次确认:

  • veins-inet依赖包已经正确引入到项目的opp_makemake配置中,没有头文件找不到或链接错误
  • 节点的NED配置中确实挂载了veins.inet.mobility.TraCIMobility作为mobility子模块,没有拼写错误

内容的提问来源于stack exchange,提问作者Dalia Adly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 12:18:03