Bug 409523 - Python2 backend crashes if the first cell first time is executed by a mouse click on a 'green triangle'
Summary: Python2 backend crashes if the first cell first time is executed by a mouse c...
Status: RESOLVED FIXED
Alias: None
Product: cantor
Classification: Applications
Component: python2-backend (show other bugs)
Version: unspecified
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: Cantor Bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-07-05 11:14 UTC by vialav
Modified: 2019-07-05 11:37 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In: 19.04.3
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description vialav 2019-07-05 11:14:35 UTC
SUMMARY
Python2 backend crashes with a mouse click, but not if Shift+Enter

STEPS TO REPRODUCE
1. Compile the latest Cantor sources
2. Enter in (but don't execute for now) the following simple example:
``` python
import matplotlib
matplotlib.use("WXAgg")
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 10, 0.2)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)
plt.show()
```
3. Click on the "green triangle" to execute a cell

OBSERVED RESULT
Cantor crashes

EXPECTED RESULT
The cell result

SOFTWARE/OS VERSIONS
ar reported earlier

ADDITIONAL INFORMATION Cantor run under gdb
```
─── Output/messages ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Invalid Context= "stock" line for icon theme:  "/usr/share/icons/ubuntu-mono-dark/stock/16/"
Invalid Context= "stock" line for icon theme:  "/usr/share/icons/ubuntu-mono-dark/stock/22/"
Invalid Context= "stock" line for icon theme:  "/usr/share/icons/ubuntu-mono-dark/stock/24/"
Invalid Context= "stock" line for icon theme:  "/usr/share/icons/ubuntu-mono-dark/stock/32/"
Invalid Context= "stock" line for icon theme:  "/usr/share/icons/ubuntu-mono-dark/stock/48/"
Invalid Context= "stock" line for icon theme:  "/usr/share/icons/ubuntu-mono-dark/stock/64/"
Invalid Context= "stock" line for icon theme:  "/usr/share/icons/ubuntu-mono-dark/stock/128/"
Invalid Context= "Legacy" line for icon theme:  "/usr/share/icons/Adwaita/8x8/legacy/"
Invalid Context= "Legacy" line for icon theme:  "/usr/share/icons/Adwaita/16x16/legacy/"
Invalid Context= "UI" line for icon theme:  "/usr/share/icons/Adwaita/16x16/ui/"
Invalid Context= "Legacy" line for icon theme:  "/usr/share/icons/Adwaita/22x22/legacy/"
Invalid Context= "Legacy" line for icon theme:  "/usr/share/icons/Adwaita/24x24/legacy/"
Invalid Context= "UI" line for icon theme:  "/usr/share/icons/Adwaita/24x24/ui/"
Invalid Context= "Legacy" line for icon theme:  "/usr/share/icons/Adwaita/32x32/legacy/"
Invalid Context= "UI" line for icon theme:  "/usr/share/icons/Adwaita/32x32/ui/"
Invalid Context= "Legacy" line for icon theme:  "/usr/share/icons/Adwaita/48x48/legacy/"
Invalid Context= "UI" line for icon theme:  "/usr/share/icons/Adwaita/48x48/ui/"
Invalid Context= "Legacy" line for icon theme:  "/usr/share/icons/Adwaita/256x256/legacy/"
Invalid Context= "Legacy" line for icon theme:  "/usr/share/icons/Adwaita/512x512/legacy/"
Invalid Context= "UI" line for icon theme:  "/usr/share/icons/Adwaita/scalable/ui/"
dir:  "/usr/lib/x86_64-linux-gnu/qt5/plugins/cantor/backends"
Creating MaximaBackend
Creating NullBackend
Creating PythonBackend
Creating PythonBackend
Creating RBackend
Creating SageBackend
Creating ScilabBackend
dir:  "/usr/bin/cantor/backends"
[Detaching after fork from child process 12264]
[Detaching after fork from child process 12265]
[Detaching after fork from child process 12266]
[Detaching after fork from child process 12267]
"Julia" true true
[Detaching after fork from child process 12268]
[Detaching after fork from child process 12269]
"KAlgebra" true true
"Lua" true true
"Maxima" true true
"nullbackend" false true
"Octave" true true
"Python 2" true true
"Python 3" true true
"Qalculate" true true
"R" true true
"Sage" true true
"Scilab" true true
Backend  "Python 2"  offers extensions:  ("LinearAlgebraExtension", "PackagingExtension", "PlotExtension", "ScriptExtension", "VariableManagementExtension")
PythonSession(0x7fffe4008bf0) Cantor::VariableManagementExtension(0x5555559380b0, name = "VariableManagementExtension")
PythonHighlighter constructor
PythonKeywords constructor
new worksheetaccess interface
loading assistants...
dir:  "/usr/lib/x86_64-linux-gnu/qt5/plugins/cantor/assistants"
plugin  "AdvancedPlot"  is not supported by  "Python 2"
plugin  "Create Matrix"  is supported by  "Python 2" , requires extensions  ("LinearAlgebraExtension")
plugin  "Differentiate"  is not supported by  "Python 2"
plugin  "Eigenvalues"  is not supported by  "Python 2"
plugin  "Eigenvectors"  is not supported by  "Python 2"
plugin  "Import Package"  is supported by  "Python 2" , requires extensions  ("PackagingExtension")
plugin  "Integrate"  is not supported by  "Python 2"
plugin  "Invert Matrix"  is not supported by  "Python 2"
plugin  "Plot2d"  is supported by  "Python 2" , requires extensions  ("PlotExtension")
plugin  "Plot3d"  is supported by  "Python 2" , requires extensions  ("PlotExtension")
plugin  "QalculatePlot"  is not supported by  "Python 2"
plugin  "RunScript"  is supported by  "Python 2" , requires extensions  ("ScriptExtension")
plugin  "Solve"  is not supported by  "Python 2"
dir:  "/usr/bin/cantor/assistants"
loading panel plugins for session of type  "Python 2"
Requesting capabilities of Python3Session
dir:  "/usr/lib/x86_64-linux-gnu/qt5/plugins/cantor/panels"
plugin  "Help"  is supported, requires extensions  ("")
plugin  "Variable Manager"  is supported, requires extensions  ("VariableManagementExtension")
dir:  "/usr/bin/cantor/panels"
Requesting capabilities of Python3Session
Entry Appended
adding panel for  "Help"
adding panel for  "Variable Manager"
[Detaching after fork from child process 12279]
evaluating:  "import matplotlib\nmatplotlib.use(\"WXAgg\")\nimport matplotlib.pyplot as plt\nimport numpy as np\nx = np.arange(0, 10, 0.2)\ny = np.sin(x)\nfig, ax = plt.subplots()\nax.plot(x, y)\nplt.show()"
wsStatusChange 0
wsStatusChange 0
QFileSystemWatcher::removePaths: list is empty
run first expression "import matplotlib\nmatplotlib.use(\"WXAgg\")\nimport matplotlib.pyplot as plt\nimport numpy as np\nx = np.arange(0, 10, 0.2)\ny = np.sin(x)\nfig, ax = plt.subplots()\nax.plot(x, y)\nplt.savefig('/tmp/cantor_python-h12252.png')\n"
send command:  "code" ("import matplotlib\nmatplotlib.use(\"WXAgg\")\nimport matplotlib.pyplot as plt\nimport numpy as np\nx = np.arange(0, 10, 0.2)\ny = np.sin(x)\nfig, ax = plt.subplots()\nax.plot(x, y)\nplt.savefig('/tmp/cantor_python-t12252.png')\n")

Thread 1 "cantor" received signal SIGSEGV, Segmentation fault.
0x00007ffff621e95d in QIODevice::write(char const*, long long) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
─── Assembly ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x00007ffff621e955 ? push   %rbx
0x00007ffff621e956 ? mov    %rdi,%rbp
0x00007ffff621e959 ? sub    $0x18,%rsp
0x00007ffff621e95d ? mov    0x8(%rdi),%rbx
0x00007ffff621e961 ? mov    0x70(%rbx),%eax
0x00007ffff621e964 ? test   $0x2,%al
0x00007ffff621e966 ? jne    0x7ffff621e998 <_ZN9QIODevice5writeEPKcx+72>
─── Expressions ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
   rax 0x00007fffffffb450    rbx 0x0000555555c6d6a0    rcx 0x0000000000000000    rdx 0x00000000000000df    rsi 0x0000555555edc8f8    rdi 0x0000000000000000    rbp 0x0000000000000000    rsp 0x00007fffffffb3c0
    r8 0x00007ffff5e63c40     r9 0x0000000000000007    r10 0x000000000000001d    r11 0x0000000000000001    r12 0x00000000000001b2    r13 0x0000555555c6d698    r14 0x0000000000000000    r15 0x00007fffffffb450
   rip 0x00007ffff621e95d eflags [ PF IF RF ]           cs 0x00000033             ss 0x0000002b             ds 0x00000000             es 0x00000000             fs 0x00000000             gs 0x00000000        
─── Source ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Stack ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00007ffff621e95d in QIODevice::write(char const*, long long)
(no arguments)
[1] from 0x00007fffe00165e1 in PythonSession::sendCommand(QString const&, QStringList) const
(no arguments)
[+]
─── Threads ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[6] id 12261 name cantor:disk$0 from 0x00007ffff5c673bb in futex_wait_cancelable+27 at ../sysdeps/unix/sysv/linux/futex-internal.h:88
[5] id 12259 name QDBusConnection from 0x00007ffff5d90729 in __GI___poll+73 at ../sysdeps/unix/sysv/linux/poll.c:29
[4] id 12258 name gdbus from 0x00007ffff5d90729 in __GI___poll+73 at ../sysdeps/unix/sysv/linux/poll.c:29
[3] id 12257 name gmain from 0x00007ffff5d90729 in __GI___poll+73 at ../sysdeps/unix/sysv/linux/poll.c:29
[2] id 12256 name QXcbEventReader from 0x00007ffff5d90729 in __GI___poll+73 at ../sysdeps/unix/sysv/linux/poll.c:29
[1] id 12252 name cantor from 0x00007ffff621e95d in QIODevice::write(char const*, long long)
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
>>> bt
#0  0x00007ffff621e95d in QIODevice::write(char const*, long long) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#1  0x00007fffe00165e1 in PythonSession::sendCommand(QString const&, QStringList) const () at /usr/lib/x86_64-linux-gnu/libcantor_pythonbackend.so
#2  0x00007fffe0016b9b in PythonSession::runFirstExpression() () at /usr/lib/x86_64-linux-gnu/libcantor_pythonbackend.so
#3  0x00007fffe00160b6 in PythonSession::evaluateExpression(QString const&, Cantor::Expression::FinishingBehavior, bool) () at /usr/lib/x86_64-linux-gnu/libcantor_pythonbackend.so
#4  0x00007fffc95044c5 in  () at /usr/lib/x86_64-linux-gnu/qt5/plugins/libcantorpart.so
#5  0x00007fffc94cc2dc in  () at /usr/lib/x86_64-linux-gnu/qt5/plugins/libcantorpart.so
#6  0x00007ffff6328645 in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#7  0x00007fffc9519570 in  () at /usr/lib/x86_64-linux-gnu/qt5/plugins/libcantorpart.so
#8  0x00007ffff735451c in QGraphicsItem::sceneEvent(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#9  0x00007ffff7377968 in  () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#10 0x00007ffff737cc9a in QGraphicsScene::mouseReleaseEvent(QGraphicsSceneMouseEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#11 0x00007ffff7386aa0 in QGraphicsScene::event(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#12 0x00007ffff707783c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#13 0x00007ffff707f104 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#14 0x00007ffff62f99c8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#15 0x00007ffff73a3d2c in QGraphicsView::mouseReleaseEvent(QMouseEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#16 0x00007ffff70b6048 in QWidget::event(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#17 0x00007ffff71574de in QFrame::event(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#18 0x00007ffff73a4c5b in QGraphicsView::viewportEvent(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#19 0x00007ffff62f96ac in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#20 0x00007ffff7077815 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#21 0x00007ffff707f65f in QApplication::notify(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#22 0x00007ffff62f99c8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#23 0x00007ffff707e632 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#24 0x00007ffff70d116b in  () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#25 0x00007ffff70d37da in  () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#26 0x00007ffff707783c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#27 0x00007ffff707f104 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#28 0x00007ffff62f99c8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#29 0x00007ffff68bb583 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#30 0x00007ffff68bd055 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#31 0x00007ffff68942eb in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#32 0x00007fffee503260 in  () at /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#33 0x00007ffff329e48e in g_main_context_dispatch () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#34 0x00007ffff329e728 in  () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#35 0x00007ffff329e7c0 in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#36 0x00007ffff635297f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#37 0x00007ffff62f79fa in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#38 0x00007ffff6300aa4 in QCoreApplication::exec() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#39 0x0000555555563084 in  ()
#40 0x00007ffff5ca5b6b in __libc_start_main (main=0x5555555623c0, argc=1, argv=0x7fffffffcbc8, init=<optimised out>, fini=<optimised out>, rtld_fini=<optimised out>, stack_end=0x7fffffffcbb8) at ../csu/libc-start.c:308
#41 0x000055555556388a in  ()
>>> disassemble 
Dump of assembler code for function _ZN9QIODevice5writeEPKcx:
   0x00007ffff621e950 <+0>:	push   %r13
   0x00007ffff621e952 <+2>:	push   %r12
   0x00007ffff621e954 <+4>:	push   %rbp
   0x00007ffff621e955 <+5>:	push   %rbx
   0x00007ffff621e956 <+6>:	mov    %rdi,%rbp
   0x00007ffff621e959 <+9>:	sub    $0x18,%rsp
=> 0x00007ffff621e95d <+13>:	mov    0x8(%rdi),%rbx
   0x00007ffff621e961 <+17>:	mov    0x70(%rbx),%eax
   0x00007ffff621e964 <+20>:	test   $0x2,%al
   0x00007ffff621e966 <+22>:	jne    0x7ffff621e998 <_ZN9QIODevice5writeEPKcx+72>
   0x00007ffff621e968 <+24>:	test   %eax,%eax
   0x00007ffff621e96a <+26>:	je     0x7ffff621ea60 <_ZN9QIODevice5writeEPKcx+272>
   0x00007ffff621e970 <+32>:	lea    0x271fa7(%rip),%rdx        # 0x7ffff649091e
   0x00007ffff621e977 <+39>:	lea    0x271f9a(%rip),%rsi        # 0x7ffff6490918
   0x00007ffff621e97e <+46>:	callq  0x7ffff621c640
   0x00007ffff621e983 <+51>:	mov    $0xffffffffffffffff,%rax
   0x00007ffff621e98a <+58>:	add    $0x18,%rsp
   0x00007ffff621e98e <+62>:	pop    %rbx
   0x00007ffff621e98f <+63>:	pop    %rbp
   0x00007ffff621e990 <+64>:	pop    %r12
   0x00007ffff621e992 <+66>:	pop    %r13
   0x00007ffff621e994 <+68>:	retq   
   0x00007ffff621e995 <+69>:	nopl   (%rax)
   0x00007ffff621e998 <+72>:	test   %rdx,%rdx
   0x00007ffff621e99b <+75>:	js     0x7ffff621eafd <_ZN9QIODevice5writeEPKcx+429>
   0x00007ffff621e9a1 <+81>:	mov    0xd4(%rbx),%r12d
   0x00007ffff621e9a8 <+88>:	mov    %rsi,%r13
   0x00007ffff621e9ab <+91>:	test   %r12d,%r12d
   0x00007ffff621e9ae <+94>:	je     0x7ffff621ea88 <_ZN9QIODevice5writeEPKcx+312>
   0x00007ffff621e9b4 <+100>:	mov    0xa0(%rbx),%rsi
   0x00007ffff621e9bb <+107>:	cmp    0xa8(%rbx),%rsi
   0x00007ffff621e9c2 <+114>:	mov    (%rdi),%rax
   0x00007ffff621e9c5 <+117>:	je     0x7ffff621e9f0 <_ZN9QIODevice5writeEPKcx+160>
   0x00007ffff621e9c7 <+119>:	cmp    $0x1,%r12d
   0x00007ffff621e9cb <+123>:	je     0x7ffff621eaae <_ZN9QIODevice5writeEPKcx+350>
   0x00007ffff621e9d1 <+129>:	mov    %rdx,0x8(%rsp)
   0x00007ffff621e9d6 <+134>:	mov    %rbp,%rdi
   0x00007ffff621e9d9 <+137>:	callq  *0x88(%rax)
   0x00007ffff621e9df <+143>:	test   %al,%al
   0x00007ffff621e9e1 <+145>:	je     0x7ffff621eb1c <_ZN9QIODevice5writeEPKcx+460>
   0x00007ffff621e9e7 <+151>:	mov    0x0(%rbp),%rax
   0x00007ffff621e9eb <+155>:	mov    0x8(%rsp),%rdx
   0x00007ffff621e9f0 <+160>:	mov    %r13,%rsi
   0x00007ffff621e9f3 <+163>:	mov    %rbp,%rdi
   0x00007ffff621e9f6 <+166>:	callq  *0xd8(%rax)
   0x00007ffff621e9fc <+172>:	cmp    $0x1,%r12d
   0x00007ffff621ea00 <+176>:	je     0x7ffff621e98a <_ZN9QIODevice5writeEPKcx+58>
   0x00007ffff621ea02 <+178>:	test   %rax,%rax
   0x00007ffff621ea05 <+181>:	jle    0x7ffff621e98a <_ZN9QIODevice5writeEPKcx+58>
   0x00007ffff621ea07 <+183>:	mov    %rax,0x8(%rsp)
   0x00007ffff621ea0c <+188>:	mov    0x90(%rbx),%rdi
   0x00007ffff621ea13 <+195>:	movq   0x8(%rsp),%xmm0
   0x00007ffff621ea19 <+201>:	punpcklqdq %xmm0,%xmm0
   0x00007ffff621ea1d <+205>:	movdqu 0xa0(%rbx),%xmm1
   0x00007ffff621ea25 <+213>:	test   %rdi,%rdi
   0x00007ffff621ea28 <+216>:	paddq  %xmm1,%xmm0
   0x00007ffff621ea2c <+220>:	movups %xmm0,0xa0(%rbx)
   0x00007ffff621ea33 <+227>:	je     0x7ffff621e98a <_ZN9QIODevice5writeEPKcx+58>
   0x00007ffff621ea39 <+233>:	mov    %rax,%rsi
   0x00007ffff621ea3c <+236>:	cmp    %rax,0x18(%rdi)
   0x00007ffff621ea40 <+240>:	cmovle 0x18(%rdi),%rsi
   0x00007ffff621ea45 <+245>:	callq  0x7ffff618d520 <_ZN11QRingBuffer4freeEx>
   0x00007ffff621ea4a <+250>:	mov    0x8(%rsp),%rax
   0x00007ffff621ea4f <+255>:	add    $0x18,%rsp
   0x00007ffff621ea53 <+259>:	pop    %rbx
   0x00007ffff621ea54 <+260>:	pop    %rbp
   0x00007ffff621ea55 <+261>:	pop    %r12
   0x00007ffff621ea57 <+263>:	pop    %r13
   0x00007ffff621ea59 <+265>:	retq   
   0x00007ffff621ea5a <+266>:	nopw   0x0(%rax,%rax,1)
   0x00007ffff621ea60 <+272>:	lea    0x271e38(%rip),%rdx        # 0x7ffff649089f
   0x00007ffff621ea67 <+279>:	lea    0x271eaa(%rip),%rsi        # 0x7ffff6490918
   0x00007ffff621ea6e <+286>:	callq  0x7ffff621c640
   0x00007ffff621ea73 <+291>:	add    $0x18,%rsp
   0x00007ffff621ea77 <+295>:	mov    $0xffffffffffffffff,%rax
   0x00007ffff621ea7e <+302>:	pop    %rbx
   0x00007ffff621ea7f <+303>:	pop    %rbp
   0x00007ffff621ea80 <+304>:	pop    %r12
   0x00007ffff621ea82 <+306>:	pop    %r13
   0x00007ffff621ea84 <+308>:	retq   
   0x00007ffff621ea85 <+309>:	nopl   (%rax)
   0x00007ffff621ea88 <+312>:	mov    0x8(%rbx),%rdi
   0x00007ffff621ea8c <+316>:	mov    %rdx,0x8(%rsp)
   0x00007ffff621ea91 <+321>:	mov    (%rdi),%rax
   0x00007ffff621ea94 <+324>:	callq  *0x60(%rax)
   0x00007ffff621ea97 <+327>:	test   %al,%al
   0x00007ffff621ea99 <+329>:	mov    0x8(%rsp),%rdx
   0x00007ffff621ea9e <+334>:	je     0x7ffff621ead0 <_ZN9QIODevice5writeEPKcx+384>
   0x00007ffff621eaa0 <+336>:	mov    0x0(%rbp),%rax
   0x00007ffff621eaa4 <+340>:	movl   $0x1,0xd4(%rbx)
   0x00007ffff621eaae <+350>:	mov    0xd8(%rax),%rax
   0x00007ffff621eab5 <+357>:	add    $0x18,%rsp
   0x00007ffff621eab9 <+361>:	mov    %r13,%rsi
   0x00007ffff621eabc <+364>:	pop    %rbx
   0x00007ffff621eabd <+365>:	mov    %rbp,%rdi
   0x00007ffff621eac0 <+368>:	pop    %rbp
   0x00007ffff621eac1 <+369>:	pop    %r12
   0x00007ffff621eac3 <+371>:	pop    %r13
   0x00007ffff621eac5 <+373>:	jmpq   *%rax
   0x00007ffff621eac7 <+375>:	nopw   0x0(%rax,%rax,1)
   0x00007ffff621ead0 <+384>:	mov    0xa0(%rbx),%rsi
   0x00007ffff621ead7 <+391>:	cmp    %rsi,0xa8(%rbx)
   0x00007ffff621eade <+398>:	mov    $0x2,%r12d
   0x00007ffff621eae4 <+404>:	movl   $0x2,0xd4(%rbx)
   0x00007ffff621eaee <+414>:	mov    0x0(%rbp),%rax
   0x00007ffff621eaf2 <+418>:	jne    0x7ffff621e9d1 <_ZN9QIODevice5writeEPKcx+129>
   0x00007ffff621eaf8 <+424>:	jmpq   0x7ffff621e9f0 <_ZN9QIODevice5writeEPKcx+160>
   0x00007ffff621eafd <+429>:	lea    0x271d83(%rip),%rdx        # 0x7ffff6490887
   0x00007ffff621eb04 <+436>:	lea    0x271e0d(%rip),%rsi        # 0x7ffff6490918
   0x00007ffff621eb0b <+443>:	callq  0x7ffff621c640
   0x00007ffff621eb10 <+448>:	mov    $0xffffffffffffffff,%rax
   0x00007ffff621eb17 <+455>:	jmpq   0x7ffff621e98a <_ZN9QIODevice5writeEPKcx+58>
   0x00007ffff621eb1c <+460>:	mov    $0xffffffffffffffff,%rax
   0x00007ffff621eb23 <+467>:	jmpq   0x7ffff621e98a <_ZN9QIODevice5writeEPKcx+58>
End of assembler dump.
```