Closed
Description
Bug report
Bug description:
This snippet:
import _interpreters
import types
i = _interpreters.create()
_interpreters.set___main___attrs(i, types.MappingProxyType({"a": 1}))
raises:
Traceback (most recent call last):
File "/home/brian/Projects/open-contrib/cpython/temp.py", line 27, in <module>
_interpreters.set___main___attrs(i, types.MappingProxyType({"a": 1}))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
SystemError: Objects/dictobject.c:4162: bad argument to internal function
This happens during this call to _PyXI_Enter
which calls PyDict_Size
on updates
.
The public interface always passes a dict
, and other paths that call _PyXI_Enter
check for an actual dict (e.g., exec
). I think it makes sense to do the same thing here. PR forthcoming.
CPython versions tested on:
CPython main branch
Operating systems tested on:
Linux
Linked PRs
- gh-135855: Fix
SystemError
when passing non-dict object to_interpreters.set___main___attrs
#135856 - [3.14] gh-135855: Raise TypeError When Passing Non-dict Object to
_interpreters.set___main___attrs
(gh-135856) #135900 - [3.13] gh-135855: Raise TypeError When Passing Non-dict Object to
_interpreters.set___main___attrs
(gh-135856) #135903
Metadata
Metadata
Assignees
Projects
Status
Done