On 12/16/2014 08:41 PM, Ronny Meeus wrote:
> On Tue, Dec 16, 2014 at 6:58 PM, Philippe Gerum <[email protected]> wrote:
>> On 12/16/2014 06:36 PM, Ronny Meeus wrote:
>>> On Sun, Dec 7, 2014 at 5:26 PM, Ronny Meeus <[email protected]> wrote:
>>>> Hello
>>>>
>>>> we are using the xenomai-forge implementation.
>>>> We from time to time see an issue that the timer-internal thread is
>>>> consuming a complete core. It is seen when we send broadcast traffic that
>>>> needs to be handled by the Linux kernel (ARP).
>>>>
>>>> The kernel thread's priority handling the packets in the middle between the
>>>> timer-internal thread and the application thread's priority. All threads 
>>>> run
>>>> on the same core.
>>>> If the priority of the timer-internal is lowered below the kernel thread,
>>>> the load disappears immediately.
>>>> So it looks like there is some busy polling on a common resource that is
>>>> currently held by the application thread running at the lowest prio.
>>>>
>>>> I see that the timer lock being used is a mutex with priority inheritance 
>>>> so
>>>> I would expect that the prio of the application is raised as soon as the
>>>> timer-internal thread tries to obtain the mutex.
>>>
>>> After investigating this issue in more detail I have the impression that it 
>>> has
>>> nothing to do with the mutex used to protect the timer but with the 
>>> conditional
>>> variable used to implement the psos event interface.
>>>
>>> I found references on the web that explain an issue with the internal mutex 
>>> used
>>> inside the posix library to implement a conditional variable. See:
>>> https://bugzilla.redhat.com/show_bug.cgi?id=438484
>>> http://marc.info/?t=134688711000002&r=1&w=2
>>>
>>> If this is indeed true, it means that the usage of conditional
>>> variables is not safe
>>> at all (from priority inheritance point of view).
>>
>> Yes, condvars are known not to work nicely with PI mutexes on the glibc.
> 
> Philippe,
> I do not understand.
> 
> We just use the pSOS interface of the xenomai-forge, which internally uses
> conditional variables.
> Does this mean that we cannot use the pSOS interface with glibc?
> 
> If above statement is correc, what libc should we use to make it work?
> 

A release of the glibc that fixes this issue. I must admit that I did
not track this problem lately. Jan likely knows better here.

-- 
Philippe.

_______________________________________________
Xenomai mailing list
[email protected]
http://www.xenomai.org/mailman/listinfo/xenomai

Reply via email to