New submission from Enji Cooper <[email protected]>:
When a body of C extensions needs to be ported from python <3.8 to 3.8, one of
the issues one might run into is improperly defined methods in a C extension,
which results in SystemErrors stating:
>>> SystemError: bad call flags
This new behavior was added as part of Issue # 33012.
While the issues definitely need to be resolved in the C extensions, where to
start is not completely clear. I had to put `printfs` in PyCFunction_NewEx and
PyDescr_NewMethod to track down the issues, e.g.,
>>> printf("method name: %s\n", method->ml_name);
While this might be misleading for duplicate method definitions, it definitely
helps narrow down the offending code.
Adding the method name to the SystemError would be a big step in the right
direction in terms of making it easier to resolve these issues.
PS I realize that this might be masked by casting PyCFunction on methods or by
not using gcc 8+, but I'd argue that C extensions need to have developer issues
like this be clearer to the end-reader.
----------
components: Extension Modules
messages: 363575
nosy: ngie
priority: normal
severity: normal
status: open
title: "SystemError: bad call flags" exceptions added as part of BPO-33012 are
difficult to debug
type: behavior
versions: Python 3.8
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue39884>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com