From: Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org>
To: Philippe Gerum <rpm@xenomai.org>
Cc: Xenomai@xenomai.org
Subject: Re: [Xenomai] xenomai-2.6.0 instrumentation commands not executing
Date: Fri, 08 Jun 2012 11:35:13 +0200 [thread overview]
Message-ID: <4FD1C751.5070501@xenomai.org> (raw)
In-Reply-To: <4FD1C67E.5010600@xenomai.org>
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.
next prev parent reply other threads:[~2012-06-08 9:35 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-06 7:40 [Xenomai] xenomai-2.6.0 instrumentation commands not executing ali hagigat
2012-06-06 8:30 ` Philippe Gerum
2012-06-06 9:06 ` ali hagigat
2012-06-06 9:11 ` Philippe Gerum
2012-06-06 9:18 ` ali hagigat
2012-06-06 9:48 ` Philippe Gerum
2012-06-06 10:47 ` ali hagigat
2012-06-06 12:06 ` Philippe Gerum
2012-06-06 12:28 ` Philippe Gerum
2012-06-06 13:18 ` Gilles Chanteperdrix
2012-06-06 13:25 ` Philippe Gerum
2012-06-06 13:41 ` Gilles Chanteperdrix
2012-06-06 13:53 ` Philippe Gerum
2012-06-06 13:55 ` Gilles Chanteperdrix
2012-06-06 14:02 ` Gilles Chanteperdrix
2012-06-06 14:27 ` Gilles Chanteperdrix
2012-06-06 14:51 ` Philippe Gerum
2012-06-06 15:03 ` Philippe Gerum
2012-06-06 15:15 ` Gilles Chanteperdrix
2012-06-06 15:21 ` Philippe Gerum
2012-06-06 17:57 ` Gilles Chanteperdrix
2012-06-06 18:00 ` Gilles Chanteperdrix
2012-06-08 9:20 ` Philippe Gerum
2012-06-08 9:25 ` Gilles Chanteperdrix
2012-06-08 9:29 ` Philippe Gerum
2012-06-08 9:31 ` Philippe Gerum
2012-06-08 9:35 ` Gilles Chanteperdrix [this message]
2012-06-09 8:59 ` ali hagigat
2012-07-03 16:01 ` Marcin Kuśka
2012-07-03 16:51 ` Gilles Chanteperdrix
2012-07-06 15:42 ` Marcin Kuśka
2012-07-06 15:48 ` Gilles Chanteperdrix
2012-07-09 15:34 ` Marcin Kuśka
2012-07-09 15:48 ` Christophe Blaess
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4FD1C751.5070501@xenomai.org \
--to=gilles.chanteperdrix@xenomai.org \
--cc=Xenomai@xenomai.org \
--cc=rpm@xenomai.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.