mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	Merged revisions 76119 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
................
  r76119 | antoine.pitrou | 2009-11-05 14:49:14 +0100 (jeu., 05 nov. 2009) | 10 lines
  Merged revisions 76117 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk
  ........
    r76117 | antoine.pitrou | 2009-11-05 14:42:29 +0100 (jeu., 05 nov. 2009) | 5 lines
    Issue #7264: Fix a possible deadlock when deallocating thread-local objects
    which are part of a reference cycle.
  ........
................
			
			
This commit is contained in:
		
							parent
							
								
									142d236442
								
							
						
					
					
						commit
						a954607cd3
					
				
					 3 changed files with 12 additions and 3 deletions
				
			
		|  | @ -217,10 +217,12 @@ def __del__(self): | |||
|         key = object.__getattribute__(self, '_local__key') | ||||
| 
 | ||||
|         try: | ||||
|             threads = list(threading.enumerate()) | ||||
|             # We use the non-locking API since we might already hold the lock | ||||
|             # (__del__ can be called at any point by the cyclic GC). | ||||
|             threads = threading._enumerate() | ||||
|         except: | ||||
|             # If enumerate fails, as it seems to do during | ||||
|             # shutdown, we'll skip cleanup under the assumption | ||||
|             # If enumerating the current threads fails, as it seems to do | ||||
|             # during shutdown, we'll skip cleanup under the assumption | ||||
|             # that there is nothing to clean up. | ||||
|             return | ||||
| 
 | ||||
|  |  | |||
|  | @ -798,6 +798,10 @@ def active_count(): | |||
| 
 | ||||
| activeCount = active_count | ||||
| 
 | ||||
| def _enumerate(): | ||||
|     # Same as enumerate(), but without the lock. Internal use only. | ||||
|     return list(_active.values()) + list(_limbo.values()) | ||||
| 
 | ||||
| def enumerate(): | ||||
|     with _active_limbo_lock: | ||||
|         return list(_active.values()) + list(_limbo.values()) | ||||
|  |  | |||
|  | @ -40,6 +40,9 @@ Core and Builtins | |||
| Library | ||||
| ------- | ||||
| 
 | ||||
| - Issue #7264: Fix a possible deadlock when deallocating thread-local objects | ||||
|   which are part of a reference cycle. | ||||
| 
 | ||||
| - Issue #6896: mailbox.Maildir now invalidates its internal cache each time | ||||
|   a modification is done through it.  This fixes inconsistencies and test | ||||
|   failures on systems with slightly bogus mtime behaviour. | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Antoine Pitrou
						Antoine Pitrou