brianschubert · GitHub

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

Read the original on github.com ↗