> Gilles Chanteperdrix wrote: 
>> Mauro Salvini wrote: 
>>>> It looks like a typical pthread_join deadlock. The thread you are 
>>>> joining is locked on a pthread mutex, that some other thread (I 
>>>> would say, the one calling pthread_join) has. It can not work. You 
>>>> should not call pthread_join while holding a mutex. 
>>> Yes, it looks like this, but I don't use any mutex in my task. It 
>>> looks like dlclose() locks a mutex used also by pthread_join() (that 
>>> was called into shared object destructor), and here is deadlock. But 
>>> executing realtime task as normal thread does not raise this issue. 
>> 
>> The trace you sent clearly shows that the problem happens because 
>> rt_task_trampoline calls pthread_exit. In your tests with 
>> rt_task_shadow/pthread_create, did you try to use pthread_exit? Or could 
>> you try replacing the call to pthread_exit in rt_task_trampoline with a 
>> return? 
> 
> Answering to myself: no, in your examples you did not use pthread_exit, 
> that is the difference with the rt_task_create case. 
> 
> So, could you try the following patch? 
> 
> diff --git a/src/skins/native/task.c b/src/skins/native/task.c 
> index be4ea2c..70ba6f7 100644 
> --- a/src/skins/native/task.c 
> +++ b/src/skins/native/task.c 
> @@ -113,7 +113,7 @@ static void *rt_task_trampoline(void *cookie) 
> 
> fail: 
> 
> - pthread_exit((void *)err); 
> + return (void *)err; 
> } 
> 
> int rt_task_create(RT_TASK *task, 
> 
> 

Yes, patch works: rt_task_join works correctly now. 

By the way, before apply patch, as you suggest in your penultimate mail, I 
tried to use pthread_exit in tests with rt_task_shadow/pthread_create: 
application hangs as with rt_task_create().

So, I deduce that pthread_exit must not be called into shared object 
threads/tasks, to avoid joining hangs when object destructor was called. Is 
this a libc bug or is the normal way of coding?

Thank you very much Gilles for your precious help! 
Regards 

_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help

Reply via email to