Skip to content

_lsprof.c: Profiler.enable() clobbers exception from use_tool_id #153068

Description

@aisk

Bug report

Bug description:

Original gist: https://gist.github.com/devdanzin/ed7691a99c26ede561a549ab1dba00b2

Summary

In Modules/_lsprof.c (lines 821-823), when sys.monitoring.use_tool_id() fails, PyErr_Format unconditionally replaces the real exception with a generic ValueError.

Fix

Remove the PyErr_Format call and let the original exception propagate.

Reproducer

import cProfile
p1 = cProfile.Profile()
p1.enable()
p2 = cProfile.Profile()
try:
    p2.enable()  # ValueError: "Another profiling tool is already active"
except ValueError as e:
    print(f"Generic message masks real error: {e}")
finally:
    p1.disable()

CPython versions tested on:

CPython main branch

Operating systems tested on:

No response

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    extension-modulesC modules in the Modules dirtype-bugAn unexpected behavior, bug, or error

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions