Skip to content

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

@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.

defxxx(): classMyComplex: MyComplexxxx()

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