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,
--
Gilles.
_______________________________________________
Xenomai mailing list
[email protected]
http://www.xenomai.org/mailman/listinfo/xenomai