On 06/06/2012 03:55 PM, Gilles Chanteperdrix wrote:
> On 06/06/2012 03:53 PM, Philippe Gerum wrote:
>> On 06/06/2012 03:41 PM, Gilles Chanteperdrix wrote:
>>> On 06/06/2012 03:25 PM, Philippe Gerum wrote:
>>>> On 06/06/2012 03:18 PM, Gilles Chanteperdrix wrote:
>>>>> On 06/06/2012 02:28 PM, Philippe Gerum wrote:
>>>>>> On 06/06/2012 11:48 AM, Philippe Gerum wrote:
>>>>>>> On 06/06/2012 11:18 AM, ali hagigat wrote:
>>>>>>>> Much appreciate for the reply, Mr. Gerum. Here is the result of ldd
>>>>>>>> command:
>>>>>>>>
>>>>>>>
>>>>>>> http://www.xenomai.org/pipermail/xenomai-help/2011-12/msg00012.html
>>>>>>
>>>>>> Alternatively, this patch may work as well (not tested, but this
>>>>>> looks like a former issue we had with aggressive optimizers):
>>>>>>
>>>>>> diff --git a/src/skins/posix/init.c b/src/skins/posix/init.c
>>>>>> index 7a338a0..9c7849e 100644
>>>>>> --- a/src/skins/posix/init.c
>>>>>> +++ b/src/skins/posix/init.c
>>>>>> @@ -43,6 +43,7 @@ void pse51_clock_init(int);
>>>>>>    static __attribute__ ((constructor))
>>>>>>    void __init_posix_interface(void)
>>>>>>    {
>>>>>> +        volatile pthread_t tid = pthread_self();
>>>>>>    #ifndef CONFIG_XENO_LIBS_DLOPEN
>>>>>>          struct sched_param parm;
>>>>>>          int policy;
>>>>>> @@ -80,14 +81,14 @@ void __init_posix_interface(void)
>>>>>>
>>>>>>          /* Don't use auto-shadowing if we are likely invoked from 
>>>>>> dlopen. */
>>>>>>    #ifndef CONFIG_XENO_LIBS_DLOPEN
>>>>>> -        err = 
>>>>>> __real_pthread_getschedparam(pthread_self(),&policy,&parm);
>>>>>> +        err = __real_pthread_getschedparam(tid,&policy,&parm);
>>>>>>          if (err) {
>>>>>>                  fprintf(stderr, "Xenomai Posix skin init: "
>>>>>>                          "pthread_getschedparam: %s\n", strerror(err));
>>>>>>                  exit(EXIT_FAILURE);
>>>>>>          }
>>>>>>
>>>>>> -        err = __wrap_pthread_setschedparam(pthread_self(), 
>>>>>> policy,&parm);
>>>>>> +        err = __wrap_pthread_setschedparam(tid, policy,&parm);
>>>>>>          if (err) {
>>>>>>                  fprintf(stderr, "Xenomai Posix skin init: "
>>>>>>                          "pthread_setschedparam: %s\n", strerror(err));
>>>>>
>>>>> There should not be any issue here, as the pthread_self() is passed as
>>>>> an argument to the called functions, the syscall is not inlined directly.
>>>>>
>>>>
>>>> Did you get any disassembly of the faulty code when suggesting
>>>> -fno-omit-frame-pointer last time you did?
>>>>
>>> No, but I had experienced the problem first hand.
>>>
>>
>> It would be interesting to know why we have to force a frame pointer in 
>> there. I'm not comfortable with voodoo fixing, that bug might bite later 
>> on as gcc's optimizer is unlikely to become less aggressive over time.
>>
> Ah this, I know. I have posted a mail where I explained the problem. I
> am a bit in a short schedule here, will post the link tonight.
> 
http://xenomai.org/pipermail/xenomai-core/2011-08/msg00029.html

-- 
                                            Gilles.

_______________________________________________
Xenomai mailing list
Xenomai@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai

Reply via email to