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");
//        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

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.



Xenomai-core mailing list

Reply via email to