[python-ldap] mutex bug in 2.4.4

Michael Ströder michael at stroeder.com
Wed Nov 23 12:24:54 CET 2011


Adam,

Side note: Mailing list python-ldap at python.org only accepts postings by
subscribers. I had to manually approve your posting. So please subscribe to
the mailing list if you want to follow the discussion.

Malinowski, Adam wrote:
> There appears to be a bug in stable 2.4.4 version of python-module when used
> in multi-threaded python environment.  I haven’t found any info on the mailing
> list about this, so I thought it should be reported.
> 
> A different object is used in lock acquire() and release(), which leads to
> call to release() always fail, also other blocked callers could be stuck
> forever. 

How did you come to this conclusion? Do you have a traceback of the calls?

> Perhaps the change was never tested in multi-threaded python.

My web2ldap is a multi-threaded web app where the same LDAPObject instances
get possibly used by multiple threads. IMO it works as designed. Not sure
whether this hits all locking conditions though.

> Falling back to using the global module mutex lock seems to fix it.

Sorry, your patch does not make sense to me. _ldap_function_call() takes an
instance of threading.Lock or compatible. If lock is None no locking is done.
Your patch completely changes that behaviour and also you're not releasing
ldap._ldap_module_lock.

Ciao, Michael.


More information about the python-ldap mailing list