X-Recipient: archive-cygwin AT delorie DOT com X-Spam-Check-By: sourceware.org Message-ID: Date: Mon, 1 Dec 2008 21:41:53 +0100 From: "kalle ko" To: cygwin AT cygwin DOT com Subject: pthread_rwlock_rdlock() returns EDEADLK when trying to call it > once MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Possible bug in winsup/cygwin/thread.cc: ... int pthread_rwlock::rdlock () { int result = 0; struct RWLOCK_READER *reader; pthread_t self = pthread::self (); mtx.lock (); if (lookup_reader (self)) { result = EDEADLK; goto DONE; } ... It doesn't seem like it's possible for a thread to call pthread_rwlock_rdlock() multiple times, and if a thread does, it will get a EDEADLK error. http://opengroup.org/onlinepubs/007908799/xsh/pthread_rwlock_rdlock.html: ... A thread may hold multiple concurrent read locks on rwlock (that is, successfully call the pthread_rwlock_rdlock() function n times). ... [EDEADLK] The current thread already owns the read-write lock for writing. ... I noticed this when one of my tests failed. -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/