MTK.U8类型导致手机死机(data_abort)

huangtaoyuan 2011-08-08 07:51:18
大致代码如下:
static U8 Path1[256] = {0};
static U8 Path2[256] = {0};
static U8 Path3[256] = {0};
static U8 Path4[256] = {0};

static U8 thisvar = 0;


U8 IsOk(void)
{
return thisvar;
}

其他有2处地方分别对thisvar这个变量赋值0和1

int invoke(void)
{
//对Path1数组的操作,copy。
if(IsOk())//这里死机
{
//do some thing
}
}

程序运行到if(IsOk())就挂了,后来把thisvar修改成int就不会挂了。别的c文件也有 if(IsOk())这样的调用。
求解释啊!是否和arm一些优化规则有关系啊,什么原因导致死机的啊,期待高手解释。。。谢谢!

注:用U8类型在mtk6252.10A版本运行正常,在mtk6235.10A上运行死机,改成int后正常。
死机的log如下:

901 901 : 901 [Trace] 12:50:16:000 2011/08/08 MOD_NIL, TRACE_ERROR "[1] fatal error (4): Data_abort - MMI"

901 901 : 901 [Trace] 12:50:16:000 2011/08/08 MOD_NIL, TRACE_ERROR "Exception type: data abort"

901 901 : 901 [Trace] 12:50:16:000 2011/08/08 MOD_NIL, TRACE_ERROR "software version: W10.32.MP.V9"

901 901 : 901 [Trace] 12:50:16:015 2011/08/08 MOD_NIL, TRACE_ERROR "boot mode: normal mode"

901 901 : 901 [Trace] 12:50:16:015 2011/08/08 MOD_NIL, TRACE_ERROR "rtc sec = 50, rtc min = 20, rtc hour = 0"

901 901 : 901 [Trace] 12:50:16:015 2011/08/08 MOD_NIL, TRACE_ERROR "rtc day = 1, rtc mon = 1, rtc wday = 1, rtc year = 4"

901 901 : 901 [Trace] 12:50:16:015 2011/08/08 MOD_NIL, TRACE_ERROR "execution unit: MMIEC_T"

901 901 : 901 [Trace] 12:50:16:031 2011/08/08 MOD_NIL, TRACE_ERROR "status: 0x00000000"

901 901 : 901 [Trace] 12:50:16:031 2011/08/08 MOD_NIL, TRACE_ERROR "stack pointer: 0xF173F6FC"

901 901 : 901 [Trace] 12:50:16:031 2011/08/08 MOD_NIL, TRACE_ERROR "stack dump:"

901 901 : 901 [Trace] 12:50:16:031 2011/08/08 MOD_NIL, TRACE_ERROR " 0x00000045"

901 901 : 901 [Trace] 12:50:16:031 2011/08/08 MOD_NIL, TRACE_ERROR " 0x006D7EF9"

901 901 : 901 [Trace] 12:50:16:031 2011/08/08 MOD_NIL, TRACE_ERROR " 0x006C0FAD"

901 901 : 901 [Trace] 12:50:16:031 2011/08/08 MOD_NIL, TRACE_ERROR " 0x000D0A31"

901 901 : 901 [Trace] 12:50:16:031 2011/08/08 MOD_NIL, TRACE_ERROR " 0x000D079B"

901 901 : 901 [Trace] 12:50:16:046 2011/08/08 MOD_NIL, TRACE_ERROR " 0x006F55B5"

901 901 : 901 [Trace] 12:50:16:046 2011/08/08 MOD_NIL, TRACE_ERROR " 0x006D7F0D"

901 901 : 901 [Trace] 12:50:16:046 2011/08/08 MOD_NIL, TRACE_ERROR " 0x006C1047"

901 901 : 901 [Trace] 12:50:16:046 2011/08/08 MOD_NIL, TRACE_ERROR " 0x00000007"

901 901 : 901 [Trace] 12:50:16:062 2011/08/08 MOD_NIL, TRACE_ERROR " 0x007FEC49"

901 901 : 901 [Trace] 12:50:16:062 2011/08/08 MOD_NIL, TRACE_ERROR "number of messages in the external queue: 0"

901 901 : 901 [Trace] 12:50:16:062 2011/08/08 MOD_NIL, TRACE_ERROR "messages in the external queue:"

901 901 : 901 [Trace] 12:50:16:062 2011/08/08 MOD_NIL, TRACE_ERROR " MSG_ID_INVALID_TYPE"

901 901 : 901 [Trace] 12:50:16:062 2011/08/08 MOD_NIL, TRACE_ERROR " MSG_ID_INVALID_TYPE"

901 901 : 901 [Trace] 12:50:16:062 2011/08/08 MOD_NIL, TRACE_ERROR " MSG_ID_INVALID_TYPE"

901 901 : 901 [Trace] 12:50:16:062 2011/08/08 MOD_NIL, TRACE_ERROR " MSG_ID_INVALID_TYPE"

901 901 : 901 [Trace] 12:50:16:062 2011/08/08 MOD_NIL, TRACE_ERROR " MSG_ID_INVALID_TYPE"

901 901 : 901 [Trace] 12:50:16:062 2011/08/08 MOD_NIL, TRACE_ERROR " MSG_ID_INVALID_TYPE"

901 901 : 901 [Trace] 12:50:16:078 2011/08/08 MOD_NIL, TRACE_ERROR " MSG_ID_INVALID_TYPE"

901 901 : 901 [Trace] 12:50:16:078 2011/08/08 MOD_NIL, TRACE_ERROR " MSG_ID_INVALID_TYPE"

901 901 : 901 [Trace] 12:50:16:078 2011/08/08 MOD_NIL, TRACE_ERROR " MSG_ID_INVALID_TYPE"

901 901 : 901 [Trace] 12:50:16:078 2011/08/08 MOD_NIL, TRACE_ERROR " MSG_ID_INVALID_TYPE"

901 901 : 901 [Trace] 12:50:16:078 2011/08/08 MOD_NIL, TRACE_ERROR " MSG_ID_INVALID_TYPE"

901 901 : 901 [Trace] 12:50:16:078 2011/08/08 MOD_NIL, TRACE_ERROR " MSG_ID_INVALID_TYPE"

901 901 : 901 [Trace] 12:50:16:093 2011/08/08 MOD_NIL, TRACE_ERROR " MSG_ID_INVALID_TYPE"

901 901 : 901 [Trace] 12:50:16:093 2011/08/08 MOD_NIL, TRACE_ERROR " MSG_ID_INVALID_TYPE"

901 901 : 901 [Trace] 12:50:16:093 2011/08/08 MOD_NIL, TRACE_ERROR " MSG_ID_INVALID_TYPE"

901 901 : 901 [Trace] 12:50:16:093 2011/08/08 MOD_NIL, TRACE_ERROR " MSG_ID_INVALID_TYPE"

901 901 : 901 [Trace] 12:50:16:093 2011/08/08 MOD_NIL, TRACE_ERROR " MSG_ID_INVALID_TYPE"

901 901 : 901 [Trace] 12:50:16:093 2011/08/08 MOD_NIL, TRACE_ERROR " MSG_ID_INVALID_TYPE"

901 901 : 901 [Trace] 12:50:16:093 2011/08/08 MOD_NIL, TRACE_ERROR " MSG_ID_INVALID_TYPE"

901 901 : 901 [Trace] 12:50:16:093 2011/08/08 MOD_NIL, TRACE_ERROR " MSG_ID_INVALID_TYPE"

901 901 : 901 [Trace] 12:50:16:109 2011/08/08 MOD_NIL, TRACE_ERROR "interrupt mask: 0x00000000 0x00000000"

