On 09/23/2012 04:11 PM, Gilles Chanteperdrix wrote: > On 09/23/2012 04:09 PM, Philippe Gerum wrote: > >> On 09/23/2012 04:07 PM, Gilles Chanteperdrix wrote: >>> On 09/23/2012 04:06 PM, Philippe Gerum wrote: >>> >>>> 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.: >>> >>> >>> Well, should not the port be released when the process finishes? >>> >> >> You have two threads involved, there is no finishing process in your test. >> > > > When I launch the test, it terminates saying "test passed", the two > threads dead. Then I launch the test again, and get an error EADDRINUSE > at bind. >
Not here, it just waits on sigsuspend, looping in the non-rt thread. Closing the rtdm fildes manually via /proc/xenomai/rtdm would probably "fix" the issue on your side. -- Philippe. _______________________________________________ Xenomai mailing list Xenomai@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai