On Mon, Jan 07, 2013 at 01:43:17AM -0500, Christopher Faylor wrote: >On Sun, Jan 06, 2013 at 06:24:47PM +0100, Antti Kantee wrote: >>[I'd submit this to cygwin-patches, but the web page says only >>subscribers can post to that list, so please bear with me for this >>simple issue] >> >>Hi, >> >>Calling pthread_rwlock_tryrdlock() twice from the same thread always >>fails with EBUSY the second time. See attached test.c. Replacing the >>second tryrdlock() with rdlock() makes the call succeed, leading me to >>believe there is a bug in tryrdlock(). >> >>Assuming I was looking at the correct source file, the attached patch >>should fix the issue. I'm not sure why the lookup_reader() call was >>there in the first place; perhaps a remnant from a time when recursive >>read locking was not supported? >> >>While looking at tryrdlock(), the handling of ULONG_MAX also seems >>wrong, as you'd probably want to return EAGAIN instead of allocating >>another reader structure. However, that problem is arguably more of an >>academic issue and therefore I didn't touch it in my patch. > >Thanks for the analysis and patch. I've made a few more changes to this >function and should have everything checked in tomorrow.
This is checked in and will be in the next snapshot at: http://cygwin.com/snapshots/ -- 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