mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 21:21:22 +00:00 
			
		
		
		
	gh-130091: Reorder _PyThreadState_Attach to avoid data race (gh-130092)
				
					
				
			This moves `tstate_activate()` down to avoid a data race in the free threading build on the `_PyRuntime`'s thread-local `autoTSSkey`. This key is deleted during runtime finalization, which may happen concurrently with a call to `_PyThreadState_Attach`. The earlier `tstate_try/wait_attach` ensures that the thread is blocked before it attempts to access the deleted `autoTSSkey`. This fixes a TSAN reported data race in `test_threading.test_import_from_another_thread`.
This commit is contained in:
		
							parent
							
								
									e06bebb87e
								
							
						
					
					
						commit
						7aeaa5af2c
					
				
					 1 changed files with 1 additions and 2 deletions
				
			
		|  | @ -2099,11 +2099,10 @@ _PyThreadState_Attach(PyThreadState *tstate) | |||
| 
 | ||||
|         // XXX assert(tstate_is_alive(tstate));
 | ||||
|         current_fast_set(&_PyRuntime, tstate); | ||||
|         tstate_activate(tstate); | ||||
| 
 | ||||
|         if (!tstate_try_attach(tstate)) { | ||||
|             tstate_wait_attach(tstate); | ||||
|         } | ||||
|         tstate_activate(tstate); | ||||
| 
 | ||||
| #ifdef Py_GIL_DISABLED | ||||
|         if (_PyEval_IsGILEnabled(tstate) && !tstate->_status.holds_gil) { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Sam Gross
						Sam Gross