diff --git a/easypy/threadtree.py b/easypy/threadtree.py index df97fb1..1ffbbca 100644 --- a/easypy/threadtree.py +++ b/easypy/threadtree.py @@ -88,19 +88,22 @@ def start_new_thread(target, *args, **kwargs): def wrapper(*args, **kwargs): thread = threading.current_thread() + child_uuid = get_thread_uuid(thread) + registry_key = (parent_uuid, child_uuid) + if not DISABLE_ACROSS_THREADS: - _FRAME_SNAPSHOTS_REGISTRY[parent_thread.uuid, thread.uuid] = create_frame_snapshot(parent_frame, parent_thread) - uuid = get_thread_uuid(thread) - UUIDS_TREE[uuid] = parent_uuid + _FRAME_SNAPSHOTS_REGISTRY[registry_key] = create_frame_snapshot(parent_frame, parent_thread) + + UUIDS_TREE[child_uuid] = parent_uuid if _REGISTER_GREENLETS: IDENT_TO_GREENLET[thread.ident] = gevent.getcurrent() try: return target(*args, **kwargs) finally: # remove the snapshot connecting parent → this thread - _FRAME_SNAPSHOTS_REGISTRY.pop((parent_thread.uuid, thread.uuid), None) + _FRAME_SNAPSHOTS_REGISTRY.pop(registry_key, None) - IDENT_TO_UUID.pop(thread.ident) + IDENT_TO_UUID.pop(thread.ident, None) return _orig_start_new_thread(wrapper, *args, **kwargs)