On 03/11/2013 09:47 AM, Paolo Minazzi wrote:

> Il 08/03/2013 21.13, Gilles Chanteperdrix ha scritto:
>> On 03/08/2013 01:50 PM, Paolo Minazzi wrote:
>>
>>> This fault does not freeze the arm, I can countinue to work.
>>>
>>> Ideas ?
>>
>> Please try the following patch:
>>
>> diff --git a/ksrc/nucleus/shadow.c b/ksrc/nucleus/shadow.c
>> index c91a6f3..ed3864b 100644
>> --- a/ksrc/nucleus/shadow.c
>> +++ b/ksrc/nucleus/shadow.c
>> @@ -1430,8 +1430,10 @@ void xnshadow_unmap(xnthread_t *thread)
>>      rpi_pop(thread);
>>
>>      sys_ppd = xnsys_ppd_get(0);
>> -    xnheap_free(&sys_ppd->sem_heap, thread->u_mode);
>> -    thread->u_mode = NULL;
>> +    if (thread->u_mode) {
>> +            xnheap_free(&sys_ppd->sem_heap, thread->u_mode);
>> +            thread->u_mode = NULL;
>> +    }
>>
>>      xnarch_atomic_dec(&sys_ppd->refcnt);
>>
>> @@ -2379,7 +2381,7 @@ int do_hisyscall_event(unsigned event, 
>> rthal_pipeline_stage_t *stage,
>>         ret_handled:
>>
>>      /* Update the userland-visible state. */
>> -    if (thread)
>> +    if (thread&&  thread->u_mode)
>>              *thread->u_mode = thread->state;
>>
>>      trace_mark(xn_nucleus, syscall_histage_exit,
>> @@ -2549,7 +2551,7 @@ int do_losyscall_event(unsigned event, 
>> rthal_pipeline_stage_t *stage,
>>         ret_handled:
>>
>>      /* Update the userland-visible state. */
>> -    if (thread)
>> +    if (thread&&  thread->u_mode)
>>              *thread->u_mode = thread->state;
>>
>>      trace_mark(xn_nucleus, syscall_lostage_exit,
>>
> Hi Gilles,
> I can see the same problem under 2.6.2.1.
> I was debugging, after a while I could not stop anymore the code using 
> breakpoints because all tasks are stopped at rt_task_sleep.
> After this, If I close the application and restart it, the rt_task sleep 
> are blocked. I have to restart my arm processor.
> Any ideas ?


Debugging xenomai thread causes the timers to be stopped, and they are
supposed to be restarted when the thread blocked on the breakpoint,
maybe this is what goes wrong: the timers are not restarted.

Another possibility is the hardware timer being programmed for a too
short delay.

Please no private mails.

> Paolo
> 
> 



-- 
                                                                Gilles.

_______________________________________________
Xenomai mailing list
[email protected]
http://www.xenomai.org/mailman/listinfo/xenomai

Reply via email to