jchanvfx / NodeGraphQt

Node graph framework that can be re-implemented into applications that supports PySide2
http://chantonic.com/NodeGraphQt/
MIT License
1.27k stars 261 forks source link

Segfault on clicking item in undo/redo history #223

Open mara004 opened 3 years ago

mara004 commented 3 years ago

I captured this random segmentation fault concerning the undo/redo logic in gdb.

Thread 1 "python3" received signal SIGSEGV, Segmentation fault.
0x00007fffd205f65c in QUndoCommand::redo() () from /home/manuel/.local/lib/python3.8/site-packages/PySide2/Qt/lib/libQt5Widgets.so.5
(gdb) bt
#0  0x00007fffd205f65c in QUndoCommand::redo() () from /home/manuel/.local/lib/python3.8/site-packages/PySide2/Qt/lib/libQt5Widgets.so.5
#1  0x00007fffd205f64e in QUndoCommand::redo() () from /home/manuel/.local/lib/python3.8/site-packages/PySide2/Qt/lib/libQt5Widgets.so.5
#2  0x00007fffd2060ec8 in QUndoStack::setIndex(int) () from /home/manuel/.local/lib/python3.8/site-packages/PySide2/Qt/lib/libQt5Widgets.so.5
#3  0x00007fffd2063b18 in QUndoModel::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) ()
   from /home/manuel/.local/lib/python3.8/site-packages/PySide2/Qt/lib/libQt5Widgets.so.5
#4  0x00007fffd7211ddf in void doActivate<false>(QObject*, int, void**) ()
   from /home/manuel/.local/lib/python3.8/site-packages/PySide2/Qt/lib/libQt5Core.so.5
#5  0x00007fffd718a81a in QItemSelectionModel::currentChanged(QModelIndex const&, QModelIndex const&) ()
   from /home/manuel/.local/lib/python3.8/site-packages/PySide2/Qt/lib/libQt5Core.so.5
#6  0x00007fffd718a9ea in QItemSelectionModel::setCurrentIndex(QModelIndex const&, QFlags<QItemSelectionModel::SelectionFlag>) ()
   from /home/manuel/.local/lib/python3.8/site-packages/PySide2/Qt/lib/libQt5Core.so.5
#7  0x00007fffd1f4b3cc in QAbstractItemView::mousePressEvent(QMouseEvent*) ()
   from /home/manuel/.local/lib/python3.8/site-packages/PySide2/Qt/lib/libQt5Widgets.so.5
#8  0x00007fffd140a9c9 in QUndoViewWrapper::mousePressEvent(QMouseEvent*) () from /home/manuel/.local/lib/python3.8/site-packages/PySide2/QtWidgets.abi3.so
#9  0x00007fffd1d46181 in QWidget::event(QEvent*) () from /home/manuel/.local/lib/python3.8/site-packages/PySide2/Qt/lib/libQt5Widgets.so.5
#10 0x00007fffd1dee21e in QFrame::event(QEvent*) () from /home/manuel/.local/lib/python3.8/site-packages/PySide2/Qt/lib/libQt5Widgets.so.5
#11 0x00007fffd1f522bc in QAbstractItemView::viewportEvent(QEvent*) ()
   from /home/manuel/.local/lib/python3.8/site-packages/PySide2/Qt/lib/libQt5Widgets.so.5
#12 0x00007fffd140f575 in QUndoViewWrapper::viewportEvent(QEvent*) () from /home/manuel/.local/lib/python3.8/site-packages/PySide2/QtWidgets.abi3.so
#13 0x00007fffd71d95a0 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) ()
   from /home/manuel/.local/lib/python3.8/site-packages/PySide2/Qt/lib/libQt5Core.so.5
#14 0x00007fffd1d07412 in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /home/manuel/.local/lib/python3.8/site-packages/PySide2/Qt/lib/libQt5Widgets.so.5
#15 0x00007fffd1d0e1f8 in QApplication::notify(QObject*, QEvent*) () from /home/manuel/.local/lib/python3.8/site-packages/PySide2/Qt/lib/libQt5Widgets.so.5
#16 0x00007fffd0f91325 in QApplicationWrapper::notify(QObject*, QEvent*) () from /home/manuel/.local/lib/python3.8/site-packages/PySide2/QtWidgets.abi3.so
#17 0x00007fffd71d9808 in QCoreApplication::notifyInternal2(QObject*, QEvent*) ()
   from /home/manuel/.local/lib/python3.8/site-packages/PySide2/Qt/lib/libQt5Core.so.5
