rt_thread:这算是一个小BUG吧
thread: stack overflow线程名字怎么没有打印出来呀?
1.3.1版本的 再看看源码,确实是一个BUG.
----------------------------------------------------------
static void _rt_scheduler_stack_check(struct rt_thread* thread)
{
RT_ASSERT(thread != RT_NULL);
if ( (rt_uint32_t)thread->sp <= (rt_uint32_t)thread->stack_addr ||
(rt_uint32_t)thread->sp >
(rt_uint32_t)thread->stack_addr + (rt_uint32_t)thread->stack_size )
{
rt_uint32_t level;
rt_kprintf("thread:%s stack overflow\n", thread->name);
level = rt_hw_interrupt_disable();
while (level);
}
else if ((rt_uint32_t)thread->sp <= ((rt_uint32_t)thread->stack_addr + 32))
{
rt_kprintf("warning: %s stack is close to end of stack address.\n",
thread->name);
}
}
-------------------------------------------------------------------------------------------------- 会不会是线程名字为空? 我的每一个线程都是取名字了的。 你自己的问题
栈已经越界了,那么thread都有可能指向错误的位置,打印线程名称也就有可能出现问题 谢谢!
页:
[1]