From: Philippe Gerum <rpm@xenomai.org>
To: stephane ancelot <sancelot@domain.hid>
Cc: "xenomai@xenomai.org" <xenomai@xenomai.org>
Subject: Re: [Xenomai-core] rt_pipe_open / rt_pipe_delete bug
Date: Mon, 14 Jun 2010 18:08:56 +0200 [thread overview]
Message-ID: <1276531736.18906.193.camel@domain.hid> (raw)
In-Reply-To: <op.veaoxplznuwxn3@domain.hid>
On Mon, 2010-06-14 at 16:52 +0200, stephane ancelot wrote:
> H
> Le Thu, 03 Jun 2010 16:35:50 +0200, Andreas Glatz
> <andreasglatz@domain.hid> a écrit:
>
> > On Thu, Jun 03, 2010 at 04:09:38AM -0400, stephane ancelot wrote:
> >> Hi,
> >>
> >> tryied in v2.4.10 :
> >>
> >>
> >> I have opened a /dev/rtp7 pipe , and deleted it.
> >>
> >> if I launch again the same program, rt_pipe_open replies with -EBUSY
> >> ....
> >>
> >
> > Can you describe the sequence how you are invoking
> > rt_pipe_open()/open()/rt_pipe_delete()?
> >
> > If the following description applies to you then you discovered what
> > we've discovered
> > before and there is no easy fix for that as far as I know.
> >
> > 1) create pipe with rt_pipe_open()
> > 2) connect to it by opening /dev/rtp7 with open()
> > 3) delete pipe with rt_pipe_delete() (for example by killing the Xenomai
> > application)
> > 4) create same pipe again with rt_pipe_open() (for example by restarting
> > the
> > Xenomai application with /dev/rtp7 is still open)
> >
> > --> rt_pipe_open() reports an error
> >
>
> Yes, but it has worked in xeno 2.1 ....
2.1 was utterly broken wrt pipe session handling, it did not work, at
all. It just created opportunities to trash your kernel memory badly
upon rt-side closure, by allowing userland to work on a deallocated pipe
while in a race window.
Now both ends are in sync, and the rt-pipe is allowed to linger until
userland is really done with it, i.e. when it has closed its endpoint.
You will get -EBUSY on the rt-side until that point is reached.
> Is there a work around ? only
> hacking it ?
Fix your app on the userland side. It should receive a zero-length read
upon rt-side closure. You just need to check for this, then close this
endpoint and reopen it right after if need be.
> Best Regards
> S.Ancelot
>
> > Andreas
>
> _______________________________________________
> Xenomai-core mailing list
> Xenomai-core@domain.hid
> https://mail.gna.org/listinfo/xenomai-core
--
Philippe.
prev parent reply other threads:[~2010-06-14 16:08 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-03 8:09 [Xenomai-core] rt_pipe_open / rt_pipe_delete bug stephane ancelot
2010-06-03 14:35 ` Andreas Glatz
2010-06-14 14:52 ` stephane ancelot
2010-06-14 16:08 ` Philippe Gerum [this message]
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=1276531736.18906.193.camel@domain.hid \
--to=rpm@xenomai.org \
--cc=sancelot@domain.hid \
--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.