最近在研究VxWorks的RTP Core Dump功能,在VIP中开启了RTP Core Dump功能如下所示

在RTP code中触发异常,Core Dump可以正常生成与调试

但是灵异的事情发生了,在shell中调用rtp查看rtp列表时,发现RTP名称变成乱码(正常应该是启动路径名称),尝试用RTP delete RTPID,提示错误信息RTP deletion has failed. Errno = 0x3d0003 (S_objLib_OBJ_DELETED,应该是RTP对象已经被删除),在Workbench中可以Terminate RTP,但是Shell调用rtp查看列表时,依旧存在乱码名称的RTP,在关闭RTP CoreDump功能后,异常时RTP会正常自动删除干净

那么下面再做一个测试,在RTP 异常后CoreDump生成过程中,立即调用rtp查看列表,此时RTP Name还是正常的名称,待生成完后,再查看,就变成异常Name(应该是Name指针内容都释放掉了)

另外可以看到RTP的状态变成STATE_NORMAL+D,手册官方解释为(The RTP is in RTP_STATE_NORMAL state and its status is in RTP_STATUS_ELECTED_DELETER. This indicates that the RTP has initiated its delete phase.),看上去应该是在RTP delete的初始化后出现了一些情况导致无法完全删除RTP,目前看上去只有重新启动VxWorks才可以,但是出于某些原因,如果未来要加上Core Dump功能去排查问题,又不可以随便重启系统(重启系统后,板卡会Reset,控制会出问题),但是这个功能确实是个实用的功能,不知道各位有没有这方面的尝试或者经验,可以释放掉Core Dump结束的RTP