From: Corinna Vinschen <corinna-cygwin@cygwin.com>
To: cygwin@cygwin.com
Subject: Re: STC for libapr1 failure
Date: Sat, 27 Aug 2011 20:37:00 -0000 [thread overview]
Message-ID: <20110827203706.GA15411@calimero.vinschen.de> (raw)
In-Reply-To: <20110826111509.GH10490@calimero.vinschen.de>
On Aug 26 13:15, Corinna Vinschen wrote:
> On Aug 25 17:39, David Rothenberger wrote:
> > For a while now, the test cases that come with libapr1 have been
> > bombing with this message:
> >
> > *** fatal error - NtCreateEvent(lock): 0xC0000035
> >
> > I finally took some time to investigate and have extracted a STC
> > that demonstrates the problem.
>
> Thanks a lot for the testcase. In theory, the NtCreateEvent call should
> not have happened at all, since it's called under lock, and the code
> around that should have made sure that the object doesn't exist at the
> time.
>
> After a few hours of extrem puzzlement, I now finally know what happens.
> It's kinda hard to explain.
>
> A lock on a file is represented by an event object. Process A holds the
> lock corresponding with event a. Process B tries to lock, but the lock
> of process A blocks that. So B now waits for event a, until it gets
> signalled. Now A unlocks, thus signalling event a and closing the handle
> afterwards. But A's time slice isn't up yet, so it tries again to lock
> the file, before B returned from the wait for a. And here a wrong
> condition fails to recognize the situation. It finds the event object,
> but since it's recognized as "that's me", it doesn't treat the event as
> a blocking factor. This in turn is the allowance to create its own lock
> event object. However, the object still exists, since b has still an
> open handle to it. So creating the event fails, and rightfully so.
>
> What I don't have is an idea how to fix this problem correctly. I have
> to think about that. Stay tuned.
Please test the latest snapshot. It should fix this problem, as well as
a starvation problem with signals (and, fwiw, thread cancel events) in
flock, lockf, and POSIX fcntl locks.
Thanks again for the testcase. It was very helpful to test both problems.
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
next prev parent reply other threads:[~2011-08-27 20:37 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-26 0:39 David Rothenberger
2011-08-26 11:16 ` Corinna Vinschen
2011-08-27 20:37 ` Corinna Vinschen [this message]
2011-08-27 22:27 ` David Rothenberger
2011-08-29 13:55 ` Corinna Vinschen
2011-08-29 17:09 ` David Rothenberger
2012-02-14 8:00 David Rothenberger
2012-02-14 8:07 ` David Rothenberger
2012-02-14 14:03 ` Corinna Vinschen
2012-02-14 14:46 ` Corinna Vinschen
2012-02-14 17:58 ` David Rothenberger
2012-02-14 18:25 ` Corinna Vinschen
2012-02-14 21:43 ` David Rothenberger
2012-02-15 15:39 ` Corinna Vinschen
2012-02-15 19:39 ` David Rothenberger
2012-02-15 20:46 ` Corinna Vinschen
2012-02-15 21:16 ` David Rothenberger
2012-02-15 21:20 ` Corinna Vinschen
2012-02-15 22:14 ` David Rothenberger
2012-02-16 14:11 ` Corinna Vinschen
2012-02-16 15:57 ` David Rothenberger
2012-02-16 16:06 ` Corinna Vinschen
2012-02-18 21:52 ` David Rothenberger
2012-02-20 14:19 ` Corinna Vinschen
2012-02-20 20:15 ` David Rothenberger
2012-02-21 1:29 ` Yaakov (Cygwin/X)
2012-02-21 8:59 ` Corinna Vinschen
2012-02-21 17:10 ` Corinna Vinschen
2012-02-23 14:20 ` Corinna Vinschen
2012-02-23 18:43 ` Achim Gratz
2012-02-24 3:49 ` Yaakov (Cygwin/X)
2012-02-24 8:15 ` Corinna Vinschen
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=20110827203706.GA15411@calimero.vinschen.de \
--to=corinna-cygwin@cygwin.com \
--cc=cygwin@cygwin.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).