Python 3.12 segfault with mixin classes

Thomas Caswell tcaswell at gmail.com
Tue Jun 20 16:09:51 BST 2023


I can confirm that the latest pyqt6 snapshots and CPython main branch work
together.

Tom

On Fri, Jun 16, 2023 at 10:36 AM Phil Thompson <phil at riverbankcomputing.com>
wrote:

> On 15/06/2023 19:03, Florian Bruhin wrote:
> > Hey,
> >
> >> When trying PyQt 6.5.1 with Python 3.12 Beta 2, something like:
> >>
> >>         import sys
> >>         from PyQt6.QtWidgets import QWidget, QApplication
> >>
> >>         class Mixin: pass
> >>         class Command(Mixin, QWidget): pass
> >>
> >>         app = QApplication(sys.argv)
> >>         cmd = Command()
> >>         cmd.show()
> >>         app.exec()
> >>
> >> segfaults here on the "cmd.Command()" line:
> >>
> >>         #0  [...] _PyDict_Next (op=0x0, [...])
> >>         [...]
> >>         #2  [...]  in trawl_hierarchy([...])
> >>            from .../lib/python3.12/site-packages/PyQt6/QtCore.abi3.so
> >>         [...]
> >
> > Eric Snow commented on the issue:
> >
> >     Presumably the crashing code is trying to use the dict returned by
> >     sipPyTypeDict() and I'm guessing that that function basically
> > returns
> >     pytype->tp_dict and that the pytype in question is a static builtin
> >     type. If that's the case then the failure makes sense since tp_dict
> > for
> >     static builtin types is now NULL.
> >
> > And that indeed seems to be the case: trawl_type does
> > "dict = sipPyTypeDict(pytype);", that is an alias to sip's
> > api_py_type_dict, and that accesses py_type->tp_dict.
> >
> > See:
> > https://github.com/python/cpython/issues/105227
> >
> > There is now an open PR to add a PyType_GetDict():
> > https://github.com/python/cpython/pull/105747
>
> Hopefully fixed in tonight's snapshot - although it needs the next beta
> release of Python v3.12 to build.
>
> Phil
>


-- 
Thomas Caswell
tcaswell at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.riverbankcomputing.com/pipermail/pyqt/attachments/20230620/f75bdbe8/attachment.htm>


More information about the PyQt mailing list