Message94901
It turns out that the __del__ method in _threading_local.py tries to
call threading.enumerate() which itself takes the _active_limbo_lock.
The problem is that __del__ can be called at any point in time (because
of the GC), including at a point where the same thread has already taken
the lock. The obvious fix is to bypass enumerate().
(an alternate fix would be to use an RLock for _active_limbo_lock, but
it could have unforeseen consequences, such as performance ones) |
|
Date |
User |
Action |
Args |
2009-11-04 20:23:12 | pitrou | set | recipients:
+ pitrou, gps |
2009-11-04 20:23:12 | pitrou | set | messageid: <1257366192.74.0.459548396253.issue7264@psf.upfronthosting.co.za> |
2009-11-04 20:23:10 | pitrou | link | issue7264 messages |
2009-11-04 20:23:10 | pitrou | create | |
|