@@ -233,7 +233,6 @@ def __init__(self, tool_id: int) -> None:
233
233
0 ,
234
234
)
235
235
236
- self .stopped = False
237
236
self ._activity = False
238
237
239
238
def __repr__ (self ) -> str :
@@ -244,43 +243,43 @@ def __repr__(self) -> str:
244
243
@panopticon ()
245
244
def start (self ) -> None :
246
245
"""Start this Tracer."""
247
- self .stopped = False
248
-
249
- assert sys_monitoring is not None
250
- sys_monitoring .use_tool_id (self .myid , "coverage.py" )
251
- register = functools .partial (sys_monitoring .register_callback , self .myid )
252
- events = sys .monitoring .events
253
-
254
- sys_monitoring .set_events (self .myid , events .PY_START )
255
- register (events .PY_START , self .sysmon_py_start )
256
- if self .trace_arcs :
257
- register (events .PY_RETURN , self .sysmon_py_return )
258
- register (events .LINE , self .sysmon_line_arcs )
259
- if env .PYBEHAVIOR .branch_right_left :
260
- register (
261
- events .BRANCH_RIGHT , # type:ignore[attr-defined]
262
- self .sysmon_branch_either ,
263
- )
264
- register (
265
- events .BRANCH_LEFT , # type:ignore[attr-defined]
266
- self .sysmon_branch_either ,
267
- )
268
- else :
269
- register (events .LINE , self .sysmon_line_lines )
270
- sys_monitoring .restart_events ()
271
- self .sysmon_on = True
246
+ with self .lock :
247
+ assert sys_monitoring is not None
248
+ sys_monitoring .use_tool_id (self .myid , "coverage.py" )
249
+ register = functools .partial (sys_monitoring .register_callback , self .myid )
250
+ events = sys .monitoring .events
251
+
252
+ sys_monitoring .set_events (self .myid , events .PY_START )
253
+ register (events .PY_START , self .sysmon_py_start )
254
+ if self .trace_arcs :
255
+ register (events .PY_RETURN , self .sysmon_py_return )
256
+ register (events .LINE , self .sysmon_line_arcs )
257
+ if env .PYBEHAVIOR .branch_right_left :
258
+ register (
259
+ events .BRANCH_RIGHT , # type:ignore[attr-defined]
260
+ self .sysmon_branch_either ,
261
+ )
262
+ register (
263
+ events .BRANCH_LEFT , # type:ignore[attr-defined]
264
+ self .sysmon_branch_either ,
265
+ )
266
+ else :
267
+ register (events .LINE , self .sysmon_line_lines )
268
+ sys_monitoring .restart_events ()
269
+ self .sysmon_on = True
272
270
273
271
@panopticon ()
274
272
def stop (self ) -> None :
275
273
"""Stop this Tracer."""
276
- if not self .sysmon_on :
277
- # In forking situations, we might try to stop when we are not
278
- # started. Do nothing in that case.
279
- return
280
- assert sys_monitoring is not None
281
- sys_monitoring .set_events (self .myid , 0 )
282
- self .sysmon_on = False
283
- sys_monitoring .free_tool_id (self .myid )
274
+ with self .lock :
275
+ if not self .sysmon_on :
276
+ # In forking situations, we might try to stop when we are not
277
+ # started. Do nothing in that case.
278
+ return
279
+ assert sys_monitoring is not None
280
+ sys_monitoring .set_events (self .myid , 0 )
281
+ self .sysmon_on = False
282
+ sys_monitoring .free_tool_id (self .myid )
284
283
285
284
@panopticon ()
286
285
def post_fork (self ) -> None :
0 commit comments