Jan Kiszka wrote:
Philippe Gerum wrote:

Jan Kiszka wrote:

Dmitry Adamushko wrote:

Indeed, this solves the issue more gracefully.

Looking at this again from a different perspective and running the test
case with your patch in a slightly different way, I think I
misinterpreted the crash. If I modify task2 like this

void task2_fnc(void *arg)
{
       printf("started task2\n");
       if (rt_mutex_lock(&mtx, 0) < 0) {
               printf("lock failed in task2\n");
               return;
       }
//        rt_mutex_unlock(&mtx);

       printf("done task2\n");
}

I'm also getting a crash. So the problem seems to be releasing a mutex
ownership on task termination. Well, this needs further examination.


The native skin does not implement robust mutex, indeed.


Yeah, lunch opened my eyes: the skin data structure (RT_MUTEX) is not
updated appropriately on task cleanup. What about some callback hook in
xnsynch_t to invoke a per-skin cleanup handler when running
xnsynch_release_all_ownerships?


Yep, we need this. Added by commit #1067 (i.e. xnsynch_register_cleanup()) and also backported to the maintenance branch, so that new code may happily rely on it without too much portability burden.

--

Philippe.

_______________________________________________
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core

Reply via email to