Bug 393971

Summary: sip.dump() kills Krita
Product: [Applications] krita Reporter: Michael <miabraha>
Component: ScriptingAssignee: Krita Bugs <krita-bugs-null>
Status: RESOLVED UPSTREAM    
Severity: crash CC: antti.savo, halla
Priority: NOR    
Version First Reported In: 4.0.1   
Target Milestone: ---   
Platform: unspecified   
OS: All   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:
Attachments: Krita pyqt crashes

Description Michael 2018-05-07 19:46:03 UTC
Murder Krita instantly with this one weird trick! It seems to crash Krita no matter what object you feed to dump().

import sip 
sip.dump(Krita.instance())

I'm sure it will always be easy to kill Krita through Python when you poke  around in its guts too much, but although I'm not familiar with sip I don't think it's supposed to be dangerous so it seems like a bug, or at least something that would be good to disable.

Using the Windows App Store version 4.0.1.
Comment 1 Antti Savolainen 2018-05-07 20:44:49 UTC
How exactly do you replicate this crash? I can test if it is a crossplatform bug if I know how to do it precisely.
Comment 2 Michael 2018-05-07 22:56:09 UTC
Created attachment 112492 [details]
Krita pyqt crashes

First one is calling Application().pyqtConfigure(), second is calling sip.dump(Application)
Comment 3 Michael 2018-05-07 22:57:22 UTC
I get a crash from these steps. 

1. Open the Python scripter.

2. Paste this script in:

from krita import *
import sip 
sip.dump(Krita.instance())

3. Run the script.

I discovered another two liner:

from krita import *
Application.pyqtConfigure()


Crash log attached.
Comment 4 Antti Savolainen 2018-05-08 05:39:15 UTC
Thank you, confirming this. Partly. I can replicate a crash using
    from krita import *
    Application.pyqtConfigure()
but not with
    from krita import *
    import sip 
    sip.dump(Krita.instance())
The key to replicating the crash reliably is saving the script to a file or opening one before running it. Using sip might be a Windows specific problem.

Recording of the crash https://webmshare.com/WBR6q
Build Date & Platform:
    krita 4.1.0-pre-alpha (Built on 8.5.2018)
    Xubuntu 17.10
    Krita Lime https://launchpad.net/~kritalime/+archive/ubuntu/ppa

(gdb) bt
#0  0x00007fffad80b7e0 in _PyDict_Next () at /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#1  0x00007fffac9ff3de in  () at /usr/lib/python3/dist-packages/PyQt5/QtCore.cpython-36m-x86_64-linux-gnu.so
#2  0x00007fffad81b5da in _PyCFunction_FastCallDict () at /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#3  0x00007fffad8a9e9f in  () at /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#4  0x00007fffad8aef41 in _PyEval_EvalFrameDefault () at /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#5  0x00007fffad8a9a9a in  () at /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#6  0x00007fffad8aa0fe in PyEval_EvalCodeEx () at /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#7  0x00007fffad8aa12b in PyEval_EvalCode () at /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#8  0x00007fffad8a6fed in  () at /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#9  0x00007fffad81b6f5 in PyCFunction_Call () at /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#10 0x00007fffad8b0950 in _PyEval_EvalFrameDefault () at /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#11 0x00007fffad8a9a9a in  () at /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#12 0x00007fffad8a9d32 in  () at /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#13 0x00007fffad8aef41 in _PyEval_EvalFrameDefault () at /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#14 0x00007fffad8aa099 in  () at /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#15 0x00007fffad8aef41 in _PyEval_EvalFrameDefault () at /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#16 0x00007fffad8b27b7 in _PyFunction_FastCallDict () at /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#17 0x00007fffad7b12ce in _PyObject_FastCallDict () at /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#18 0x00007fffad7b13cc in _PyObject_Call_Prepend () at /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#19 0x00007fffad7b1098 in PyObject_Call () at /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#20 0x00007fffac9fadac in  () at /usr/lib/python3/dist-packages/PyQt5/QtCore.cpython-36m-x86_64-linux-gnu.so
#21 0x00007fffac9fb110 in  () at /usr/lib/python3/dist-packages/PyQt5/QtCore.cpython-36m-x86_64-linux-gnu.so
#22 0x00007fffac9f5030 in  () at /usr/lib/python3/dist-packages/PyQt5/QtCore.cpython-36m-x86_64-linux-gnu.so
#23 0x00007fffac9f5997 in  () at /usr/lib/python3/dist-packages/PyQt5/QtCore.cpython-36m-x86_64-linux-gnu.so
#24 0x00007ffff50f29a9 in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#25 0x00007ffff5e37d82 in QAction::triggered(bool) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#26 0x00007ffff5e3a46c in QAction::activate(QAction::ActionEvent) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#27 0x00007ffff5ffbafb in  () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#28 0x00007ffff5ffbd54 in QAbstractButton::mouseReleaseEvent(QMouseEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#29 0x00007ffff5fdb08a in QToolButton::mouseReleaseEvent(QMouseEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#30 0x00007ffff5e7edc8 in QWidget::event(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#31 0x00007ffff5fdb124 in QToolButton::event(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#32 0x00007ffff5e3e46c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#33 0x00007ffff5e4628f in QApplication::notify(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#34 0x00007ffff76aa4f5 in KisApplication::notify(QObject*, QEvent*) (this=0x7fffffffde40, receiver=0x5555607ebd10, event=0x7fffffffd500) at ./libs/ui/KisApplication.cpp:652
#35 0x00007ffff50c3de8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#36 0x00007ffff5e45262 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#37 0x00007ffff5e9994b in  () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#38 0x00007ffff5e9bfba in  () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#39 0x00007ffff5e3e46c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#40 0x00007ffff5e45d34 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#41 0x00007ffff76aa4f5 in KisApplication::notify(QObject*, QEvent*) (this=0x7fffffffde40, receiver=0x5555607c5170, event=0x7fffffffd990) at ./libs/ui/KisApplication.cpp:652
#42 0x00007ffff50c3de8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#43 0x00007ffff5682f43 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#44 0x00007ffff5684a25 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#45 0x00007ffff565ccab in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#46 0x00007fffe264d5a0 in  () at /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#47 0x00007fffec78ffb7 in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#48 0x00007fffec7901f0 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#49 0x00007fffec79027c in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#50 0x00007ffff511c47f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#51 0x00007ffff50c1e3a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#52 0x00007ffff50cada4 in QCoreApplication::exec() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#53 0x0000555555849493 in main(int, char**) (argc=1, argv=0x7fffffffdfc8) at ./krita/main.cc:361
Comment 5 Halla Rempt 2018-05-08 06:59:00 UTC
Curious, this doesn't crash on my own build. It gives this output:

