mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	[3.14] gh-136421: Load _datetime static types during interpreter initialization (GH-136583) (GH-136943)
				
					
				
			gh-136421: Load `_datetime` static types during interpreter initialization (GH-136583)
`_datetime` is a special module, because it's the only non-builtin C extension that contains static types. As such, it would initialize static types in the module's execution function, which can run concurrently. Since static type initialization is not thread-safe, this caused crashes. This fixes it by moving the initialization of `_datetime`'s static types to interpreter startup (where all other static types are initialized), which is already properly protected through other locks.
(cherry picked from commit a10960699a)
Co-authored-by: Peter Bierma <zintensitydev@gmail.com>
			
			
This commit is contained in:
		
							parent
							
								
									718fc5b139
								
							
						
					
					
						commit
						ecd97caaf5
					
				
					 8 changed files with 111 additions and 95 deletions
				
			
		|  | @ -760,6 +760,11 @@ pycore_init_types(PyInterpreterState *interp) | |||
|         return status; | ||||
|     } | ||||
| 
 | ||||
|     status = _PyDateTime_InitTypes(interp); | ||||
|     if (_PyStatus_EXCEPTION(status)) { | ||||
|         return status; | ||||
|     } | ||||
| 
 | ||||
|     return _PyStatus_OK(); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Miss Islington (bot)
						Miss Islington (bot)