From b08ea9a561e93e421e55b6eba5da350e6919708e Mon Sep 17 00:00:00 2001 From: Eric Snow Date: Thu, 8 Jun 2023 15:05:47 -0600 Subject: [3.12] gh-100227: Lock Around Adding Global Audit Hooks (gh-105515) (gh-105525) The risk of a race with this state is relatively low, but we play it safe anyway. (cherry picked from commit e822a676f1f3bef6c5413e9b856db481c08ac2a5) --- Doc/data/python3.12.abi | 2540 +++++++++++++++++++------------------ Include/internal/pycore_runtime.h | 5 +- Python/pystate.c | 7 +- Python/sysmodule.c | 56 +- 4 files changed, 1321 insertions(+), 1287 deletions(-) diff --git a/Doc/data/python3.12.abi b/Doc/data/python3.12.abi index d6680f9..52618bc 100644 --- a/Doc/data/python3.12.abi +++ b/Doc/data/python3.12.abi @@ -1702,7 +1702,7 @@ - + @@ -2530,7 +2530,7 @@ - + @@ -3705,70 +3705,70 @@ - - - + + + - - + + - + - - - - + + + + - + - - + + - - + + - + - - + + - + - + - - + + - - - - + + + + - - - + + + - - + + - - + + @@ -11112,7 +11112,7 @@ - + @@ -11913,7 +11913,7 @@ - + @@ -11994,7 +11994,7 @@ - + @@ -13351,7 +13351,7 @@ - + @@ -13380,7 +13380,7 @@ - + @@ -13428,7 +13428,7 @@ - + @@ -13456,7 +13456,7 @@ - + @@ -13536,7 +13536,7 @@ - + @@ -13544,7 +13544,7 @@ - + @@ -13552,7 +13552,7 @@ - + @@ -13560,7 +13560,7 @@ - + @@ -13568,7 +13568,7 @@ - + @@ -13576,7 +13576,7 @@ - + @@ -13584,7 +13584,7 @@ - + @@ -13592,7 +13592,7 @@ - + @@ -13600,7 +13600,7 @@ - + @@ -13608,7 +13608,7 @@ - + @@ -13616,7 +13616,7 @@ - + @@ -13624,7 +13624,7 @@ - + @@ -13632,7 +13632,7 @@ - + @@ -15707,7 +15707,7 @@ - + @@ -15715,7 +15715,7 @@ - + @@ -15723,7 +15723,7 @@ - + @@ -15731,7 +15731,7 @@ - + @@ -15739,7 +15739,7 @@ - + @@ -15747,7 +15747,7 @@ - + @@ -15755,7 +15755,7 @@ - + @@ -15763,7 +15763,7 @@ - + @@ -15771,7 +15771,7 @@ - + @@ -15779,7 +15779,7 @@ - + @@ -15787,7 +15787,7 @@ - + @@ -15795,7 +15795,7 @@ - + @@ -15803,7 +15803,7 @@ - + @@ -15811,7 +15811,7 @@ - + @@ -15819,7 +15819,7 @@ - + @@ -15827,7 +15827,7 @@ - + @@ -15835,7 +15835,7 @@ - + @@ -16000,7 +16000,7 @@ - + @@ -16011,7 +16011,7 @@ - + @@ -16544,7 +16544,7 @@ - + @@ -16636,25 +16636,25 @@ - + - - - - - + + - - + + - - + + - + + + + - - + + @@ -16679,12 +16679,20 @@ + + + + + + + + - + @@ -16699,7 +16707,7 @@ - + @@ -16707,9 +16715,9 @@ - + - + @@ -16723,9 +16731,9 @@ - + - + @@ -16734,7 +16742,7 @@ - + @@ -16748,7 +16756,7 @@ - + @@ -16764,10 +16772,10 @@ - + - + @@ -16779,28 +16787,28 @@ - + - + - + - + - + - + - + @@ -16819,7 +16827,7 @@ - + @@ -16835,12 +16843,12 @@ - + - + @@ -16860,13 +16868,13 @@ - + - + @@ -16875,17 +16883,17 @@ - - + + - + - + - - + + @@ -16893,12 +16901,12 @@ - + - + - + @@ -16912,7 +16920,7 @@ - + @@ -16922,13 +16930,13 @@ - + - + - + @@ -16949,11 +16957,11 @@ - - + + - - + + @@ -16967,18 +16975,18 @@ - - + + - + - + - + @@ -16986,8 +16994,8 @@ - - + + @@ -16995,11 +17003,11 @@ - + - + - + @@ -17008,10 +17016,10 @@ - - + + - + @@ -17020,10 +17028,10 @@ - + - + @@ -17035,21 +17043,21 @@ - + - + - + - - - - - - - + + + + + + + @@ -17072,24 +17080,24 @@ - + - + - + - + - - + + - + - + @@ -17107,25 +17115,25 @@ - - - - - - + + + + + + - - + + - - + + @@ -17133,9 +17141,9 @@ - - - + + + @@ -17149,36 +17157,36 @@ - + - + - + - + - + - + - + - + - + - + @@ -17186,7 +17194,7 @@ - + @@ -17194,10 +17202,10 @@ - + - + @@ -17205,10 +17213,10 @@ - + - + @@ -17225,7 +17233,7 @@ - + @@ -17233,18 +17241,18 @@ - + - + - + - + - + @@ -17252,7 +17260,7 @@ - + @@ -17260,7 +17268,7 @@ - + @@ -17271,8 +17279,8 @@ - - + + @@ -17283,7 +17291,7 @@ - + @@ -17291,24 +17299,24 @@ - + - + - + - - - - + + + + @@ -17318,20 +17326,20 @@ - + - + - - - + + + - + @@ -17341,48 +17349,48 @@ - - - + + + - - - - - - - - - - - + + + + + + + + + + + - - - - + + + + - - - - - - - - - - - - + + + + + + + + + + + + @@ -17405,7 +17413,7 @@ - + @@ -17413,7 +17421,7 @@ - + @@ -17458,163 +17466,163 @@ - + - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -17622,8 +17630,8 @@ - - + + @@ -17636,17 +17644,17 @@ - - + + - + - - + + @@ -17654,8 +17662,8 @@ - - + + @@ -17663,8 +17671,8 @@ - - + + @@ -17672,35 +17680,35 @@ - - + + - + - - + + - + - - + + - - + + @@ -17708,8 +17716,8 @@ - - + + @@ -17717,29 +17725,29 @@ - - + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -17777,7 +17785,7 @@ - + @@ -17807,22 +17815,22 @@ - + - + - + - + - + @@ -17873,13 +17881,13 @@ - + - + @@ -18172,7 +18180,7 @@ - + @@ -18203,7 +18211,7 @@ - + @@ -18254,7 +18262,7 @@ - + @@ -18264,7 +18272,7 @@ - + @@ -18275,7 +18283,7 @@ - + @@ -18285,7 +18293,7 @@ - + @@ -18348,7 +18356,7 @@ - + @@ -18369,7 +18377,7 @@ - + @@ -18512,27 +18520,27 @@ - + - + - + - + @@ -18574,7 +18582,7 @@ - + @@ -18587,11 +18595,11 @@ - + - + @@ -18608,24 +18616,24 @@ - + - - + + - + - + - - + + @@ -18634,7 +18642,7 @@ - + @@ -18653,18 +18661,18 @@ - + - + - + - + @@ -18677,32 +18685,32 @@ - + - + - + - + - + - + @@ -18710,28 +18718,28 @@ - + - - + + - + - + - - - + + + @@ -18742,8 +18750,8 @@ - - + + @@ -18755,7 +18763,7 @@ - + @@ -18773,22 +18781,22 @@ - + - + - + - + @@ -18833,9 +18841,9 @@ - - - + + + @@ -18851,7 +18859,7 @@ - + @@ -18862,7 +18870,7 @@ - + @@ -18875,13 +18883,13 @@ - + - + @@ -18895,27 +18903,27 @@ - + - + - + - + - + @@ -18923,8 +18931,8 @@ - - + + @@ -18953,22 +18961,22 @@ - + - + - + - - - - + + + + @@ -18982,39 +18990,39 @@ - - + + - + - - + + - + - + - + - - - + + + - + - + @@ -19022,189 +19030,189 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - - + + - + - + - + - - - + + + - + - + - + - + - - + + - + - - + + @@ -19224,43 +19232,43 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -19275,16 +19283,16 @@ - + - + - + @@ -19302,22 +19310,22 @@ - + - + - + - + - + @@ -19356,17 +19364,17 @@ - - - + + + - + - + @@ -19375,7 +19383,7 @@ - + @@ -19395,7 +19403,7 @@ - + @@ -19403,25 +19411,25 @@ - + - - - + + + - - + + - - + + @@ -19437,20 +19445,20 @@ - - + + - - - - - - + + + + + + @@ -19458,11 +19466,11 @@ - + - - + + @@ -19470,11 +19478,11 @@ - + - - + + @@ -19482,11 +19490,11 @@ - + - - + + @@ -19494,11 +19502,11 @@ - + - - + + @@ -19530,10 +19538,10 @@ - + - + @@ -19548,42 +19556,42 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -19595,51 +19603,51 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -19647,7 +19655,7 @@ - + @@ -19658,15 +19666,15 @@ - + - + - + @@ -19674,7 +19682,7 @@ - + @@ -19685,7 +19693,7 @@ - + @@ -19693,20 +19701,20 @@ - + - + - + - + @@ -19714,7 +19722,7 @@ - + @@ -19722,7 +19730,7 @@ - + @@ -19733,7 +19741,7 @@ - + @@ -19744,7 +19752,7 @@ - + @@ -19755,12 +19763,12 @@ - + - + @@ -19768,7 +19776,7 @@ - + @@ -19779,7 +19787,7 @@ - + @@ -19790,7 +19798,7 @@ - + @@ -19798,7 +19806,7 @@ - + @@ -19806,7 +19814,7 @@ - + @@ -19814,7 +19822,7 @@ - + @@ -19825,7 +19833,7 @@ - + @@ -19839,7 +19847,7 @@ - + @@ -19862,7 +19870,7 @@ - + @@ -19885,7 +19893,7 @@ - + @@ -19905,9 +19913,9 @@ - - - + + + @@ -19921,23 +19929,23 @@ - + - + - + - + - + @@ -19945,43 +19953,43 @@ - - - - + + + + - - - - - + + + + + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - + + @@ -20016,24 +20024,24 @@ - - - + + + - - - - - - - - + + + + + + + + - - - + + + @@ -20071,10 +20079,10 @@ - + - + @@ -20083,31 +20091,31 @@ - + - + - + - + - + - + @@ -20119,11 +20127,11 @@ - + - + @@ -20134,11 +20142,11 @@ - + - - + + @@ -20161,14 +20169,14 @@ - + - - + + @@ -20176,10 +20184,10 @@ - - + + - + @@ -20188,7 +20196,7 @@ - + @@ -20196,13 +20204,13 @@ - - + + - + - + @@ -20217,7 +20225,7 @@ - + @@ -20253,7 +20261,7 @@ - + @@ -20268,19 +20276,19 @@ - - + + - + - + @@ -20306,14 +20314,14 @@ - + - + - + @@ -20358,8 +20366,8 @@ - - + + @@ -20397,7 +20405,7 @@ - + @@ -20427,22 +20435,22 @@ - + - + - + - + - + @@ -20493,13 +20501,13 @@ - + - + @@ -20517,82 +20525,82 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + - - + + + - + - - - - - - - - - + + + + + + + + + + - - - - - - - - - + + + + + + + + - - - - - - - + + + + + + + - - - - - + + + + + - - + + - - - - + + + + @@ -20824,143 +20832,143 @@ - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -21090,14 +21098,14 @@ - - + + - + - + @@ -21115,9 +21123,9 @@ - - + + @@ -21212,7 +21220,7 @@ - + @@ -21286,7 +21294,7 @@ - + @@ -21394,7 +21402,7 @@ - + @@ -21476,7 +21484,7 @@ - + @@ -21942,7 +21950,7 @@ - + @@ -21950,30 +21958,30 @@ - - + + - + - + - - - - - + + + + + - - - - - + + + + + - + @@ -22013,38 +22021,38 @@ - - + + - + - + - + - + - + - - + + - - + + @@ -22098,7 +22106,7 @@ - + @@ -22199,16 +22207,16 @@ - + - + - + - + @@ -22222,17 +22230,17 @@ - - + + - + - - + + @@ -22246,8 +22254,8 @@ - - + + @@ -22258,8 +22266,8 @@ - - + + @@ -22267,16 +22275,16 @@ - + - + - - + + - + @@ -22294,8 +22302,8 @@ - - + + @@ -22333,8 +22341,8 @@ - - + + @@ -22342,46 +22350,46 @@ - + - + - + - - + + - - + + - + - - + + - + - + - + - + - + @@ -22417,23 +22425,23 @@ - - + + - + - + - + - + - - + + @@ -22443,8 +22451,8 @@ - - + + @@ -22452,16 +22460,16 @@ - - + + - + - + @@ -22479,7 +22487,7 @@ - + @@ -22488,7 +22496,7 @@ - + @@ -22511,7 +22519,7 @@ - + @@ -22529,7 +22537,7 @@ - + @@ -22580,23 +22588,23 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + @@ -22612,38 +22620,38 @@ - - + + - + - + - - + + - + - + - + - + - + @@ -22653,56 +22661,56 @@ - + - + - + - + - + - - - + + + - + - + - + - + - + @@ -22711,7 +22719,7 @@ - + @@ -22735,11 +22743,11 @@ - + - + @@ -23017,15 +23025,15 @@ - + - + - + @@ -23033,11 +23041,11 @@ - - - - - + + + + + @@ -23082,7 +23090,7 @@ - + @@ -23165,7 +23173,7 @@ - + @@ -23239,15 +23247,15 @@ - + - + - + @@ -23265,7 +23273,7 @@ - + @@ -23282,7 +23290,7 @@ - + @@ -23290,15 +23298,15 @@ - - - - - - - - - + + + + + + + + + @@ -23370,9 +23378,9 @@ - + - + @@ -23384,7 +23392,7 @@ - + @@ -23423,7 +23431,7 @@ - + @@ -23557,8 +23565,8 @@ - - + + @@ -23570,11 +23578,11 @@ - - - - - + + + + + @@ -23589,28 +23597,28 @@ - + - + - + - + - - + + @@ -23619,24 +23627,24 @@ - - + + - + - + - + - - + + @@ -23644,7 +23652,7 @@ - + @@ -23652,9 +23660,9 @@ - - - + + + @@ -23666,7 +23674,7 @@ - + @@ -23860,7 +23868,7 @@ - + @@ -23871,11 +23879,11 @@ - + - - + + @@ -23895,24 +23903,24 @@ - - - - - - - - - - - - + + + + + + + + + + + + - - + + - - + + @@ -23954,13 +23962,13 @@ - + - - + + @@ -23985,30 +23993,30 @@ - + - + - - + + - - + + - + - + @@ -24022,7 +24030,7 @@ - + @@ -24031,7 +24039,7 @@ - + @@ -24073,12 +24081,12 @@ - + - + @@ -24106,27 +24114,27 @@ - + - + - + - + - + @@ -24147,7 +24155,7 @@ - + @@ -24182,12 +24190,12 @@ - + - + @@ -24205,24 +24213,24 @@ - + - + - + - + - - - - - - + + + + + + @@ -24239,8 +24247,8 @@ - - + + @@ -24267,12 +24275,12 @@ - + - + @@ -24280,7 +24288,7 @@ - + @@ -24289,7 +24297,7 @@ - + @@ -24299,18 +24307,18 @@ - + - + - + - + @@ -24328,34 +24336,34 @@ - + - + - + - + - + - + - + - + - - - - + + + + @@ -24523,7 +24531,7 @@ - + @@ -24555,55 +24563,55 @@ - + - + - + - + - + - - - - + + + + - + - + - + - + - + - + - + - + - + @@ -24611,7 +24619,7 @@ - + @@ -24619,26 +24627,26 @@ - + - + - + - + - - + + - + @@ -24650,22 +24658,22 @@ - - - - - + + + + + - + - + - + @@ -24688,8 +24696,8 @@ - - + + @@ -24700,8 +24708,8 @@ - - + + @@ -24715,21 +24723,21 @@ - - - + + + - - - - - - - - - - - + + + + + + + + + + + @@ -24764,7 +24772,7 @@ - + @@ -24874,17 +24882,17 @@ - + - - + + - + @@ -25107,12 +25115,12 @@ - - + + - + @@ -25252,7 +25260,7 @@ - + @@ -25261,8 +25269,8 @@ - - + + @@ -25298,24 +25306,24 @@ - - + + - + - + - + @@ -25332,8 +25340,8 @@ - - + + @@ -25377,25 +25385,25 @@ - + - - + + - - - + + + - + @@ -25403,7 +25411,7 @@ - + @@ -25458,137 +25466,137 @@ - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - - + + + - + - + - + - + - - - - - - + + + + + + - - - - - - + + + + + + - - - + + + - - + + - - - + + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - - + + + - - + + @@ -25856,7 +25864,7 @@ - + @@ -25870,16 +25878,16 @@ - - + + - + - + @@ -25917,25 +25925,25 @@ - - - - - - - + + + + + + + - + - + - - + + - - + + @@ -25970,21 +25978,21 @@ - + - - + + - - + + @@ -26000,30 +26008,30 @@ - + - + - - + + - + - + - + - + @@ -26040,26 +26048,26 @@ - + - - + + - - + + - + @@ -26076,21 +26084,21 @@ - - + + - - + + - - + + @@ -26159,55 +26167,55 @@ - + - - + + - + - + - + - + - - + + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - + + + @@ -26223,26 +26231,26 @@ - + - + - + - + - - + + @@ -26255,7 +26263,7 @@ - + @@ -26273,31 +26281,31 @@ - + - + - + - + - + - + @@ -26342,7 +26350,7 @@ - + @@ -26367,7 +26375,7 @@ - + diff --git a/Include/internal/pycore_runtime.h b/Include/internal/pycore_runtime.h index 6e06e87..8f51e2d 100644 --- a/Include/internal/pycore_runtime.h +++ b/Include/internal/pycore_runtime.h @@ -143,7 +143,10 @@ typedef struct pyruntimestate { // is called multiple times. Py_OpenCodeHookFunction open_code_hook; void *open_code_userdata; - _Py_AuditHookEntry *audit_hook_head; + struct { + PyThread_type_lock mutex; + _Py_AuditHookEntry *head; + } audit_hooks; struct _py_object_runtime_state object_state; struct _Py_float_runtime_state float_state; diff --git a/Python/pystate.c b/Python/pystate.c index e3a010a..14ae165 100644 --- a/Python/pystate.c +++ b/Python/pystate.c @@ -380,7 +380,7 @@ _Py_COMP_DIAG_IGNORE_DEPR_DECLS static const _PyRuntimeState initial = _PyRuntimeState_INIT(_PyRuntime); _Py_COMP_DIAG_POP -#define NUMLOCKS 6 +#define NUMLOCKS 7 #define LOCKS_INIT(runtime) \ { \ &(runtime)->interpreters.mutex, \ @@ -389,6 +389,7 @@ _Py_COMP_DIAG_POP &(runtime)->unicode_state.ids.lock, \ &(runtime)->imports.extensions.mutex, \ &(runtime)->atexit.mutex, \ + &(runtime)->audit_hooks.mutex, \ } static int @@ -432,7 +433,7 @@ init_runtime(_PyRuntimeState *runtime, runtime->open_code_hook = open_code_hook; runtime->open_code_userdata = open_code_userdata; - runtime->audit_hook_head = audit_hook_head; + runtime->audit_hooks.head = audit_hook_head; PyPreConfig_InitPythonConfig(&runtime->preconfig); @@ -458,7 +459,7 @@ _PyRuntimeState_Init(_PyRuntimeState *runtime) initialization and interpreter initialization. */ void *open_code_hook = runtime->open_code_hook; void *open_code_userdata = runtime->open_code_userdata; - _Py_AuditHookEntry *audit_hook_head = runtime->audit_hook_head; + _Py_AuditHookEntry *audit_hook_head = runtime->audit_hooks.head; // bpo-42882: Preserve next_index value if Py_Initialize()/Py_Finalize() // is called multiple times. Py_ssize_t unicode_next_index = runtime->unicode_state.ids.next_index; diff --git a/Python/sysmodule.c b/Python/sysmodule.c index 33147f0..e6731e7 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -168,7 +168,7 @@ should_audit(PyInterpreterState *interp) if (!interp) { return 0; } - return (interp->runtime->audit_hook_head + return (interp->runtime->audit_hooks.head || interp->audit_hooks || PyDTrace_AUDIT_ENABLED()); } @@ -224,8 +224,11 @@ sys_audit_tstate(PyThreadState *ts, const char *event, goto exit; } - /* Call global hooks */ - _Py_AuditHookEntry *e = is->runtime->audit_hook_head; + /* Call global hooks + * + * We don't worry about any races on hooks getting added, + * since that would not leave is in an inconsistent state. */ + _Py_AuditHookEntry *e = is->runtime->audit_hooks.head; for (; e; e = e->next) { if (e->hookCFunction(event, eventArgs, e->userData) < 0) { goto exit; @@ -353,8 +356,12 @@ _PySys_ClearAuditHooks(PyThreadState *ts) _PySys_Audit(ts, "cpython._PySys_ClearAuditHooks", NULL); _PyErr_Clear(ts); - _Py_AuditHookEntry *e = runtime->audit_hook_head, *n; - runtime->audit_hook_head = NULL; + /* We don't worry about the very unlikely race right here, + * since it's entirely benign. Nothing else removes entries + * from the list and adding an entry right now would not cause + * any trouble. */ + _Py_AuditHookEntry *e = runtime->audit_hooks.head, *n; + runtime->audit_hooks.head = NULL; while (e) { n = e->next; PyMem_RawFree(e); @@ -362,6 +369,22 @@ _PySys_ClearAuditHooks(PyThreadState *ts) } } +static void +add_audit_hook_entry_unlocked(_PyRuntimeState *runtime, + _Py_AuditHookEntry *entry) +{ + if (runtime->audit_hooks.head == NULL) { + runtime->audit_hooks.head = entry; + } + else { + _Py_AuditHookEntry *last = runtime->audit_hooks.head; + while (last->next) { + last = last->next; + } + last->next = entry; + } +} + int PySys_AddAuditHook(Py_AuditHookFunction hook, void *userData) { @@ -389,29 +412,28 @@ PySys_AddAuditHook(Py_AuditHookFunction hook, void *userData) } } - _Py_AuditHookEntry *e = runtime->audit_hook_head; - if (!e) { - e = (_Py_AuditHookEntry*)PyMem_RawMalloc(sizeof(_Py_AuditHookEntry)); - runtime->audit_hook_head = e; - } else { - while (e->next) { - e = e->next; - } - e = e->next = (_Py_AuditHookEntry*)PyMem_RawMalloc( + _Py_AuditHookEntry *e = (_Py_AuditHookEntry*)PyMem_RawMalloc( sizeof(_Py_AuditHookEntry)); - } - if (!e) { if (tstate != NULL) { _PyErr_NoMemory(tstate); } return -1; } - e->next = NULL; e->hookCFunction = (Py_AuditHookFunction)hook; e->userData = userData; + if (runtime->audit_hooks.mutex == NULL) { + /* The runtime must not be initailized yet. */ + add_audit_hook_entry_unlocked(runtime, e); + } + else { + PyThread_acquire_lock(runtime->audit_hooks.mutex, WAIT_LOCK); + add_audit_hook_entry_unlocked(runtime, e); + PyThread_release_lock(runtime->audit_hooks.mutex); + } + return 0; } -- cgit v0.12