This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: 1.7.8: mq_timedreceive() blocks, mq_receive() with O_NONBLOCK blocks, too

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,

Do you see the problem?

Anyway, in the meantime the new snapshot has been uploaded.  Please try
the latest developer snapshot from

Thanks again for the testcase.  Debugging and fixing bugs is a lot more
fun with those.


Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

Problem reports:
Unsubscribe info:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]