New issue 3098: PyPy3.6 7.2.0 error when calling PyDict_GetItem when second argument is an unhashable type (C extension) https://bitbucket.org/pypy/pypy/issues/3098/pypy36-720-error-when-calling
Michael Seifert: Example \(extremely minified\): ```c PyObject * SomeFunc(PyObject *m, PyObject *args) { PyObject *tmp; PyObject *op1; op1 = PyDict_New(); if (op1 == NULL) { return NULL; } tmp = PyDict_GetItem(op1, o); if (tmp == NULL) { PyErr_SetString(PyExc_KeyError, "could not find key"); } return tmp; } ``` This fails for example with: ``` >>>> some_func([]) Error in cpyext, CPython compatibility layer: The function PyDict_GetItem was not supposed to fail Fatal error in cpyext, CPython compatibility layer, calling PyDict_GetItem Either report a bug or consider not using this particular extension <SystemError object at 0x6c23cbb8> RPython traceback: File "pypy_module_cpyext_1.c", line 2333, in wrapper_second_level__star_2_37 File "pypy_module_cpyext_1.c", line 40310, in not_supposed_to_fail ``` and similar for `some_func({}, {})`. I believe this fails when the value not hashable \(`some_func(1)` works correctly\). I encountered this with Windows and Max OS-X with PyPy 3.6 Version 7.2.0 \(but not in PyPy 3.5 7.0.0 - I haven’t tested other versions or other OS\). _______________________________________________ pypy-issue mailing list pypy-issue@python.org https://mail.python.org/mailman/listinfo/pypy-issue