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: pthreads, cygwin and pthread_mutex_lock not blocking



On May 27, 2005, at 1:28 PM, Christopher Faylor wrote:


On Fri, May 27, 2005 at 10:57:34AM -0700, Peter Rehley wrote:
I'm trying to use pthread in cygwin, and I'm expecting the function
pthread_mutex_lock to block when used.  However it is returning error
45 (EDEADLK).    I'm using a static initializer for the thread so the
mutex is type PTHREAD_MUTEX_DEFAULT.
When I look through the pthread code I see that PTHREAD_MUTEX_DEFAULT
is set to PTHREAD_MUTEX_ERRORCHECK,
When I do the same on linux or soloris, the pthread_mutex_lock blocks,
and looking in the pthread.h file on those systems see that  the
default is set to PTHREAD_MUTEX_NORMAL.

Why is cygwin using PTHREAD_MUTEX_ERRORCHECK as the default?  And what
problems might occur if PTHREAD_MUTEX_DEFAULT is set to
PTHREAD_MUTEX_NORMAL?

Why not just try it and report the results?
Done. Hangs at WaitForSingleObject.

The application that I'm working on is rpm 4.3.3, the problem that we are seeing is running scripts. When set the default is set to ERRORCHECK, the parent process doesn't wait and removes the script before the child has chance to run it.

When default is NORMAL, the parents hangs waiting for the child. The app uses SIGCHLD to signal the parent when the child dies, and the signal handler for sigchld releases the mutex. This should cause the WaitForSingleObject to release and the application should continue to run. For whatever reason, the signal isn't being seen by the parent.

Enjoy,
Peter
-------------------------------
A Møøse once bit my sister


-- 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/


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