This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: 1.7.8: mq_timedreceive() blocks, mq_receive() with O_NONBLOCK blocks, too
Hi Corinna,
thanks for the quick fix, I tested both mq_timedreceive and mq_timedsend and they are working as expected.
Sorry for the false alarm though, I overlooked that those are two parameters.
This should be the correct call:
msgQueue = mq_open(QUEUE_NAME,
O_RDWR | O_CREAT | O_EXCL | O_NONBLOCK,
S_IRWXU | S_IRWXG,
&attrQueue);
Since I always try to eliminate any influence from my project and to track down the source of the problem, a test case usually comes natural.
Manuel
> -----Original Message-----
> From: Corinna Vinschen
> Sent: Thursday, March 03, 2011 5:32 PM
>
> On Mar 3 12:13, Corinna Vinschen wrote:
> > On Mar 3 10:57, Manuel Wienand wrote:
> > > Hi,
> > >
> > > I have a problem with the mqueues.
> > > If I use mq_timedreceive() and do not set O_NONBLOCK,
> mq_timedreceive() blocks forever and eats 100% of one cpu core.
> > > If I use mq_receive() and set O_NONBLOCK, mq_receive() blocks
> forever (0% cpu).
> >
> > Thanks for the testcase! I can reproduce it. I'm a bit out of
> > spare time right now, but I think I'll have a fix soon. Stay tuned.
>
> Ok, I applied a patch to fix the mq_timedreceive problem. mq_timedsend
> was affected by this problem as well. I'm just generating a new
> developer snapshot for testing.
>
> The other problem is a PEBKAC, though. Here's the open call from your
> testcase, which you used to reproduce the mq_receive block if
> O_NONBLOCK
> is given. For clearness, I split the arguments into multiple lines:
>
> msgQueue = mq_open(QUEUE_NAME,
> O_RDWR | O_CREAT | O_EXCL,
> S_IRWXU | S_IRWXG | O_NONBLOCK,
> &attrQueue);
>
> Do you see the problem?
>
> Anyway, in the meantime the new snapshot has been uploaded. Please try
> the latest developer snapshot from http://cygwin.com/snapshots/
>
> Thanks again for the testcase. Debugging and fixing bugs is a lot more
> fun with those.
>
>
> Corinna
>
> --
> Corinna Vinschen Please, send mails regarding Cygwin
> to
> Cygwin Project Co-Leader cygwin AT cygwin DOT com
> Red Hat
>
> --
> Problem reports: http://cygwin.com/problems.html
> FAQ: http://cygwin.com/faq/
> Documentation: http://cygwin.com/docs.html
> Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
>
>
> --
> This message has been scanned for viruses and
> dangerous content by MailScanner, and is
> believed to be clean.