901 901 : 901 [Trace] 12:50:16:109 2011/08/08 MOD_NIL, TRACE_ERROR "processing_lisr: 0x00000000"

901 901 : 901 [Trace] 12:50:16:109 2011/08/08 MOD_NIL, TRACE_ERROR "lr: 0x000D079B"

901 901 : 901 [Trace] 12:50:16:109 2011/08/08 MOD_NIL, TRACE_ERROR "diagnosis: healthy"

901 901 : 901 [Trace] 12:50:16:125 2011/08/08 MOD_NIL, TRACE_ERROR "owner: "

901 901 : 901 [Trace] 12:50:16:125 2011/08/08 MOD_NIL, TRACE_ERROR "timing check: 0 0 0 0 0 0"

901 901 : 901 [Trace] 12:50:16:125 2011/08/08 MOD_NIL, TRACE_ERROR "fatal error code 1: 0x00000004"

901 901 : 901 [Trace] 12:50:16:125 2011/08/08 MOD_NIL, TRACE_ERROR "fatal error code 2: 0x000D079B"

901 901 : 901 [Trace] 12:50:16:125 2011/08/08 MOD_NIL, TRACE_ERROR "CPSR = 0xA0000033"

901 901 : 901 [Trace] 12:50:16:125 2011/08/08 MOD_NIL, TRACE_ERROR "R0 = 0xF18E2789"

901 901 : 901 [Trace] 12:50:16:125 2011/08/08 MOD_NIL, TRACE_ERROR "R1 = 0x00000045"

901 901 : 901 [Trace] 12:50:16:125 2011/08/08 MOD_NIL, TRACE_ERROR "R2 = 0x0000000A"

901 901 : 901 [Trace] 12:50:16:125 2011/08/08 MOD_NIL, TRACE_ERROR "R3 = 0x006D7EF9"

901 901 : 901 [Trace] 12:50:16:140 2011/08/08 MOD_NIL, TRACE_ERROR "R4 = 0xF17177EC"

901 901 : 901 [Trace] 12:50:16:140 2011/08/08 MOD_NIL, TRACE_ERROR "R5 = 0xF17176EC"

901 901 : 901 [Trace] 12:50:16:140 2011/08/08 MOD_NIL, TRACE_ERROR "R6 = 0x00000008"

901 901 : 901 [Trace] 12:50:16:140 2011/08/08 MOD_NIL, TRACE_ERROR "R7 = 0x006C0FAD"

901 901 : 901 [Trace] 12:50:16:156 2011/08/08 MOD_NIL, TRACE_ERROR "R8 = 0x00000000"

901 901 : 901 [Trace] 12:50:16:156 2011/08/08 MOD_NIL, TRACE_ERROR "R9 = 0x00000000"

901 901 : 901 [Trace] 12:50:16:156 2011/08/08 MOD_NIL, TRACE_ERROR "R10 = 0xF173E1E0"

901 901 : 901 [Trace] 12:50:16:156 2011/08/08 MOD_NIL, TRACE_ERROR "R11 = 0xF173F9E0"

901 901 : 901 [Trace] 12:50:16:171 2011/08/08 MOD_NIL, TRACE_ERROR "R12 = 0x000D0A31"

901 901 : 901 [Trace] 12:50:16:171 2011/08/08 MOD_NIL, TRACE_ERROR "R13 = 0xF173F748"

901 901 : 901 [Trace] 12:50:16:171 2011/08/08 MOD_NIL, TRACE_ERROR "R14 = 0x000D079B"

901 901 : 901 [Trace] 12:50:16:171 2011/08/08 MOD_NIL, TRACE_ERROR "R15 = 0x000A22D4"

901 901 : 901 [Trace] 12:50:16:171 2011/08/08 MOD_NIL, TRACE_ERROR ""

901 901 : 901 [Trace] 12:50:16:171 2011/08/08 MOD_NIL, TRACE_ERROR ""

901 901 : 901 [Trace] 12:50:16:171 2011/08/08 MOD_NIL, TRACE_ERROR ""

901 901 : 901 [Trace] 12:50:16:171 2011/08/08 MOD_NIL, TRACE_ERROR ""

901 901 : 901 [Trace] 12:50:16:171 2011/08/08 MOD_NIL, TRACE_ERROR ""

901 901 : 901 [Trace] 12:50:16:171 2011/08/08 MOD_NIL, TRACE_ERROR ""

901 901 : 901 [Trace] 12:50:16:187 2011/08/08 MOD_NIL, TRACE_ERROR ""

901 901 : 901 [Trace] 12:50:16:187 2011/08/08 MOD_NIL, TRACE_ERROR ""

901 901 : 901 [Trace] 12:50:16:187 2011/08/08 MOD_NIL, TRACE_ERROR ""

901 901 : 901 [Trace] 12:50:16:187 2011/08/08 MOD_NIL, TRACE_ERROR ""

901 901 : 901 [Trace] 12:50:16:187 2011/08/08 MOD_NIL, TRACE_ERROR ""

901 901 : 901 [Trace] 12:50:16:203 2011/08/08 MOD_NIL, TRACE_ERROR ""

901 901 : 901 [Trace] 12:50:16:203 2011/08/08 MOD_NIL, TRACE_ERROR ""

901 901 : 901 [Trace] 12:50:16:203 2011/08/08 MOD_NIL, TRACE_ERROR ""

901 901 : 901 [Trace] 12:50:16:203 2011/08/08 MOD_NIL, TRACE_ERROR ""

901 901 : 901 [Trace] 12:50:16:203 2011/08/08 MOD_NIL, TRACE_ERROR ""

901 901 : 901 [Trace] 12:50:16:203 2011/08/08 MOD_NIL, TRACE_ERROR ""

901 901 : 901 [Trace] 12:50:16:203 2011/08/08 MOD_NIL, TRACE_ERROR ""
如需其他信息请回复告知。
...全文
293 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yrnaaa 2011-10-18
  • 打赏
  • 举报
回复
去掉 【对Path1数组的操作,copy。】这段操作看看是否会死?
yrnaaa 2011-10-18
  • 打赏
  • 举报
回复
代码全部贴出来才能知道
yosyg 2011-10-10
  • 打赏
  • 举报
回复
代码全部贴出来才能知道
weige2501 2011-10-09
  • 打赏
  • 举报
回复
代码全部贴出来才能知道
妖怪 2011-10-06
  • 打赏
  • 举报
回复
看看ARM编译选项里面是不是对int和U8做了字节对齐处理
如果没有的话 int占几个bit U8占几个
或者可以试试写成下面这样
static U8 Path1[256] = {0};
static U8 Path2[256] = {0};
static U8 Path3[256] = {0};
static U8 Path4[256] = {0};
static U8 temp[4];
static U8 thisvar = 0;
static U8 temp2[3];
zhongyuanceshi 2011-09-17
  • 打赏
  • 举报
回复
//对Path1数组的操作,copy。

这里没有死机,也是U8操作。
关注中...
zhangjiejemyok 2011-08-27
  • 打赏
  • 举报
回复
if(IsOk()) 应该没有什么问题,估计数组操作什么有问题啦,估计得好好查看下代码是否有越界等操作。
static U8 Path1[256] = {0};
static U8 Path2[256] = {0};
static U8 Path3[256] = {0};
static U8 Path4[256] = {0};
这个方法定义数组真够浪费的
weige250 2011-08-23
  • 打赏
  • 举报
回复
估计对数组操作那块有问题吧
念茜 2011-08-09
  • 打赏
  • 举报
回复
这个有意思啊 !! 呼吁版主加个精吧~~~
看样子是和arm流水线脱不了关系了
if(U8) VS if(int)

790

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 其他移动相关
社区管理员
  • 移动开发其他问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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