RTEMS crash with error 18 (RTEMS_CALLED_FROM_ISR) again.
Nick Thomas
nick.thomas at pixsan.com
Wed Feb 17 21:08:34 UTC 2010
> >
> Yes. That's the hint. A path out of the ISR code isn't doing exactly
> the right thing.
> >
> >
> >> The vectoring code is board dependent in your RTEMS version and this
> >> was fragile. It could be a very specific path in your BSPs version
> >> of this code.
> >>
Looking at _CORE_mutex_Seize in coremutex.h. This is the inlined function
where the error 18 is generated.
Note, that 18 is hard coded in there. I was searching for the RTEMS_XXX
defined constant !
So, the error will be generated if:
_Thread_Dispatch_disable_level > 0 AND _wait is TRUE AND _System_state_Get()
>= SYSTEM_STATE_BEGIN_MULTITASKING.
Now, _wait is always TRUE, and I assume that _System_state_Get() also
returns TRUE after the system has been running for a while before the bug
happens.
So, it looks like the culprit here is the _Thread_Dispatch_disable_level
variable.
I will wait for the crash to happen again, and check it's value.
Regards
Nick
More information about the users
mailing list