Skip to content

redundant decref on the eval stack value in LOAD_FROM_DICT_OR_DEREF in error path #111654

Closed
@aisk

Description

@aisk

Crash report

What happened?

With these codes bellow, a NameError will be raised as expected, but there will be a runtime crash when GC happens.

def xxx():
    class MyComplex:
        MyComplex

xxx()

Error logs:

Traceback (most recent call last):
  File "C:\Users\xxxxx\Source\cpython\a.py", line 71, in <module>
    xxx()
  File "C:\Users\xxxxx\Source\cpython\a.py", line 66, in xxx
    class MyComplex:
  File "C:\Users\xxxxx\Source\cpython\a.py", line 67, in MyComplex
    MyComplex
NameError: cannot access free variable 'MyComplex' where it is not associated with a value in enclosing scope. Did you mean: 'complex'?
C:\Users\xxxxx\Source\cpython\Objects\frameobject.c:889: _Py_NegativeRefcount: Assertion failed: object has negative ref count
<object at 00000150D0CDA990 is freed>
Fatal Python error: _PyObject_AssertFailed: _PyObject_AssertFailed
Python runtime state: finalizing (tstate=0x00007ffc567001f8)

Current thread 0x00003564 (most recent call first):
  <no Python frame>

CPython versions tested on:

3.12, CPython main branch

Operating systems tested on:

No response

Output from running 'python -VV' on the command line:

No response

Linked PRs

Metadata

Metadata

Assignees

Labels

type-crashA hard crash of the interpreter, possibly with a core dump

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions