From: Philippe Gerum <rpm@xenomai.org>
To: Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org>
Cc: Doug Brunner <dbrunner@ebus.com>, xenomai@xenomai.org
Subject: Re: [Xenomai] Queue corruption from XDDP in Xenomai 2.6.1
Date: Sun, 23 Sep 2012 16:06:20 +0200 [thread overview]
Message-ID: <505F175C.2020702@xenomai.org> (raw)
In-Reply-To: <5058F5F6.2060708@xenomai.org>
On 09/19/2012 12:30 AM, Gilles Chanteperdrix wrote:
> On 09/09/2012 01:03 PM, Philippe Gerum wrote:
>
>> On 09/06/2012 07:53 AM, Doug Brunner wrote:
>>> It looks like the bug I wrote about back in June still exists in Xenomai
>>> 2.6.1 (with Linux 3.2.21). I ran the same test case (an RT thread opens
>>> an XDDP socket, then a Linux thread opens its end of the pipe, then the
>>> RT thread stops, then with the Linux thread still holding its end of the
>>> pipe another RT thread tries to open an XDDP socket with the same minor
>>> number). With Xenomai queue and I-pipe debugging enabled, I got a report
>>> of a corrupted queue. I've attached my config, test case, and serial
>>> console log.
>>>
>>> So far I haven't found anything in the XDDP or underlying xnpipe_* code
>>> that would suggest why this is happening. However something is
>>> definitely going wrong, since xnpipe_minor_free should not be called
>>> until my Linux task closes its end of the pipe, so the call by the
>>> second RT thread to open the pipe should fail with -EBUSY. Any thoughts
>>> on why this might be happening?
>>>
>>
>> Yes, please have a look at the commit log there:
>> http://git.xenomai.org/?p=xenomai-2.6.git;a=commit;h=283c5f6eae1d1d7c65073e2f30fd40abdcf2c1ca
>>
>> This patch should fix the issue raised by the test case you sent
>> (actually, it does, it was very useful to spot the problem - thanks for
>> this).
>
>
> Hi Philippe,
>
> I am using a test case which should be about the same as Doug's, however when running the test
> case twice, the second test fails at bind with EADDRINUSE.
This is intended, the port remains bound until both ends
have released it, e.g.:
diff --git a/src/testsuite/regression/posix/xddp_test.c b/src/testsuite/regression/posix/xddp_test.c
index 1c9389f..c75f8c1 100644
--- a/src/testsuite/regression/posix/xddp_test.c
+++ b/src/testsuite/regression/posix/xddp_test.c
@@ -79,6 +79,7 @@ void *regular_thread(void *arg)
char buf[128], *devname;
int fd, ret;
+reset:
check_unix(asprintf(&devname, "/dev/rtp%d", XDDP_PORT));
fd = check_unix(open(devname, O_RDWR));
@@ -87,7 +88,11 @@ void *regular_thread(void *arg)
for (;;) {
/* Get the next message from realtime_thread. */
ret = read(fd, buf, sizeof(buf));
-
+ if (ret < 0) {
+ fprintf(stderr, "read: %m\n");
+ close(fd);
+ goto reset;
+ }
usleep(10000);
}
--
Philippe.
next prev parent reply other threads:[~2012-09-23 14:06 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-06 5:53 [Xenomai] Queue corruption from XDDP in Xenomai 2.6.1 Doug Brunner
2012-09-09 11:03 ` Philippe Gerum
2012-09-10 0:19 ` Doug Brunner
2012-09-11 4:12 ` Doug Brunner
2012-09-11 7:46 ` Gilles Chanteperdrix
2012-09-18 22:30 ` Gilles Chanteperdrix
2012-09-23 14:06 ` Philippe Gerum [this message]
2012-09-23 14:07 ` Gilles Chanteperdrix
2012-09-23 14:09 ` Philippe Gerum
2012-09-23 14:11 ` Gilles Chanteperdrix
2012-09-23 14:18 ` Philippe Gerum
2012-09-23 14:21 ` Philippe Gerum
2012-09-23 14:25 ` Philippe Gerum
2012-09-23 14:26 ` 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=505F175C.2020702@xenomai.org \
--to=rpm@xenomai.org \
--cc=dbrunner@ebus.com \
--cc=gilles.chanteperdrix@xenomai.org \
--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.