关于vxwoks中zbuf的问题

sunmzh_zte 2009-04-14 08:40:46
前几天,在跑程序的时候遇到一个zbuf的异常,vxworks打印的调用链如下:
data storage
Exception current instruction address: 0x0050cb60
Machine Status Register: 0x00029230
Data Exception Address Register: 0x0069bf38
Condition Register: 0x44000082
Exception Syndrome Register: 0x00000000
Task: 0xe597970 "CES_BAPCCE"

**************************************************************
* *
* 3G-Plat PPC Exception Process Result *
* *
**************************************************************
Data Access Exception
Exception current instruction address: 0x0050cb60
Data Access Register: 0x0069bf38
Machine Status Register(tEsf.regSet.msr): 0x00029230
Condition Register(tEsf.regSet.cr): 0x44000082
VecNumber = 0x300

-------------------Infomation of Board start-----------------
_NET_ELEMENT=0x00080000 _PHY_BOARD=0x000000a7
_LOGIC_BOARD=0x000000a9
-------------------Infomation of Board End-------------------

-----------------Infomation of Task Start---------------------
Task Name : CES_BAPCCE
Task id : 0xe597970
Task options : 0x4
Task status : 0x0
Task Current priority : 0x32
Task Normal priority : 0x32
-----------------Infomation of Task End-----------------------

----------------Current Exception Context Start---------------
pc(tExcRegSet.pc) = 0x50cb60 _mbufLength
StackFrame(tExcRegSet.gpr[1]) = 0xe597658
lr(tExcRegSet.lr) = 0x5009ac zbufLength
----------------Current Exception Context End-----------------

Handle Common Function

Function calling list is as the following...
ret is in the lr register
0x0050cb60 _mbufLength
0x005009ac zbufLength
0x00280b84 _ZN6CCECTR18CSLPacketAndHeader5BuildEv
0x00276f5c _ZN6CCECTR17CSectorController23PrepareAccessParametersEv
0x002757d4 _ZN6CCECTR17CSectorController29PrepareAndTransmitSyncCapsuleEv
0x002740cc _ZNK6CCECTR25ProcessCCBuildCallBac

从调用链的结果分析是跑到_mbufLength里跑飞了,一开始我们认为有可能是传进去的mbufId是NULL导致的,但后来研究了mbufLib中的源代码,发现所有的函数都对入参做了保护,所以不太可能是这个导致。这个问题以前也遇到过,但出现频率极低,属于很烦躁的随机内存异常,到现在我也没再玩出来过~然后看了一下_mbufLength的实现,实现相当简单,就是求一个mbuf链的总长度,实现没发现有什么地方可能导致异常,所以很困惑~~所以想请问一下vxworks的开发高手们,像这种问题一般是什么情况引起的?特别是_mbufLength跑飞可能是什么情况下出现?

附上_mbufLength的实现:

int _mbufLength
(
MBUF_ID mbufId /* mbufId to find length of */
)
{
MBUF_SEG mbuf;
int length = 0; /* total length */

if (mbufId == NULL ||
mbufId->type != MBUF_VALID) /* invalid ID ? */
{
errno = S_mbufLib_ID_INVALID;
return (ERROR);
}

for (mbuf = mbufId->mbufHead; mbuf != NULL; mbuf = mbuf->m_next)
length += mbuf->m_len;

return (length); /* return total length */
}

...全文
283 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
特等奖标准成品论文(Word无水印纯净版) 硬核结构:全文包含完整的摘要、问题重述与分析、模型假设、符号说明、模型建立与求解、灵敏度分析及结论。 即插即用:排版严格遵循官方规范,逻辑严密。拿到手即可作为绝佳的高分参考模板,稍作替换与个性化润色即可极速完稿,彻底解决写论文难的痛点。 双源硬核解题代码(Python与MATLAB双版本) 拒绝假代码:提供底层逻辑清晰、模块化设计的全套可运行源码。 全流程覆盖:涵盖从前期数据清洗预处理,到期核心数学模型训练,再到后期启发式算法寻优。 傻瓜式运行:代码自带详尽的逐行文注释,并支持一键生成高质量结果可视化图表,编程小白也能轻松复现与二次开发。 全量数据与结果展示表 所有间处理数据、模型输出参数以及最终结论,均已精细整理成高质量表格。直观呈现性能评估指标与多模型对比分析,可直接作为论文正文或附件使用,极大提升学术说服力。 独家硬核思路解析 深入浅出剖析出题人意图,详细拆解每一小问的数学本质与底层逻辑,让你不仅知其然更知其所以然。 【四大核心产品优势】 高效实用:所有代码与论文均经过严格测试,确保结果精准无误、完全可复现,省去熬夜试错的时间。 全栈覆盖:从思路分析到跑出结果,再到写出高质量论文,提供一站式全流程资料矩阵。 排版辅助:资料内提供专业的论文排版一键转换工具与官方标准模板,告别格式调整的繁琐。 持续迭代:网盘直发,开赛后资料库将持续滚动更新,所有用户均可免费同步获取最新包。 【适用人群】 想要打破建模瓶颈的参赛队长与主攻手;急需高质量底层代码的编程小白;目标直指特等奖需要高分模板对标的精英团队。

2,187

社区成员

发帖
与我相关
我的任务
社区描述
xworks是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。
社区管理员
  • VxWorks开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