[PySide] 1.1.0 core dump with short-circuit signal name

anatoly techtonik techtonik at gmail.com
Mon Mar 12 10:10:38 CET 2012


Is it possible to implement better exception handling to warn about
old signal/slots being used with a redirect to this bug report before
exiting?
--
anatoly t.



On Sat, Mar 10, 2012 at 7:09 PM, Blair Zajac <blair at orcaware.com> wrote:
> Hi Renato,
>
> Thanks, however, we're porting an 80k LOC project from PyQt3, so we'll
> be using the old signal/slot mechanism for now just to get the app
> running and then we may cut over to the new signal/slots.
>
> I'll open a bug report to track this.
>
> Blair
>
> On 03/10/2012 05:45 AM, Renato Araujo wrote:
>> Hi Blair,
>>
>> I recommend to you use the new singal/slot API[1], since this is a bug
>> on the deprecated API this have low priority to fix.
>>
>> [1]http://qt-project.org/wiki/Signals_and_Slots_in_PySide
>>
>>
>> Renato Araujo Oliveira Filho
>>
>>
>>
>> On Sat, Mar 10, 2012 at 5:23 AM, Blair Zajac<blair at orcaware.com>  wrote:
>>> Hello,
>>>
>>> I'm new to PySide develop so wanted to open this on the mailing list
>>> before opening a ticket, being uncertain about bug policy on this project.
>>>
>>> The below script core dumps using PySide 1.1.0 on Ubuntu 12.04 Beta 1.
>>> Can anyone else confirm this on their system.  The same code doesn't
>>> core dump on Ubuntu 11.10 with PySide 1.0.6.
>>>
>>> If it is reproducible, then it seems that it shouldn't core dump, even
>>> if the code isn't valid PySide code.
>>>
>>> Below is a stack trace and the code.
>>>
>>> Thanks,
>>> Blair
>>>
>>> PS We're moving a large project from PyQt3 to PySide, so that's how I
>>> ran into this.
>>>
>>>
>>> Core was generated by `python t3.py'.
>>> Program terminated with signal 11, Segmentation fault.
>>> #0  0x000000000041aec9 in PyObject_Call ()
>>> (gdb) bt
>>> #0  0x000000000041aec9 in PyObject_Call ()
>>> #1  0x00000000004b5d96 in PyEval_CallObjectWithKeywords ()
>>> #2  0x00007f32da0052da in
>>> PySide::SignalManager::callPythonMetaMethod(QMetaMethod const&, void**,
>>> _object*, bool) ()
>>>     from /usr/lib/x86_64-linux-gnu/libpyside-python2.7.so.1.1
>>> #3  0x00007f32da00575c in PySide::SignalManager::qt_metacall(QObject*,
>>> QMetaObject::Call, int, void**) ()
>>>     from /usr/lib/x86_64-linux-gnu/libpyside-python2.7.so.1.1
>>> #4  0x00007f32d958aad9 in QMetaObject::activate(QObject*, QMetaObject
>>> const*, int, void**) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
>>> #5  0x00007f32da005990 in PySide::SignalManager::qt_metacall(QObject*,
>>> QMetaObject::Call, int, void**) ()
>>>     from /usr/lib/x86_64-linux-gnu/libpyside-python2.7.so.1.1
>>> #6  0x00007f32da005fd7 in PySide::SignalManager::emitSignal(QObject*,
>>> char const*, _object*) () from
>>> /usr/lib/x86_64-linux-gnu/libpyside-python2.7.so.1.1
>>> #7  0x00007f32da32d938 in ?? ()
>>>     from /usr/lib/python2.7/dist-packages/PySide/QtCore.so
>>> #8  0x00000000004b65c1 in PyEval_EvalFrameEx ()
>>> #9  0x00000000004b6b97 in PyEval_EvalFrameEx ()
>>> #10 0x00000000004bcd0d in PyEval_EvalCodeEx ()
>>> #11 0x00000000004bd7e2 in PyEval_EvalCode ()
>>> #12 0x00000000004dcc52 in run_mod ()
>>> #13 0x00000000004dd814 in PyRun_FileExFlags ()
>>> #14 0x00000000004de28e in PyRun_SimpleFileExFlags ()
>>> #15 0x00000000004ee6dd in Py_Main ()
>>> #16 0x00007f32da9e076d in __libc_start_main ()
>>>     from /lib/x86_64-linux-gnu/libc.so.6
>>> #17 0x000000000041ce39 in _start ()
>>>
>>>
>>>
>>> #!/usr/bin/python
>>>
>>> from PySide import QtCore, QtGui
>>>
>>> SIGNAL_NAME = 'testSignal'
>>>
>>> class EmitterClass(QtCore.QObject):
>>>      def __init__(self):
>>>          super(EmitterClass, self).__init__()
>>>
>>>      def emitter(self):
>>>          self.emit(QtCore.SIGNAL(SIGNAL_NAME), 100)
>>>
>>> class ListeningClass(QtCore.QObject):
>>>      def __init__(self):
>>>          super(ListeningClass, self).__init__()
>>>          self.emitter = EmitterClass()
>>>          QtCore.QObject.connect(self.emitter, QtCore.SIGNAL(SIGNAL_NAME),
>>>                                 self.output)
>>>
>>>      def output(self, number):
>>>          print number
>>>
>>> if __name__ == '__main__':
>>>      c = ListeningClass()
>>>      c.emitter.emitter()
>>> _______________________________________________
>>> PySide mailing list
>>> PySide at qt-project.org
>>> http://lists.qt-project.org/mailman/listinfo/pyside
>>
>
> _______________________________________________
> PySide mailing list
> PySide at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/pyside



More information about the PySide mailing list