apology - Re: rtems_semaphore_obtain error

Jerry Needell jerry.needell at unh.edu
Mon Jan 28 18:18:30 UTC 2008


Joel Sherrill wrote:
> Jerry Needell wrote:
>> What a bad place to leave out the key word NOT! My apologies for the
>> pompous way the last line read! I meant to say that I have had very
>> little experience with the use of semaphores or mutexes. I've sent
>> some embarrassing posts in the past, but I think this was the worst.
>>   
> No big deal.  I actually read it correctly.
>
> Two odd questions you can answer quickly.
>
> + Are you really calling rtems_task_start from an ISR? Or
>   when you say "start", do you mean "unblock"?
I am calling rtems_task_resume. The task suspends after its execution.

>
> + Is this the $Id$ of your file 
> cpukit/rtems/src/semtranslatereturncode.c?
>
> *  $Id: semtranslatereturncode.c,v 1.12.2.1 2007/12/21 15:23:01 joel 
> Exp $
my version has:
 *  $Id: semtranslatereturncode.c,v 1.12 2006/10/30 22:21:23 joel Exp $
I suppose I should update.
>
> There was a previous version of this file which for semaphores 
> incorrectly
> used the maximum core mutex status instead of the maximum core
> semaphore status.  I don't think this would be a problem because the
> maximum core mutex status is greater than the maximum core semaphore
> one but it is a possibility.
> I suspect a sequence of things:
>
> + You shouldn't call task start from an ISR.  That by itself could cause
> problems.  I am not 100% sure of what though.
> + A task start extension could be doing something really illegal from
> an ISR.  Consider termios mutexes, etc.  That could trip weird things.
>
> + If you are doing it repeatedly, task start should return 
> INCORRECT_STATE.
>
I think I have found out what was happening. The task was actually 
executing far longer than I had expected and a second Interrupt was 
occuring before completion of the previous cycle.  This is not supposed 
to ever happen  and I need to do a better job of handling the error 
condition if it does.  The problem does not occur if I restrict the 
execution time of the task to reasonable limits. Sorry about the false 
alarm. I think rtems was handling the situation as well as could be 
expected?


Thanks - Jerry


> --joel
>> -Jerry
>> On Jan 25, 2008, at 3:15 PM, Jerry Needell wrote:
>>
>>  
>>> Sorry for misinformation , but I now see that the
>>> condition :CORE_MUTEX_STATUS_CEILING_VIOLATED will result in the
>>> Internal error.  So my real question is, does anyone have any tips
>>> for tracking this down? I have (obviously) had much experience with
>>> the semaphore handler.
>>> thanks
>>> - Jerry
>>>
>>>
>>>
>>> Jerry Needell wrote:
>>>    
>>>> My application is entering Internal_error_Occurred  from
>>>> rtems_semaphore_obtain. The call to rtems_semaphore obtain is
>>>> coming from  internally from rtems as I am not using semaphore in
>>>> my application. I have not tracked it down yet. thin interesting
>>>> point is that in the source for rtems_semaphore_obtain, the las
>>>> line is:
>>>>
>>>> return RTEMS_INTERNAL_ERROR;   /* unreached - only to remove
>>>> warnings */
>>>>
>>>> but it is being reached!!
>>>>
>>>> Does anyone have any suggestions for potential culprits.
>>>>
>>>> BTW: I am using the sparc leon3 bsp in rtems 4.8
>>>>
>>>> - Jerry
>>>>       
>>
>> -- 
>> Jerry Needell -- jerry.needell at unh.edu   telephone 603 862 2732
>> University of New Hampshire
>> Space Science Center - Morse Hall
>> 39 College Road
>> Durham NH 03824
>> USA
>>
>>
>>
>> _______________________________________________
>> rtems-users mailing list
>> rtems-users at rtems.com
>> http://rtems.rtems.org/mailman/listinfo/rtems-users
>>   




More information about the users mailing list