#18 0x00007fffd1d0d53a in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) ()
   from /home/manuel/.local/lib/python3.8/site-packages/PySide2/Qt/lib/libQt5Widgets.so.5
#19 0x00007fffd1d5efe8 in QWidgetWindow::handleMouseEvent(QMouseEvent*) ()
   from /home/manuel/.local/lib/python3.8/site-packages/PySide2/Qt/lib/libQt5Widgets.so.5
#20 0x00007fffd1d61cf3 in QWidgetWindow::event(QEvent*) () from /home/manuel/.local/lib/python3.8/site-packages/PySide2/Qt/lib/libQt5Widgets.so.5
#21 0x00007fffd1d0743c in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /home/manuel/.local/lib/python3.8/site-packages/PySide2/Qt/lib/libQt5Widgets.so.5
#22 0x00007fffd1d0df20 in QApplication::notify(QObject*, QEvent*) () from /home/manuel/.local/lib/python3.8/site-packages/PySide2/Qt/lib/libQt5Widgets.so.5
#23 0x00007fffd0f91325 in QApplicationWrapper::notify(QObject*, QEvent*) () from /home/manuel/.local/lib/python3.8/site-packages/PySide2/QtWidgets.abi3.so
#24 0x00007fffd71d9808 in QCoreApplication::notifyInternal2(QObject*, QEvent*) ()
   from /home/manuel/.local/lib/python3.8/site-packages/PySide2/Qt/lib/libQt5Core.so.5
#25 0x00007fffd2f1356d in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) ()
   from /home/manuel/.local/lib/python3.8/site-packages/PySide2/Qt/lib/libQt5Gui.so.5
#26 0x00007fffd2f14955 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) ()
   from /home/manuel/.local/lib/python3.8/site-packages/PySide2/Qt/lib/libQt5Gui.so.5
#27 0x00007fffd2ef08ab in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /home/manuel/.local/lib/python3.8/site-packages/PySide2/Qt/lib/libQt5Gui.so.5
#28 0x00007fffcca0e110 in userEventSourceDispatch(_GSource*, int (*)(void*), void*) ()
   from /home/manuel/.local/lib/python3.8/site-packages/PySide2/Qt/plugins/platforms/../../lib/libQt5WaylandClient.so.5
