-
-
Notifications
You must be signed in to change notification settings - Fork 32.4k
Closed
Closed
Copy link
Labels
extension-modulesC modules in the Modules dirC modules in the Modules dirtopic-subinterpreterstype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
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
Labels
extension-modulesC modules in the Modules dirC modules in the Modules dirtopic-subinterpreterstype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Projects
Status
Done