Skip to content
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

TracebackException(capture_locals=True) may fail with RecursionError #73405

Closed
Kentzo mannequin opened this issue Jan 10, 2017 · 5 comments
Closed

TracebackException(capture_locals=True) may fail with RecursionError #73405

Kentzo mannequin opened this issue Jan 10, 2017 · 5 comments
Assignees
Labels
3.7 (EOL) end of life stdlib Python modules in the Lib dir topic-ctypes type-bug An unexpected behavior, bug, or error

Comments

@Kentzo
Copy link
Mannequin

Kentzo mannequin commented Jan 10, 2017

BPO 29219
Nosy @amauryfa, @abalkin, @meadori, @serhiy-storchaka, @Kentzo
PRs
  • [Do Not Merge] Convert Misc/NEWS so that it is managed by towncrier #552
  • Files
  • ctypes_cdll_uninitialized_repr.patch
  • Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.

    Show more details

    GitHub fields:

    assignee = 'https://github.com/serhiy-storchaka'
    closed_at = <Date 2017-01-13.07:45:51.803>
    created_at = <Date 2017-01-10.01:43:30.181>
    labels = ['3.7', 'ctypes', 'type-bug', 'library']
    title = 'TracebackException(capture_locals=True) may fail with RecursionError'
    updated_at = <Date 2017-03-31.16:36:08.254>
    user = 'https://github.com/Kentzo'

    bugs.python.org fields:

    activity = <Date 2017-03-31.16:36:08.254>
    actor = 'dstufft'
    assignee = 'serhiy.storchaka'
    closed = True
    closed_date = <Date 2017-01-13.07:45:51.803>
    closer = 'serhiy.storchaka'
    components = ['Library (Lib)', 'ctypes']
    creation = <Date 2017-01-10.01:43:30.181>
    creator = 'Ilya.Kulakov'
    dependencies = []
    files = ['46246']
    hgrepos = []
    issue_num = 29219
    keywords = ['patch']
    message_count = 5.0
    messages = ['285084', '285091', '285148', '285154', '285366']
    nosy_count = 6.0
    nosy_names = ['amaury.forgeotdarc', 'belopolsky', 'meador.inge', 'python-dev', 'serhiy.storchaka', 'Ilya.Kulakov']
    pr_nums = ['552']
    priority = 'normal'
    resolution = 'fixed'
    stage = 'resolved'
    status = 'closed'
    superseder = None
    type = 'behavior'
    url = 'https://bugs.python.org/issue29219'
    versions = ['Python 2.7', 'Python 3.5', 'Python 3.6', 'Python 3.7']

    @Kentzo
    Copy link
    Mannequin Author

    Kentzo mannequin commented Jan 10, 2017

    I'm using Python 3.5.2 to be precise. I have code that is roughly equivalent to:

        import sys
        import traceback
    
        def handle_exception(exc_type, exc_value, exc_traceback):
            traceback.TracebackException(exc_type, exc_value, exc_traceback, capture_locals=True)
    
        sys.excepthook = handle_exception

    For one of the clients the following error happened:

    Traceback (most recent call last):
      File "...", line 222, in ...
      File "...", line 160, in ...
      File "...", line 878, in ...
      File ":/traceback.py", line 463, in __init__
      File ":/traceback.py", line 474, in __init__
      File ":/traceback.py", line 352, in extract
      File ":/traceback.py", line 257, in __init__
      File ":/traceback.py", line 257, in <genexpr>
      File ":/ctypes/__init__.py", line 354, in __repr__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
      File ":/ctypes/__init__.py", line 360, in __getattr__
      File ":/ctypes/__init__.py", line 365, in __getitem__
    RecursionError: maximum recursion depth exceeded

    @Kentzo Kentzo mannequin added type-crash A hard crash of the interpreter, possibly with a core dump stdlib Python modules in the Lib dir labels Jan 10, 2017
    @serhiy-storchaka
    Copy link
    Member

    Could you please provide a script that reproduces an issue?

    Seems the repr of uninitialized CDLL instance is used. It causes an infinite recursion in attempt to resolve not set private attributes (_name, _handle, _FuncPtr).

    @serhiy-storchaka serhiy-storchaka added topic-ctypes 3.7 (EOL) end of life type-bug An unexpected behavior, bug, or error and removed type-crash A hard crash of the interpreter, possibly with a core dump labels Jan 10, 2017
    @Kentzo
    Copy link
    Mannequin Author

    Kentzo mannequin commented Jan 10, 2017

    I was not able to reproduce it.

    The origin "unhandeled" exception happens after ctypes.cdll.LoadLibrary fails to load a library:

    Traceback (most recent call last):
      File "...", line 852, in ...
      File ":/ctypes/__init__.py", line 425, in LoadLibrary
      File ":/ctypes/__init__.py", line 347, in __init__
    OSError: [WinError 126] 找不到指定的模組

    Then we raise our own exception.

    @serhiy-storchaka
    Copy link
    Member

    Proposed patch fixes an infinite recursion in a repr of uninitialized CDLL instance.

    @serhiy-storchaka serhiy-storchaka self-assigned this Jan 13, 2017
    @python-dev
    Copy link
    Mannequin

    python-dev mannequin commented Jan 13, 2017

    New changeset d9a64d00a439 by Serhiy Storchaka in branch '3.5':
    Issue bpo-29219: Fixed infinite recursion in the repr of uninitialized
    https://hg.python.org/cpython/rev/d9a64d00a439

    New changeset d9539a5c2315 by Serhiy Storchaka in branch '2.7':
    Issue bpo-29219: Fixed infinite recursion in the repr of uninitialized
    https://hg.python.org/cpython/rev/d9539a5c2315

    New changeset 17ca7c4dd583 by Serhiy Storchaka in branch '3.6':
    Issue bpo-29219: Fixed infinite recursion in the repr of uninitialized
    https://hg.python.org/cpython/rev/17ca7c4dd583

    New changeset 0503024831ad by Serhiy Storchaka in branch 'default':
    Issue bpo-29219: Fixed infinite recursion in the repr of uninitialized
    https://hg.python.org/cpython/rev/0503024831ad

    @ezio-melotti ezio-melotti transferred this issue from another repository Apr 10, 2022
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Labels
    3.7 (EOL) end of life stdlib Python modules in the Lib dir topic-ctypes type-bug An unexpected behavior, bug, or error
    Projects
    None yet
    Development

    No branches or pull requests

    1 participant