#29 0x00007fffd420717d in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#30 0x00007fffd4207400 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#31 0x00007fffd42074a3 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#32 0x00007fffd72351cc in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /home/manuel/.local/lib/python3.8/site-packages/PySide2/Qt/lib/libQt5Core.so.5
#33 0x00007fffd71d821a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /home/manuel/.local/lib/python3.8/site-packages/PySide2/Qt/lib/libQt5Core.so.5
--Type <RET> for more, q to quit, c to continue without paging--c
#34 0x00007fffd71e11d3 in QCoreApplication::exec() () from /home/manuel/.local/lib/python3.8/site-packages/PySide2/Qt/lib/libQt5Core.so.5
#35 0x00007fffd0f8ed98 in Sbk_QApplicationFunc_exec_ () from /home/manuel/.local/lib/python3.8/site-packages/PySide2/QtWidgets.abi3.so
#36 0x00000000005c39a3 in cfunction_vectorcall_NOARGS (func=<built-in method exec_ of Shiboken.ObjectType object at remote 0x1215020>, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/methodobject.c:459
#37 0x000000000056fb87 in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7ffff74edbc8, callable=<built-in method exec_ of Shiboken.ObjectType object at remote 0x1215020>) at ../Include/cpython/abstract.h:127
#38 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetischer Zeiger>, tstate=0x963700) at ../Python/ceval.c:4963
#39 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3469
#40 0x0000000000568d9a in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7ffff74eda40, for file example_auto_nodes.py, line 93, in <module> ()) at ../Python/ceval.c:741
#41 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=<optimized out>, kwargs=0x0, kwcount=<optimized out>, kwstep=2, defs=0x0, defcount=0, kwdefs=0x0, closure=0x0, name=0x0, qualname=0x0) at ../Python/ceval.c:4298
#42 0x000000000068cdc7 in PyEval_EvalCodeEx (closure=0x0, kwdefs=0x0, defcount=0, defs=0x0, kwcount=0, kws=0x0, argcount=0, args=0x0, locals=<optimized out>, globals=<optimized out>, _co=<optimized out>) at ../Python/ceval.c:4327
#43 PyEval_EvalCode (co=<optimized out>, globals=<optimized out>, locals=<optimized out>) at ../Python/ceval.c:718
#44 0x000000000067e161 in run_eval_code_obj (co=0x7ffff73ba030, globals={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__', path='example_auto_nodes.py') at remote 0x7ffff75274f0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module at remote 0x7ffff75000e0>, '__file__': 'example_auto_nodes.py', '__cached__': None, 'QtWidgets': <module at remote 0x7fffcec93ea0>, 'QtCore': <module at remote 0x7ffff71fd0e0>, 'NodeGraph': <Shiboken.ObjectType(__module__='NodeGraphQt.base.graph', __doc__='\n    The ``NodeGraph`` class is the main controller for managing all nodes\n    and the node graph.\n\n    Inherited from: :class:`PySide2.QtCore.QObject`\n\n    .. image:: _images/graph.png\n        :width: 60%\n    ', node_created=<PySide2.QtCore.Signal at remote 0x7ffff73fefd0>, nodes_deleted=<PySide2.QtCore.Signal at remote 0x7fffccf201f0>, node_selected=<PySide2.QtCore.Signal at remote 0x7fffccf20210>, node_selection_changed=<PySide2.QtCore.Signal at remote 0x7fffccf20230>, node_double_clicked=<PySide2.QtCore.Signal at re...(truncated), locals={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__', path='example_auto_nodes.py') at remote 0x7ffff75274f0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module at remote 0x7ffff75000e0>, '__file__': 'example_auto_nodes.py', '__cached__': None, 'QtWidgets': <module at remote 0x7fffcec93ea0>, 'QtCore': <module at remote 0x7ffff71fd0e0>, 'NodeGraph': <Shiboken.ObjectType(__module__='NodeGraphQt.base.graph', __doc__='\n    The ``NodeGraph`` class is the main controller for managing all nodes\n    and the node graph.\n\n    Inherited from: :class:`PySide2.QtCore.QObject`\n\n    .. image:: _images/graph.png\n        :width: 60%\n    ', node_created=<PySide2.QtCore.Signal at remote 0x7ffff73fefd0>, nodes_deleted=<PySide2.QtCore.Signal at remote 0x7fffccf201f0>, node_selected=<PySide2.QtCore.Signal at remote 0x7fffccf20210>, node_selection_changed=<PySide2.QtCore.Signal at remote 0x7fffccf20230>, node_double_clicked=<PySide2.QtCore.Signal at re...(truncated)) at ../Python/pythonrun.c:1166
#45 0x000000000067e1df in run_mod (mod=<optimized out>, filename=<optimized out>, globals={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__', path='example_auto_nodes.py') at remote 0x7ffff75274f0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module at remote 0x7ffff75000e0>, '__file__': 'example_auto_nodes.py', '__cached__': None, 'QtWidgets': <module at remote 0x7fffcec93ea0>, 'QtCore': <module at remote 0x7ffff71fd0e0>, 'NodeGraph': <Shiboken.ObjectType(__module__='NodeGraphQt.base.graph', __doc__='\n    The ``NodeGraph`` class is the main controller for managing all nodes\n    and the node graph.\n\n    Inherited from: :class:`PySide2.QtCore.QObject`\n\n    .. image:: _images/graph.png\n        :width: 60%\n    ', node_created=<PySide2.QtCore.Signal at remote 0x7ffff73fefd0>, nodes_deleted=<PySide2.QtCore.Signal at remote 0x7fffccf201f0>, node_selected=<PySide2.QtCore.Signal at remote 0x7fffccf20210>, node_selection_changed=<PySide2.QtCore.Signal at remote 0x7fffccf20230>, node_double_clicked=<PySide2.QtCore.Signal at re...(truncated), locals={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__', path='example_auto_nodes.py') at remote 0x7ffff75274f0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module at remote 0x7ffff75000e0>, '__file__': 'example_auto_nodes.py', '__cached__': None, 'QtWidgets': <module at remote 0x7fffcec93ea0>, 'QtCore': <module at remote 0x7ffff71fd0e0>, 'NodeGraph': <Shiboken.ObjectType(__module__='NodeGraphQt.base.graph', __doc__='\n    The ``NodeGraph`` class is the main controller for managing all nodes\n    and the node graph.\n\n    Inherited from: :class:`PySide2.QtCore.QObject`\n\n    .. image:: _images/graph.png\n        :width: 60%\n    ', node_created=<PySide2.QtCore.Signal at remote 0x7ffff73fefd0>, nodes_deleted=<PySide2.QtCore.Signal at remote 0x7fffccf201f0>, node_selected=<PySide2.QtCore.Signal at remote 0x7fffccf20210>, node_selection_changed=<PySide2.QtCore.Signal at remote 0x7fffccf20230>, node_double_clicked=<PySide2.QtCore.Signal at re...(truncated), flags=<optimized out>, arena=<optimized out>) at ../Python/pythonrun.c:1188
#46 0x000000000067e281 in pyrun_file (fp=fp@entry=0x961ed0, filename=filename@entry='example_auto_nodes.py', start=start@entry=257, globals=globals@entry={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__', path='example_auto_nodes.py') at remote 0x7ffff75274f0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module at remote 0x7ffff75000e0>, '__file__': 'example_auto_nodes.py', '__cached__': None, 'QtWidgets': <module at remote 0x7fffcec93ea0>, 'QtCore': <module at remote 0x7ffff71fd0e0>, 'NodeGraph': <Shiboken.ObjectType(__module__='NodeGraphQt.base.graph', __doc__='\n    The ``NodeGraph`` class is the main controller for managing all nodes\n    and the node graph.\n\n    Inherited from: :class:`PySide2.QtCore.QObject`\n\n    .. image:: _images/graph.png\n        :width: 60%\n    ', node_created=<PySide2.QtCore.Signal at remote 0x7ffff73fefd0>, nodes_deleted=<PySide2.QtCore.Signal at remote 0x7fffccf201f0>, node_selected=<PySide2.QtCore.Signal at remote 0x7fffccf20210>, node_selection_changed=<PySide2.QtCore.Signal at remote 0x7fffccf20230>, node_double_clicked=<PySide2.QtCore.Signal at re...(truncated), locals=locals@entry={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__', path='example_auto_nodes.py') at remote 0x7ffff75274f0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module at remote 0x7ffff75000e0>, '__file__': 'example_auto_nodes.py', '__cached__': None, 'QtWidgets': <module at remote 0x7fffcec93ea0>, 'QtCore': <module at remote 0x7ffff71fd0e0>, 'NodeGraph': <Shiboken.ObjectType(__module__='NodeGraphQt.base.graph', __doc__='\n    The ``NodeGraph`` class is the main controller for managing all nodes\n    and the node graph.\n\n    Inherited from: :class:`PySide2.QtCore.QObject`\n\n    .. image:: _images/graph.png\n        :width: 60%\n    ', node_created=<PySide2.QtCore.Signal at remote 0x7ffff73fefd0>, nodes_deleted=<PySide2.QtCore.Signal at remote 0x7fffccf201f0>, node_selected=<PySide2.QtCore.Signal at remote 0x7fffccf20210>, node_selection_changed=<PySide2.QtCore.Signal at remote 0x7fffccf20230>, node_double_clicked=<PySide2.QtCore.Signal at re...(truncated), closeit=closeit@entry=1, flags=0x7fffffffda88) at ../Python/pythonrun.c:1085
#47 0x000000000067e627 in pyrun_simple_file (flags=0x7fffffffda88, closeit=1, filename='example_auto_nodes.py', fp=0x961ed0) at ../Python/pythonrun.c:439
#48 PyRun_SimpleFileExFlags (fp=0x961ed0, filename=<optimized out>, closeit=1, flags=0x7fffffffda88) at ../Python/pythonrun.c:472
#49 0x00000000006b6e62 in pymain_run_file (cf=0x7fffffffda88, config=0x9628e0) at ../Modules/main.c:385
#50 pymain_run_python (exitcode=0x7fffffffda80) at ../Modules/main.c:610
#51 Py_RunMain () at ../Modules/main.c:689
#52 0x00000000006b71ed in Py_BytesMain (argc=<optimized out>, argv=<optimized out>) at ../Modules/main.c:743
#53 0x00007ffff7dc70b3 in __libc_start_main (main=0x4ef190 <main>, argc=2, argv=0x7fffffffdc68, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffdc58) at ../csu/libc-start.c:308
#54 0x00000000005f96de in _start () at ../Objects/moduleobject.c:569
(gdb) py-bt
Traceback (most recent call first):
  <built-in method exec_ of Shiboken.ObjectType object at remote 0x1215020>
  File "example_auto_nodes.py", line 93, in <module>
    sys.exit(app.exec_())
mara004 commented 3 years ago

possibly related to #214