共1条
1/1 1 跳转至页
memPartFree and taskSuspend
Anyone know why memPartFree would ever call taskSuspend?
I am using standard malloc and free pairs, but occasionally I get a suspended task. When I use "tt" to get a trace, it shows free calling memPartFree and then memPartFree calling taskSuspend. If I knew what conditions caused memPartFree to call suspend I might be able to figure out whats happening.
Thanks,
bryan
Hello,
memPartFree and memPartAlloc can both suspend the calling task in cases where there is an allocation error (as long as the task is breakable - see taskLib for information on breakable and non-breakable tasks).
For the case where memPartFree does this, it is usually the result of corruption on your heap. There is a small header just in front of every allocated block that tells the partition library how big the block is, and also contains some pointer information needed to manage the partition. Corrupting one of these headers can cause memPartFree to suspend the task. Also, trying to free memory that was not allocated using memPartAlloc will do this.
If you don't like this behaviour, then you can change the options for the partition (see memPartLib's reference manual for information). Before doing that though, you need to work out what in your code is corrupting the heap! That can be a daunting task, especially since it is likely that the cause of the problem is the code using the block allocated just in front of the one you are trying to free, and the not the code that is being suspended.
You might want to look into some tools that could help you here if you don't find the problem quickly. RTI have a tool that does this (MemScope), and there are other companies out there with these tools too (check on comp.os.vxworks for other suggestions - this comes up on there every now and again).
HTH,
John...
关键词: memPartFree taskSuspend
共1条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 | |
【FRDM-MCXN947评测】核间通信MUTEX被打赏50分 |