找回密码
 注册
搜索
查看: 1468|回复: 10

MTK内存使用出错,请教大家一下

[复制链接]
发表于 2008-10-24 15:12:38 | 显示全部楼层 |阅读模式
请教下各位,用一个全局数组为应用申请内存空间(200k),此应用可以正常运行,但进入多媒体部分会assert重启,比如进入camera:会在cam_preview_req_hdlr( )中运行到med_alloc_ext_mem()的时候出错,Catcher上看的Exception type: assert    execution unit: CAMERAM   filename: kal_adm.c    line: 451
,在执行alloc之前用kal_adm_get_total_left_size()打印出的大小还是够的。
未加此应用前多媒体模块运行正常,去掉之后也正常,我看了一下MED也是定义了一个数组用kal_adm_...管理,自己定义的那个数组怎么影响到MED的呢?求教。
发表于 2008-10-24 18:29:46 | 显示全部楼层
如果你的应用不和照象共用med_alloc_ext_mem动态申请。
看看451行是什么语句。
点评回复

使用道具 举报

发表于 2008-10-24 19:25:13 | 显示全部楼层
会不会是内存越界了呢?
点评回复

使用道具 举报

发表于 2009-6-3 10:15:32 | 显示全部楼层
你好,我碰到了和你同样的问题,我加的是第三方应用,ram和media共用,但是释放的时候med_free_ext_mem();就会导致重启,我抓到的trace是这样的:

Frame #: 1080474          Time: 42758          Local Time: 09:46:16:453 2009/06/03          Message: [1] Assert fail: ADM_MB_STATE(adm_mb_head) == ADM_INUSE kal_adm.c 705 0x0 0x0 0x0 - MMI

然后:

0:0 [Trace]        09:46:16:437 2009/06/03        MOD_TST, TRACE_WARNING        "System lost 174 traces, 0 primtives and 0 others"

1080474:42758 [Trace]        09:46:16:453 2009/06/03        MOD_NIL, TRACE_ERROR        "Exception type: assert"

1080474:42758 [Trace]        09:46:16:453 2009/06/03        MOD_NIL, TRACE_ERROR        "software version: 9D_LY_V09_QQ"

1080474:42758 [Trace]        09:46:16:453 2009/06/03        MOD_NIL, TRACE_ERROR        "boot mode: normal mode"

1080474:42758 [Trace]        09:46:16:453 2009/06/03        MOD_NIL, TRACE_ERROR        "rtc sec = 16, rtc min = 3, rtc hour = 0"

1080474:42758 [Trace]        09:46:16:468 2009/06/03        MOD_NIL, TRACE_ERROR        "rtc day = 1, rtc mon = 1, rtc wday = 1, rtc year = 9"

1080474:42758 [Trace]        09:46:16:468 2009/06/03        MOD_NIL, TRACE_ERROR        "execution unit: MMIMMI "

1080474:42758 [Trace]        09:46:16:468 2009/06/03        MOD_NIL, TRACE_ERROR        "status: 0x00000000"

1080474:42758 [Trace]        09:46:16:468 2009/06/03        MOD_NIL, TRACE_ERROR        "stack pointer: 0x0819A5AC"

1080474:42758 [Trace]        09:46:16:468 2009/06/03        MOD_NIL, TRACE_ERROR        "stack dump:"

1080474:42758 [Trace]        09:46:16:468 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x005D305B"

1080474:42758 [Trace]        09:46:16:484 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x000002C1"

1080474:42758 [Trace]        09:46:16:484 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x0034B665"

1080474:42758 [Trace]        09:46:16:484 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x0053C31D"

1080474:42758 [Trace]        09:46:16:484 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x0036F61B"

1080474:42758 [Trace]        09:46:16:484 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x0056CCAB"

1080474:42758 [Trace]        09:46:16:484 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x0056CB45"

1080474:42758 [Trace]        09:46:16:500 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x0048045B"

1080474:42758 [Trace]        09:46:16:500 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x00480463"

1080474:42758 [Trace]        09:46:16:500 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x0037BC51"

1080474:42758 [Trace]        09:46:16:500 2009/06/03        MOD_NIL, TRACE_ERROR        "number of messages in the external queue: 12"

1080474:42758 [Trace]        09:46:16:500 2009/06/03        MOD_NIL, TRACE_ERROR        "messages in the external queue:"

1080474:42758 [Trace]        09:46:16:500 2009/06/03        MOD_NIL, TRACE_ERROR        "    MSG_ID_MMI_NW_RX_LEVEL_IND"

1080474:42758 [Trace]        09:46:16:515 2009/06/03        MOD_NIL, TRACE_ERROR        "    MSG_ID_APP_SOC_BEARER_INFO_IND"

