There is another patch for another deadlock.
BTW.
I'm not familiar with Helenos IPC yet, but I suppose that when
vs_enumerate_modes() finds out that there is less links in modes list
than the function asket to retrieve, the function hangups session
calling async_answer_0(iid, <with something != EOK>);
If i'm right, then: when compositor whants to discover how many modes
visualizer has and calls vs_enumerate_modes() in a loop visualizer
just hangups at some point leaving compositor without output channel.
Such a great design!
2014-07-04 23:00 GMT+04:00, Wolf Ramovsky <[email protected]>:
> 2014-07-04 19:44 GMT+04:00, Ján Veselý <[email protected]>:
>> yes, all the error paths in that function seem to miss mutex unlock,
>> fell free to send a patch
>>
>> jan
>>
>> On Fri, Jul 4, 2014 at 11:35 AM, Wolf Ramovsky <[email protected]>
>> wrote:
>>> You can see that mutex get locked here [1], but doesn't get unlocked
>>> e.g. here [2] and below.
>>>
>>> [1]
>>> http://bazaar.launchpad.net/~helenos-core/helenos/mainline/view/head:/uspace/srv/hid/compositor/compositor.c#L890
>>> [2]
>>> http://bazaar.launchpad.net/~helenos-core/helenos/mainline/view/head:/uspace/srv/hid/compositor/compositor.c#L893
>>>
>>> _______________________________________________
>>> HelenOS-devel mailing list
>>> [email protected]
>>> http://lists.modry.cz/listinfo/helenos-devel
>>
>> _______________________________________________
>> HelenOS-devel mailing list
>> [email protected]
>> http://lists.modry.cz/listinfo/helenos-devel
>>
>
=== modified file 'uspace/lib/graph/graph.c'
--- uspace/lib/graph/graph.c 2013-09-10 16:32:35 +0000
+++ uspace/lib/graph/graph.c 2014-07-05 07:57:18 +0000
@@ -311,6 +311,7 @@
async_answer_0(iid, EOK);
} else {
+ fibril_mutex_unlock(&vs->mode_mtx);
async_answer_0(iid, ENOENT);
}
}
_______________________________________________
HelenOS-devel mailing list
[email protected]
http://lists.modry.cz/listinfo/helenos-devel