Hi Romain,

please file a bugreport under bugreports.qt.io in the Pyside project. The 
content for the bug report you already have in your mail. If you happen to have 
a stack trace, that would be beneficial too.

Alex

________________________________________
From: PySide <pyside-bounces+alexander.blasche=qt...@qt-project.org> on behalf 
of Romain LE DISEZ <rom...@ledisez.net>
Sent: Thursday, 8 November 2018 9:30:53 PM
To: pyside@qt-project.org
Subject: [PySide] Segfault using QScxmlStateMachine.submitEvent(QScxmlEvent)

Hi all,

I'm very new to Qt as I'm developing my first application with it. I'm trying 
to use StateChart based on QScxmlStateMachine.

It works fine except in a situation where I get a segfault. If, in the demo 
code below, you comment the line submitEvent('MY_EVENT') and uncomment the 
usage of a ScxmlEvent, the event is dispatched then the application segfaults. 
Output is:
    StateMachine::active: True
    ('MY_EVENT:', (), {})
    Segmentation fault: 11

Am I doing something wrong or is it a bug? How can I provide you useful 
informations in the latter case. I'm running PySide2 (v5.11.2) on macOS (High 
Sierra) with Python v2.7.15 (coming from brew).

Thx for your help.


demo.scxml:
    <?xml version="1.0" encoding="UTF-8"?>
    <scxml xmlns="http://www.w3.org/2005/07/scxml"; version="1.0" 
binding="early" name="demo.scxml">
        <transition type="internal" event="MY_EVENT"/>
        <state id="StateMachine"/>
    </scxml>

demo.py:
    #!/usr/bin/env python

    import sys

    from PySide2.QtCore import QObject, QCoreApplication, SLOT, Slot
    from PySide2.QtScxml import QScxmlStateMachine, QScxmlEvent


    class Backend(QObject):
        def __init__(self, machine):
            super(Backend, self).__init__()
            self.machine = machine
            self.machine.connectToState('StateMachine', self, 
SLOT('state_machine_active(bool)'))
            self.machine.connectToEvent('MY_EVENT', self, SLOT('my_event()'))

        @Slot(bool)
        def state_machine_active(self, active):
            print('StateMachine::active: %s' % active)
            self.machine.submitEvent('MY_EVENT')
            #ev = QScxmlEvent()
            #ev.setName('MY_EVENT')
            #ev.setEventType(QScxmlEvent.ExternalEvent)
            #self.machine.submitEvent(ev)

        @Slot()
        def my_event(self, *args, **kwargs):
            print('MY_EVENT:', args, kwargs)


    if __name__ == '__main__':
        app = QCoreApplication(sys.argv)

        machine = QScxmlStateMachine.fromFile('demo.scxml')
        b = Backend(machine)
        machine.start()

        sys.exit(app.exec_())

--
Romain

_______________________________________________
PySide mailing list
PySide@qt-project.org
http://lists.qt-project.org/mailman/listinfo/pyside
_______________________________________________
PySide mailing list
PySide@qt-project.org
http://lists.qt-project.org/mailman/listinfo/pyside

Reply via email to