Skip to content

Remove INSTRUCTION event monitoring will remove LINE events as well #109156

Description

@gaogaotiantian

Bug report

Bug description:

The current de-instrumentation code for instructions incorrectly de-instruments line too. So if INSTRUCTION events are removed, event if the LINE events are still there, it won't trigger the event.

import sys
E = sys.monitoring.events

def line(*args):
    print("Line event: ", args)

def inst(*args):
    print("Instruction event: ", args)

sys.monitoring.use_tool_id(0, "test")
sys.monitoring.set_events(0, 0)
sys.monitoring.register_callback(0, E.LINE, line)
sys.monitoring.register_callback(0, E.INSTRUCTION, inst)
sys.monitoring.set_events(0, E.LINE | E.INSTRUCTION)
sys.monitoring.set_events(0, E.LINE)
a = 1
sys.monitoring.set_events(0, 0)

CPython versions tested on:

CPython main branch

Operating systems tested on:

Linux

Linked PRs

Activity

  1. markshannon commented on Sep 11, 2023

    @markshannon
    Member

    #109131 fixes this.
    We should add the test in #109157 though.

  2. gaogaotiantian commented on Sep 11, 2023

    @gaogaotiantian
    MemberAuthor

    #109131 fixes this. We should add the test in #109157 though.

    Do you want me to only keep the test in the PR? I can rename the PR to "add tests" and maybe skip the news?

  3. markshannon commented on Sep 12, 2023

    @markshannon
    Member

    Yes, please. We are obviously lacking a test for this.

  4. added a commit that references this issue on Sep 13, 2023
  5. markshannon commented on Sep 13, 2023

    @markshannon
    Member

    Fixed

  6. added a commit that references this issue on Sep 13, 2023
  7. added a commit that references this issue on Sep 13, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    type-bugAn unexpected behavior, bug, or error

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions