vxworks下 数组越界 造成代码段被踩的经典例子

博客分析了一起在VxWorks操作系统中,由于数组越界导致的任务崩溃案例。在执行特定函数时,系统出现异常,任务挂起,通过分析异常信息和调用栈,发现在claNe::GetBdType函数的代码段被修改,原因是astCmd数组访问越界。修复方案是避免对astCmd[wCmdNum].pbyPara + 3的指针操作。
摘要由CSDN通过智能技术生成

在MML设置告警级别的时候出现了系统多个任务(tFcl,TPDTCFG)挂起,进而引起系统崩溃

:alm-cfg-set-severity:LCAS_PLCR,MJ,0xff,ETH_VCGPORT,29,"board=3,subcard=255,vcgport=8" 

 

其中一个任务的异常信息如下

======================== Exception Info Begin ======================== 

Exception Time       : 2009-08-07  11:53:43  

Exception VosTick    : 50531 

Exception CpuTick    : 0x00000086 71d1c650 

Exception Type       : PROGRAM EXCEPTION 

Exception Vector Num : 0x700 

Exception Task       : TPDTCFG (ID = 119, OsalID = 0x816d718) 

Exception PID        : -1 

Exception CPUID      : -2 

Dopra Version        : DOPRA V100R006C09SPC190 

Application Version  : UnConfig 

Task Stack Base      : 0x816d718

Task Stack End       : 0x8144718 

Task Stack Max Size  : 0x29000 

Task Stack Cur Size  : 0 

Task Stack High      : 0x3768 

Task Stack Marigin   : 0x25898 

 

RTP ID               : 0x55c1500 

Exc Stack Start      : 0x816e9e0 

Exc Stack Base       : 0x816e9d0 

Exc Stack End        : 0x816d9e0 

Exc Stack Max Size   : 0xff0

Exc Stack Cur Size   : 0 

Exc Stack High       : 0x8c8 

Exc Stack Marigin    : 0x728 

 

Register contents when exception occur(only the values not equal to 0).

Reg:       r0, Val = 0x0fc10cd8; Reg:       r1, Val = 0x0816d4a0;

Reg:       r3, Val = 0x0fc10cd8; Reg:       r4, Val = 0x00000001;

Reg:       r6, Val = 0x0816d560; Reg:       r7, Val = 0xffffffff;

Reg:       r8, Val = 0x00000010; Reg:       r9, Val = 0x0fab4e98;

R

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值