You need to enable JavaScript to run this app. 使用PLEXE从SUMO .rou文件插入车辆时出现peer shutdown报错的技术咨询
优惠活动
大模型
产品
解决方案
定价
更多

使用PLEXE从SUMO .rou文件插入车辆时出现peer shutdown报错的技术咨询

联合仿真插入车辆时的进程崩溃问题排查

报错因果关系梳理

两个表面报错存在明确的前后触发关系,而非独立的两个故障:

  • tcpip::Socket::recvAndCheck @ recv: peer shutdown 是SUMO侧的被动报错:当和SUMO通过Traci协议搭建桥接的Omnet++进程意外终止后,SUMO尝试接收桥接指令时发现对端连接中断,就会抛出该提示
  • Omnet++退出码139代表进程触发段错误(对应Unix信号SIGSEGV,即内存非法访问),是整个崩溃的核心根因

场景下的常见触发原因

  • 组件版本适配矩阵错配:当前选用的Plexe 3.0a2 官方原生适配的Veins版本为4.7,并非你当前使用的Veins 5.0。Veins 5.0调整了Traci桥接的帧结构、SumoTrafficManager的内部调用接口,将Plexe 3.0a2直接对接Veins 5.0运行时,当第一辆车辆被插入、触发桥接层首次车辆状态同步逻辑时,就会因为内存访问越界触发段错误。
  • 配置项缺失或错误:将流量管理器修改为SumoTrafficManager后,没有同步补全Plexe对应的桥接依赖配置。Plexe官方编队示例默认使用IntegratedTrafficManager,切换到SUMO侧导入.rou文件的模式时,若遗漏对应的桥接开关、端口映射配置,会在第一辆车插入时触发空指针访问,直接引发进程段错误。
  • 自定义.rou文件格式不兼容:自行编写的.rou文件没有匹配Plexe侧SumoTrafficManager的解析规则。比如文件内没有为编队车辆配置vClass=evehicle标识、没有按照要求附带编队ID字段,SumoTrafficManager从SUMO拉取第一辆车的属性时,会因为读不到预期字段触发内存越界。

对应解决步骤

  • 完成版本对齐:优先替换为Plexe 3.0a2官方验证的兼容组合,即SUMO 1.2.0 + Veins 4.7 + Omnet++ 5.5.1,该组合下SumoTrafficManager的接口逻辑完全匹配,可从根源上消除跨版本接口不匹配导致的段错误。如果需要保留Veins 5.0,需要升级Plexe到4.0及以上版本,不要跨大版本拼接各仿真组件。
  • 全量核对.ini配置项:
    • 确认**.wins[*].mobility.managerType字段值和SumoTrafficManager完全一致,没有拼写错误
    • 确认Traci桥接的端口映射没有和系统其他进程冲突,启动参数中正确加载了自定义.rou文件的路径
    • 确认Plexe编队相关的核心配置没有因为切换流量管理器被意外注释
  • 校验自定义.rou文件格式:
    • 普通社会车辆添加vClass=passenger类标识,编队车辆添加vClass=evehicle类标识
    • 编队车辆定义中按照Plexe要求的格式附加自定义参数,比如编队ID、车辆在编队中的位置,不要使用和Plexe解析规则冲突的自定义参数名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.10 20:06:08