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()

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

So, it looks like the culprit here is the _Thread_Dispatch_disable_level

I will wait for the crash to happen again, and check it's value.



More information about the users mailing list