1080474:42758 [Trace]        09:46:16:515 2009/06/03        MOD_NIL, TRACE_ERROR        "    MSG_ID_APP_SOC_BEARER_INFO_IND"

1080474:42758 [Trace]        09:46:16:515 2009/06/03        MOD_NIL, TRACE_ERROR        "    MSG_ID_APP_SOC_DEACTIVATE_CNF"

1080474:42758 [Trace]        09:46:16:515 2009/06/03        MOD_NIL, TRACE_ERROR        "    MSG_ID_MMI_NW_MMRR_SERVICE_STATUS_IND"

1080474:42758 [Trace]        09:46:16:515 2009/06/03        MOD_NIL, TRACE_ERROR        "    MSG_ID_MMI_PS_GPRS_STATUS_UPDATE_IND"

1080474:42758 [Trace]        09:46:16:515 2009/06/03        MOD_NIL, TRACE_ERROR        "    MSG_ID_APP_SOC_BEARER_INFO_IND"

1080474:42758 [Trace]        09:46:16:515 2009/06/03        MOD_NIL, TRACE_ERROR        "    MSG_ID_APP_SOC_DEACTIVATE_CNF"

1080474:42758 [Trace]        09:46:16:531 2009/06/03        MOD_NIL, TRACE_ERROR        "    MSG_ID_MMI_PS_GPRS_STATUS_UPDATE_IND"

1080474:42758 [Trace]        09:46:16:531 2009/06/03        MOD_NIL, TRACE_ERROR        "    MSG_ID_MMI_NW_SET_ATTACH_RSP"

1080474:42758 [Trace]        09:46:16:531 2009/06/03        MOD_NIL, TRACE_ERROR        "    MSG_ID_MMI_NW_ATTACH_IND"

1080474:42758 [Trace]        09:46:16:531 2009/06/03        MOD_NIL, TRACE_ERROR        "    MSG_ID_TIMER_EXPIRY"

1080474:42758 [Trace]        09:46:16:531 2009/06/03        MOD_NIL, TRACE_ERROR        "    MSG_ID_INVALID_TYPE"

1080474:42758 [Trace]        09:46:16:531 2009/06/03        MOD_NIL, TRACE_ERROR        "    MSG_ID_INVALID_TYPE"

1080474:42758 [Trace]        09:46:16:546 2009/06/03        MOD_NIL, TRACE_ERROR        "    MSG_ID_INVALID_TYPE"

1080474:42758 [Trace]        09:46:16:546 2009/06/03        MOD_NIL, TRACE_ERROR        "    MSG_ID_INVALID_TYPE"

1080474:42758 [Trace]        09:46:16:546 2009/06/03        MOD_NIL, TRACE_ERROR        "    MSG_ID_INVALID_TYPE"

1080474:42758 [Trace]        09:46:16:546 2009/06/03        MOD_NIL, TRACE_ERROR        "    MSG_ID_INVALID_TYPE"

1080474:42758 [Trace]        09:46:16:546 2009/06/03        MOD_NIL, TRACE_ERROR        "    MSG_ID_INVALID_TYPE"

1080474:42758 [Trace]        09:46:16:546 2009/06/03        MOD_NIL, TRACE_ERROR        "    MSG_ID_INVALID_TYPE"

1080474:42758 [Trace]        09:46:16:562 2009/06/03        MOD_NIL, TRACE_ERROR        "interrupt mask: 0xF9DE5A00 0x00000000"

1080474:42758 [Trace]        09:46:16:562 2009/06/03        MOD_NIL, TRACE_ERROR        "processing_lisr: 0x00000000"

1080474:42758 [Trace]        09:46:16:562 2009/06/03        MOD_NIL, TRACE_ERROR        "lr: 0x002BA310"

1080474:42758 [Trace]        09:46:16:562 2009/06/03        MOD_NIL, TRACE_ERROR        "diagnosis: healthy"

1080474:42758 [Trace]        09:46:16:562 2009/06/03        MOD_NIL, TRACE_ERROR        "owner: "

1080474:42758 [Trace]        09:46:16:562 2009/06/03        MOD_NIL, TRACE_ERROR        "timing check: 0 0 0 0 0 0"

1080474:42758 [Trace]        09:46:16:578 2009/06/03        MOD_NIL, TRACE_ERROR        "filename: kal_adm.c"

1080474:42758 [Trace]        09:46:16:578 2009/06/03        MOD_NIL, TRACE_ERROR        "line: 705"

1080474:42758 [Trace]        09:46:16:578 2009/06/03        MOD_NIL, TRACE_ERROR        "ext1: 0x00000000"

1080474:42758 [Trace]        09:46:16:578 2009/06/03        MOD_NIL, TRACE_ERROR        "ext2: 0x00000000"

1080474:42758 [Trace]        09:46:16:578 2009/06/03        MOD_NIL, TRACE_ERROR        "ext3: 0x00000000"

