Hi,

In my multi-threaded program I am using "pthread_rwlock_rdlock" to lock 
read/write mutex which is initialized with "PTHREAD_MUTEX_ERRORCHECK" 
Under load, call to "pthread_rwlock_rdlock" hangs indefinitely even though 
there are no writers holding the lock. Even after i stop load on my program, 
call is still hung. I tried to take the mutex condition when it was locked, 
please find here:

(gdb) p m_lock
$2 = {__data = {__lock = 0, __nr_readers = 1, __readers_wakeup = 60, 
__writer_wakeup = 1230, __nr_readers_queued = 2, __nr_writers_queued = 48,
    __writer= 0, __pad1 = 0, __pad2 = 0, __pad3 = 0, __flags = 0},
  __size = 
"\000\000\000\000\001\000\000\000<\000\000\000\316\004\000\000\002\000\000\000\060",
 '\000' <repeats 34 times>, __align = 4294967296}


After that I changed my lock from "pthread_rwlock_rdlock" 
to "pthread_rwlock_tryrdlock" and under load this new lock used to return 
EAGAIN sometimes. 

My question is why "pthread_rwlock_rdlock" hangs indefinitely. If there are 
more readers then it should return EAGAIN.

Any help on this would be appreciated.


OS Details: Red Hat Enterprise Linux Server release 6.0 (Santiago)
Linux rwcdtgxb0406 2.6.32-71.el6.x86_64 #1 SMP Wed Sep 1 01:33:01 EDT 2010 
x86_64 x86_64 x86_64 GNU/Linux


Thank you,
Jaydeep
_______________________________________________
rhelv6-list mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/rhelv6-list

Reply via email to