From: Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org>
To: Jan Kiszka <jan.kiszka@siemens.com>
Cc: xenomai@xenomai.org
Subject: Re: [Xenomai] [Xenomai-git] Jan Kiszka : lib/cobalt: Rework minimum stack size enforcement
Date: Tue, 21 Apr 2015 18:32:47 +0200 [thread overview]
Message-ID: <20150421163247.GZ7109@hermes.click-hack.org> (raw)
In-Reply-To: <553678CC.5020206@siemens.com>
On Tue, Apr 21, 2015 at 06:20:28PM +0200, Jan Kiszka wrote:
> On 2015-04-21 18:16, Gilles Chanteperdrix wrote:
> > On Tue, Apr 21, 2015 at 06:12:15PM +0200, Jan Kiszka wrote:
> >> On 2015-04-21 18:06, Gilles Chanteperdrix wrote:
> >>> On Tue, Apr 21, 2015 at 06:04:42PM +0200, Jan Kiszka wrote:
> >>>> On 2015-04-21 17:27, Gilles Chanteperdrix wrote:
> >>>>> On Tue, Apr 21, 2015 at 05:22:34PM +0200, git repository hosting wrote:
> >>>>>> +COBALT_IMPL(int, pthread_attr_setstack, (pthread_attr_t *attr, void *stackaddr,
> >>>>>> + size_t stacksize))
> >>>>>> +{
> >>>>>> + if (stacksize < COBALT_STACKSIZE_MIN)
> >>>>>> + return -EINVAL;
> >>>>>> + return __STD(pthread_attr_setstack)(attr, stackaddr, stacksize);
> >>>>>> +}
> >>>>>
> >>>>> As I said, there is no reason for Xenomai to enforce a task size
> >>>>> larger than PTHREAD_STACK_MIN. This breaks POSIX compliance, and is
> >>>>> useless.
> >>>>
> >>>> Then we should not use printf & Co. from any trampoline function, e.g.
> >>>> vxworks/taskLib.c:task_trampoline. I only tried with a local skin, but I
> >>>> bet the issue is reproducible with that one.
> >>>>
> >>>> For that reason, I went down the conservative path.
> >>>
> >>> The path you took breaks compatibility with POSIX. On a compliant
> >>> system, pthread_attr_setstacksize(attr, PTHREAD_STACK_MIN) is not
> >>> supposed to return an error.
> >>
> >> That is true. We have to pick from one evil: fail non-compliant here or
> >> crash later.
> >
> > The point is: you do not know if it will crash later, you can assume
> > that the user calling pthread_attr_setstack knows what he is doing.
>
> The crash can be caused by the the library code and, thus, can happen
> even if the application code would not crash. That is my problem.
Yes, so what, increase the stack. The same goes with glibc when
using printf, you know that PTHREAD_STACK_MIN is not sufficient, so
you should pass a larger size. I suspect it goes this way for any
posix implementation. Once again, if an applications chooses to use
these calls, it should know what it is doing.
>
> > Any user calling this interface should. We are doing real-time in C,
> > not making an API for tutorials in ADA, or C++, let us try not to
> > prevent the user from doing what he wants.
> >
> > For pthread_attr_setstacksize, you can round to the larger size and
> > remain POSIX compliant.
>
> Is it specified that this call invalidate a stack address set earlier? I
> don't see this.
The way I understand the spec, the stack and stacksize attribute are
separate, and setting stacksize sets the size of the stack that will
be allocated automatically. Now if you set both, maybe stacksize is
ignored and the sized passed to setstack is used. But I would not
expect the size passed to setstack to be used for the stacksize
attribute.
--
Gilles.
next prev parent reply other threads:[~2015-04-21 16:32 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <E1Yka0Q-00008c-Jh@sd-51317.xenomai.org>
2015-04-21 15:27 ` [Xenomai] [Xenomai-git] Jan Kiszka : lib/cobalt: Rework minimum stack size enforcement Gilles Chanteperdrix
2015-04-21 16:04 ` Jan Kiszka
2015-04-21 16:06 ` Gilles Chanteperdrix
2015-04-21 16:12 ` Jan Kiszka
2015-04-21 16:16 ` Gilles Chanteperdrix
2015-04-21 16:20 ` Jan Kiszka
2015-04-21 16:32 ` Gilles Chanteperdrix [this message]
2015-04-21 16:37 ` Jan Kiszka
2015-04-21 16:40 ` Gilles Chanteperdrix
2015-04-21 17:52 ` Jan Kiszka
2015-04-21 17:56 ` Gilles Chanteperdrix
2015-04-21 18:04 ` Jan Kiszka
2015-04-21 18:16 ` Gilles Chanteperdrix
2015-04-21 18:25 ` Gilles Chanteperdrix
2015-04-21 18:25 ` Jan Kiszka
2015-04-21 18:35 ` Gilles Chanteperdrix
2015-04-21 18:44 ` Gilles Chanteperdrix
2015-04-21 16:38 ` Gilles Chanteperdrix
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=20150421163247.GZ7109@hermes.click-hack.org \
--to=gilles.chanteperdrix@xenomai.org \
--cc=jan.kiszka@siemens.com \
--cc=xenomai@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.