1080474:42758 [Trace]        09:46:16:593 2009/06/03        MOD_NIL, TRACE_ERROR        "dump:"

1080474:42758 [Trace]        09:46:16:593 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x00000000 0x00000000 0x00000000 0x00000000"

1080474:42758 [Trace]        09:46:16:593 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x00000000 0x00000000 0x00000000 0x00000000"

1080474:42758 [Trace]        09:46:16:593 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x00000000 0x00000000 0x00000000 0x00000000"

1080474:42758 [Trace]        09:46:16:593 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x00000000 0x00000000 0x00000000 0x00000000"

1080474:42758 [Trace]        09:46:16:609 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x00000000 0x00000000 0x00000000 0x00000000"

1080474:42758 [Trace]        09:46:16:609 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x00000000 0x00000000 0x00000000 0x00000000"

1080474:42758 [Trace]        09:46:16:609 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x00000000 0x00000000 0x00000000 0x00000000"

1080474:42758 [Trace]        09:46:16:609 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x00000000 0x00000000 0x00000000 0x00000000"

1080474:42758 [Trace]        09:46:16:625 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x00000000 0x00000000 0x00000000 0x00000000"

1080474:42758 [Trace]        09:46:16:625 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x00000000 0x00000000 0x00000000 0x00000000"

1080474:42758 [Trace]        09:46:16:625 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x00000000 0x00000000 0x00000000 0x00000000"

1080474:42758 [Trace]        09:46:16:625 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x00000000 0x00000000 0x00000000 0x00000000"

1080474:42758 [Trace]        09:46:16:625 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x00000000 0x00000000 0x00000000 0x00000000"

1080474:42758 [Trace]        09:46:16:640 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x00000000 0x00000000 0x00000000 0x00000000"

1080474:42758 [Trace]        09:46:16:640 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x00000000 0x00000000 0x00000000 0x00000000"

1080474:42758 [Trace]        09:46:16:640 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x00000000 0x00000000 0x00000000 0x00000000"

1080474:42758 [Trace]        09:46:16:640 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x00000000 0x00000000 0x00000000 0x00000000"

1080474:42758 [Trace]        09:46:16:656 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x00000000 0x00000000 0x00000000 0x00000000"

1080474:42758 [Trace]        09:46:16:656 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x00000000 0x00000000 0x00000000 0x00000000"

1080474:42758 [Trace]        09:46:16:656 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x00000000 0x00000000 0x00000000 0x00000000"

1080474:42758 [Trace]        09:46:16:656 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x00000000 0x00000000 0x00000000 0x00000000"

1080474:42758 [Trace]        09:46:16:671 2009/06/03        MOD_NIL, TRACE_ERROR        "    0x00000000 0x00000000 0x00000000 0x00000000"

怎么会释放不了呢,有时同一边代码走第一遍可以,第二遍时就释放不了了[em07]
点评回复

使用道具 举报

发表于 2009-6-11 13:58:05 | 显示全部楼层
badboy2007你好,很抱歉才看到你给我发的信息。
我想可能是这样:你的应用实际使用的内存超过了你为它申请的内存,因为C没有内存越界检查,所以当应用程序修改了不属于它的内存的时候就会出现一些随机的错误。从 ADM_INUSE 的报错上看,是有人破坏了ADM的区域。MTK对ADM管理的机制要求有一个头(类似与网络数据包的包头),这个头包含管理信息,比如是够被非配等,这里的信息如果被破坏了,就可能出现内存无法释放或释放内存失败的情况。
检查一下MED内存,ADM内存的分配情况。
点评回复

使用道具 举报

发表于 2009-6-30 13:22:15 | 显示全部楼层
新手学习[em12][em14]
点评回复

使用道具 举报

发表于 2009-7-13 16:55:58 | 显示全部楼层
看报错的原因,应该是内存越界了,可以用calloc![

[em06][em06][em06][em06][em06][em06]
点评回复

使用道具 举报

发表于 2009-8-29 23:21:03 | 显示全部楼层
[em11]
点评回复

使用道具 举报

发表于 2009-8-30 14:46:38 | 显示全部楼层
我也碰到这样的问题,情急之下也没有深跟踪下去,
我就自己建立个内存池,在里面分配内存,算暂时解决了
点评回复

使用道具 举报

发表于 2009-8-30 19:15:01 | 显示全部楼层
rd们,努力加油,提高水平啊!
点评回复

使用道具 举报

发表于 2009-9-1 15:14:39 | 显示全部楼层
最近我有发现一个碎片导致的内存申请不够的问题:
剩下的大小还够,就是分配不出来,用打印MOD_MED的TRACE_INFO会发现有fragmentation的字样。 估计楼主可能是这中问题。
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-10-7 07:23 , Processed in 0.055686 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表