<PyKrita.krita.Krita object at 0x7f04ec030948>
    Reference count: 5
    Address of wrapped object: 0x10799450
    Created by: C/C++
    To be destroyed by: C/C++
    Parent wrapper: NULL
    Next sibling wrapper: NULL
    Previous sibling wrapper: NULL
    First child wrapper: NULL
Comment 6 Halla Rempt 2018-08-13 14:46:20 UTC
With Kubuntu 18.04 I get:

#6  0x00007f0529ecba90 in _PyDict_Next () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#7  0x00007f05291073de in ?? () from /usr/lib/python3/dist-packages/PyQt5/QtCore.cpython-36m-x86_64-linux-gnu.so
#8  0x00007f0529edb88a in _PyCFunction_FastCallDict () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#9  0x00007f0529f69dff in ?? () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#10 0x00007f0529f6eeb1 in _PyEval_EvalFrameDefault () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#11 0x00007f0529f699fa in ?? () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#12 0x00007f0529f6a05e in PyEval_EvalCodeEx () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#13 0x00007f0529f6a08b in PyEval_EvalCode () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#14 0x00007f0529f66f4d in ?? () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#15 0x00007f0529edb9a5 in PyCFunction_Call () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#16 0x00007f0529f708c0 in _PyEval_EvalFrameDefault () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#17 0x00007f0529f699fa in ?? () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#18 0x00007f0529f69c92 in ?? () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#19 0x00007f0529f6eeb1 in _PyEval_EvalFrameDefault () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#20 0x00007f0529f69ff9 in ?? () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#21 0x00007f0529f6eeb1 in _PyEval_EvalFrameDefault () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#22 0x00007f0529f69ff9 in ?? () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#23 0x00007f0529f6eeb1 in _PyEval_EvalFrameDefault () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#24 0x00007f0529f72747 in _PyFunction_FastCallDict () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#25 0x00007f0529e713ae in _PyObject_FastCallDict () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#26 0x00007f0529e714ac in _PyObject_Call_Prepend () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#27 0x00007f0529e71178 in PyObject_Call () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#28 0x00007f052910a090 in ?? () from /usr/lib/python3/dist-packages/PyQt5/QtCore.cpython-36m-x86_64-linux-gnu.so
#29 0x00007f052910a568 in ?? () from /usr/lib/python3/dist-packages/PyQt5/QtCore.cpython-36m-x86_64-linux-gnu.so
#30 0x00007f052910a7f0 in ?? () from /usr/lib/python3/dist-packages/PyQt5/QtCore.cpython-36m-x86_64-linux-gnu.so
#31 0x00007f052910b167 in ?? () from /usr/lib/python3/dist-packages/PyQt5/QtCore.cpython-36m-x86_64-linux-gnu.so
#32 0x00007f056b775259 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#33 0x00007f056c49be52 in QAction::triggered(bool) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#34 0x00007f056c49e59c in QAction::activate(QAction::ActionEvent) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#35 0x00007f056c5950fb in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#36 0x00007f056c59535d in QAbstractButton::mouseReleaseEvent(QMouseEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#37 0x00007f056c6764ba in QToolButton::mouseReleaseEvent(QMouseEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#38 0x00007f056c4e1378 in QWidget::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#39 0x00007f056c676554 in QToolButton::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#40 0x00007f056c4a26cc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#41 0x00007f056c4aa3df in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#42 0x00007f056dd99d87 in KisApplication::notify (this=<optimized out>, receiver=0x556df8634b80, event=0x7ffe1ada67e0) at /home/boud/dev/krita/libs/ui/KisApplication.cpp:608
#43 0x00007f056b745938 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#44 0x00007f056c4a93b2 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#45 0x00007f056c4fc4d3 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#46 0x00007f056c4feb09 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#47 0x00007f056c4a26cc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#48 0x00007f056c4a9e84 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#49 0x00007f056dd99d87 in KisApplication::notify (this=<optimized out>, receiver=0x556df8646bf0, event=0x7ffe1ada6c50) at /home/boud/dev/krita/libs/ui/KisApplication.cpp:608
#50 0x00007f056b745938 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#51 0x00007f056bcb1603 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#52 0x00007f056bcb30d5 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#53 0x00007f056bc8b03b in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#54 0x00007f055b52c2cb in ?? () from /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#55 0x00007f056b743b6a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#56 0x00007f056b74ced4 in QCoreApplication::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#57 0x0000556dec221f18 in main (argc=<optimized out>, argv=0x7ffe1ada71a8) at /home/boud/dev/krita/krita/main.cc:435
Comment 7 Halla Rempt 2018-08-13 14:52:32 UTC
However, I'm pretty sure we cannot fix issues with crashes in sip or pyqt; this is not Krita code that is crashing.