I did "make clean" for building the Xenomai user space components and now every thing seems OK. Xenomai version is 2.6.0.
Thank you. On Fri, Jun 8, 2012 at 2:05 PM, Gilles Chanteperdrix <gilles.chanteperd...@xenomai.org> wrote: > On 06/08/2012 11:31 AM, Philippe Gerum wrote: >> On 06/08/2012 11:29 AM, Philippe Gerum wrote: >>> On 06/08/2012 11:25 AM, Gilles Chanteperdrix wrote: >>>> On 06/08/2012 11:20 AM, Philippe Gerum wrote: >>>>> On 06/06/2012 08:00 PM, Gilles Chanteperdrix wrote: >>>>>> On 06/06/2012 07:57 PM, Gilles Chanteperdrix wrote: >>>>>>> On 06/06/2012 05:21 PM, Philippe Gerum wrote: >>>>>>>> On 06/06/2012 05:15 PM, Gilles Chanteperdrix wrote: >>>>>>>>> On 06/06/2012 05:03 PM, Philippe Gerum wrote: >>>>>>>>>> On 06/06/2012 04:27 PM, Gilles Chanteperdrix wrote: >>>>>>>>>>> On 06/06/2012 04:02 PM, Gilles Chanteperdrix wrote: >>>>>>>>>>>> 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 >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> In the mails following this one, I found how to fix the >>>>>>>>>>> assembly to work >>>>>>>>>>> in the omit-frame-pointer case. The real problem is that, at >>>>>>>>>>> compilation >>>>>>>>>>> time, we have no command-line #defined variable telling us whether >>>>>>>>>>> compiling with frame pointers enabled. And it does not seem >>>>>>>>>>> easy to >>>>>>>>>>> write a configure test script, which tests whether frame >>>>>>>>>>> pointers are >>>>>>>>>>> enabled or not. >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> I'd suggest that at some point, we move all the syscall >>>>>>>>>> trampolines out >>>>>>>>>> of line, and specifically build the resulting file forcing >>>>>>>>>> -fno-omit-frame-pointer. Such inlining will always be fragile >>>>>>>>>> until we >>>>>>>>>> actually control the way that compilation unit is built, >>>>>>>>>> regardless of >>>>>>>>>> the general settings for CFLAGS. >>>>>>>>>> >>>>>>>>> In the current 2.6 repository, we force -fno-omit-frame-pointer >>>>>>>>> on x86_32. >>>>>>>>> >>>>>>>> >>>>>>>> Yes, but that is crappy. The point is that we don't want to force >>>>>>>> this >>>>>>>> for all userland bits. We'd only need this for syscall trampolines. >>>>>>>> >>>>>>> We currently have different flags for compiling xenomai than for >>>>>>> passing >>>>>>> to the applications (via xeno-config). The problem is that I am not >>>>>>> sure >>>>>>> it will not break for instance calling "backtrace" in gdb when >>>>>>> breaking >>>>>>> inside a xenomai function. >>>>>>> >>>>>> (mixing code compiled without frame pointers with code compiled with >>>>>> frame pointers I mean). >>>>>> >>>>> >>>>> The only issue is with frame elimination starting with -O2 and above, >>>>> otherwise the backtraces are clean over gdb (just checked), at least >>>>> there does not seem to be any additional problem introduced by mixing bp >>>>> and no-bp. At any rate, -O0 -g is recommended to get clean and detailed >>>>> (back)traces anyway, and this is what we pick when --enable-debug is >>>>> given. >>>>> >>>>> We should move each existing inline XENOMAI_SYS/SKINCALL macro into its >>>>> own C trampoline, group all trampolines into separate compilation units, >>>>> and build each of these units with -fno-omit-frame-pointer >>>>> unconditionally. >>>>> >>>>> -forge is a good candidate for this, since the number of syscall >>>>> trampolines shrunk dramatically compared to 2.x. If any issue would be >>>>> easily detected based on the output of the new "slackspot" tracer we >>>>> have there. >>>>> >>>> It looks to me like we can simply build xenomai libraries with >>>> -fno-omit-frame-pointer, and compile the rest without this option. After >>>> all, implementation of xenomai services are little more than syscall >>>> trampolines. >>>> >>> >>> This is true for 2.x, however -forge will need the other approach. >>> >> >> Unless you only mean lib/cobalt for 3.x, in which case I would agree. >> > I was thinking 2.x. But yes, we can do the same with lib/cobalt. > > -- > Gilles. > > _______________________________________________ > Xenomai mailing list > Xenomai@xenomai.org > http://www.xenomai.org/mailman/listinfo/xenomai _______________________________________________ Xenomai mailing list Xenomai@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai