[prev in list] [next in list] [prev in thread] [next in thread]
List: pykde
Subject: Re: Segmentation fault within some specific conditions
From: Phil Thompson <phil () riverbankcomputing ! com>
Date: 2024-03-23 14:57:18
Message-ID: d815c05e22f923a39fbb622e2de2025c () riverbankcomputing ! com
[Download RAW message or body]
On 06/03/2024 14:17, Erwan Mathieu wrote:
> Hello,
>
> I'm running into a segmentation fault when using PyQt 6.6.0/6.6.1. I
> could
> reproduce it with a very basic project, here is how to make it happen:
>
> // File test.py
> from PyQt6.QtCore import QObject
> from PyQt6.QtGui import QGuiApplication
> from PyQt6.QtQml import QQmlApplicationEngine, qmlRegisterType
>
> class MyModel(QObject):
> def __init__(self, parent = None):
> super().__init__(parent = parent)
> print("I am alive")
> def __del__(self):
> print("I am dead ")
>
> app = QGuiApplication([])
> qmlRegisterType(MyModel, "Test", 1, 0, "MyModel")
> engine = QQmlApplicationEngine()
> engine.load("./Main.qml")
> app.exec()
>
> // File Main.qml
> import QtQuick
> import QtQuick.Controls
>
> import Test 1.0
>
> Window
> {
> width: 640
> height: 480
> visible: true
> title: qsTr("Hello World")
>
> Loader { id: loader; sourceComponent: superComponent; }
>
> Button
> {
> anchors.centerIn: parent
> text: "Unload"
> onClicked: loader.sourceComponent = null
> }
>
> Component
> {
> id: superComponent
>
> Item
> {
> MyModel
> {
> property var superProperty: "hello"
> }
> }
> }
> }
>
> Now start the test.py file, and click on the "Unload" button. The
> Component
> instance is destroyed, which also destroys the MyModel instance. We can
> see
> the print instructions that says so. Just after that, I get a
> segmentation
> fault.
>
> For some reason, this happens only when declaring a property on the
> MyModel
> instance. If you comment the superProperty declaration, everything is
> fine.
>
> We were previously working with version 6.4.2, and this caused no
> issue. I
> have it starting from 6.6.0 (but didn't try intermediate versions).
>
> I also tried to make this example directly in C++, and I don't get the
> error, so I think this is related to PyQt.
>
> If it is of any help, gdb gives me the following crash point:
> 0x00007ffff636abb0 in QMetaObject::methodOffset() const () from
> /..../lib/python3.10/site-packages/PyQt6/Qt6/lib/libQt6Core.so.6
>
> Any idea of why this is happening, and if there is a workaround/fix ?
>
> Kind regards,
>
> Erwan MATHIEU
Should be fixed in the next snapshot (and v6.7.0). However, as is usual
with QML, fixes in one area may break it in other areas. Fingers
crossed.
Phil
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic