RTEMS crash with error 18 (RTEMS_CALLED_FROM_ISR) again.

Joel Sherrill joel.sherrill at OARcorp.com
Wed Feb 17 17:03:51 UTC 2010

On 02/17/2010 10:56 AM, Nick Thomas wrote:
>> This does not clearly show you are in a task.  It shows you tried to
>> allocate memory.  Possibly from an ISR.  There would have to be more
>> stack back trace to be clearly anything.  Who called
>> rtems_region_get_segment?
> Yes, you're right, I tried to keep the email shorter by only posting the
> last few frames.
> The full backtrace goes back some 20 frames to _Thread_Handler in
> threadhandler.c line 127.
> Does that prove that it came from a task context?
Depends.  Sometimes on some targets, the trace from an ISR can
follow back through from the ISR to the interrupted task.  Do you
see any of the ISR entry code in the back trace?

If there is no hint of being in an ISR (bit in PSR?), then there is
something out of sync -- an ISR exit path which doesn't decrement
the count, code which thinks it is in the register but it is in
_ISR_Nest_level, or vice-versa.

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.

> Regards
> Nick

Joel Sherrill, Ph.D.             Director of Research&  Development
joel.sherrill at OARcorp.com        On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
    Support Available             (256) 722-9985

More information about the users mailing list