Skip to content

gh-132737: Support profiling modules that import __main___ #132738

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

aneeshdurg
Copy link

No description provided.

@python-cla-bot
Copy link

python-cla-bot bot commented Apr 19, 2025

All commit authors signed the Contributor License Agreement.

CLA signed

@bedevere-app
Copy link

bedevere-app bot commented Apr 19, 2025

Most changes to Python require a NEWS entry. Add one using the blurb_it web app or the blurb command-line tool.

If this change has little impact on Python users, wait for a maintainer to apply the skip news label instead.

@@ -0,0 +1 @@
Support profiling modules that import __main___, such as modules that use to pickle. The github issue has an example repro that throws an exception without this change, and succeeds with it.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Support profiling modules that import __main___, such as modules that use to pickle. The github issue has an example repro that throws an exception without this change, and succeeds with it.
Support profiling modules that import ``__main__``, such as modules that use to pickle. The github issue has an example repro that throws an exception without this change, and succeeds with it.

@@ -0,0 +1 @@
Support profiling modules that import __main___, such as modules that use to pickle. The github issue has an example repro that throws an exception without this change, and succeeds with it.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Support profiling modules that import __main___, such as modules that use to pickle. The github issue has an example repro that throws an exception without this change, and succeeds with it.
Support profiling modules that import __main___, such as modules that use to pickle.

NEWS does not need this

@gaogaotiantian
Copy link
Member

This is not going to work because you introduced extra function calls in cProfile record, which would confuse people. Try a simple print("hello world") and see the difference between the old implementation and the new one.

I can work on this (kind of the responsible person for the module), or if you really want to take a swing at the issue I can give you some direction.

@aneeshdurg
Copy link
Author

I'd be happy to take a swing at it! Any pointers on what to look into?

@gaogaotiantian
Copy link
Member

So pdb has a very similar problem to solve and it works on your script. The code you run has to be the compiled code from the file (io.open_code actually also sends an audit event which probably matters), not anything else. You should do something like pdb - just update __main__ to make sure your program can import from it. I don't think you need to build a new module.

Also, you need a regression test in this case. You need to write a test that fails with the original implementation, and passes after. Hopefully it won't be this complicated (I know it's not long, but I don't believe dataclass or even pickle is required to reproduce this issue). It's okay to use pickle if that's the easiest way.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants