Package: xdrawchem
Version: 2.0-2
Severity: normal
Hi there!
Under certain circumstances (which actually happen a lot) xdrawchem
hangs when doing "Undo" (be it via the Menu or via Ctrl+Z, it doesn't
matter) and has to be killed. It seems that the hang always happens when
the "Undo" operation would lead to a non-empty worksheet (meaning:
almost always!). Once hung, the program uses 100% CPU load of one core.
Steps to reproduce:
* Start up xdrawchem.
* Add 2 lines by doing the following:
* Activate the line tool by clicking on the icon depicting a
straight, continuous line in the toolbar (tooltip text: "Draw Line").
* Draw a line on the worksheet.
* Draw a second line on the worksheet.
(It doesn't matter, if it's connected to the first line or not.)
* Undo the last action by clicking the menu "Edit" -> "Undo"
* Verify that the GUI doesn't respond any longer.
Terminal output between clicking "Undo" and hanging:
4
PAGESIZE: "PAGE_LETTER"
PAGEORIENT: "PAGE_PORTRAIT"
DP::AtomID: "a0"
DP::SetCoordFromXML: "<coordinate2>74 100</coordinate2>"
DP::SetColorFromXML: "<color>0 0 0</color>"
DP::SetFontFromXML: "<font>Helvetica#12</font>"
"Helvetica" * "12"
DP::SetElementFromXML: "<element>C</element>"
DP::SetElementMaskFromXML: "<elemask> </elemask>"
DP::AtomID: "a1"
DP::SetCoordFromXML: "<coordinate2>99 100</coordinate2>"
DP::SetColorFromXML: "<color>0 0 0</color>"
DP::SetFontFromXML: "<font>Helvetica#12</font>"
"Helvetica" * "12"
DP::SetElementFromXML: "<element>C</element>"
DP::SetElementMaskFromXML: "<elemask> </elemask>"
"<bond id="b0">
<Start>a0</Start>
<End>a1</End>
<order>1</order>
<dash>0</dash>
<thick>1</thick>
<color>0 0 0</color>
</bond>"
GetColorFromXML: "<color>0 0 0</color>"
Compiling Qt and xdrawchem both with DEB_BUILD_OPTIONS="noopt nostrip" I
was able to get meaningful stacktraces. As the thread is still active
(but probably in an infinite loop), those stacktraces vary, a "typical"
one looks like this (from #4 on below they are always identical, the
frames #0 to #3 may be different in other cases):
#0 0x00007ffff5517ac5 in _int_free (av=<optimized out>,
p=<optimized out>, have_lock=0) at malloc.c:4087
#1 0x00007ffff635f7b8 in QString::free (d=0xcd1cc0)
at tools/qstring.cpp:1235
#2 0x000000000042aae5 in QString::~QString (this=0x7fffffffc880,
__in_chrg=<optimized out>)
at /usr/include/qt4/QtCore/qstring.h:880
#3 0x00000000004a33be in ChemData::load_native (this=0xc8f020,
wholefile=...) at xdrawchem/chemdata_xdc.cpp:105
#4 0x00000000004977fe in ChemData::Undo (this=0xc8f020)
at xdrawchem/chemdata_edit.cpp:183
#5 0x00000000005072ff in Render2D::Undo (this=0xb027d0)
at xdrawchem/render2d.cpp:650
#6 0x0000000000429289 in ApplicationWindow::Undo (this=0xa62c90)
at xdrawchem/application.cpp:1945
#7 0x000000000053e432 in ApplicationWindow::qt_static_metacall
(_o=0xa62c90, _c=QMetaObject::InvokeMetaMethod, _id=18,
a=0x7fffffffcc70) at .moc/moc_application.cpp:225
#8 0x00007ffff642d87a in QMetaObject::activate
(sender=sender@entry=0xc7d800, m=m@entry=0x7ffff773cde0
<QAction::staticMetaObject>,
local_signal_index=local_signal_index@entry=1,
argv=argv@entry=0x7fffffffcc70)
at kernel/qobject.cpp:3539
#9 0x00007ffff6c8ca62 in QAction::triggered
(this=this@entry=0xc7d800, _t1=false)
at .moc/release-shared/moc_qaction.cpp:276
#10 0x00007ffff6c8e433 in QAction::activate
(this=0xc7d800, event=event@entry=QAction::Trigger)
at kernel/qaction.cpp:1257
#11 0x00007ffff6c8e58c in QAction::event
(this=<optimized out>, e=<optimized out>)
at kernel/qaction.cpp:1183
#12 0x00007ffff6c92e2c in QApplicationPrivate::notify_helper
(this=this@entry=0x80d360, receiver=receiver@entry=0xc7d800,
e=e@entry=0x7fffffffcf10) at kernel/qapplication.cpp:4567
#13 0x00007ffff6c994a0 in QApplication::notify
(this=0x7fffffffdda0, receiver=0xc7d800, e=0x7fffffffcf10)
at kernel/qapplication.cpp:4353
#14 0x00007ffff64194dd in QCoreApplication::notifyInternal
(this=0x7fffffffdda0, receiver=0xc7d800,
event=event@entry=0x7fffffffcf10)
at kernel/qcoreapplication.cpp:953
#15 0x00007ffff6cc42a6 in sendEvent (event=0x7fffffffcf10,
receiver=<optimized out>)
at ../../include/QtCore/../../src/corelib/kernel/
qcoreapplication.h:231
#16 QShortcutMap::dispatchEvent (this=this@entry=0x80d488,
e=e@entry=0x7fffffffd210) at kernel/qshortcutmap.cpp:887
#17 0x00007ffff6cc43dc in QShortcutMap::tryShortcutEvent
(this=0x80d488, o=o@entry=0xb027d0, e=e@entry=0x7fffffffd210)
at kernel/qshortcutmap.cpp:367
#18 0x00007ffff6c9a773 in QApplication::notify
(this=0x7fffffffdda0, receiver=0xb027d0, e=0x7fffffffd210)
at kernel/qapplication.cpp:3991
#19 0x00007ffff64194dd in QCoreApplication::notifyInternal
(this=0x7fffffffdda0, receiver=receiver@entry=0xb027d0,
event=event@entry=0x7fffffffd210)
at kernel/qcoreapplication.cpp:953
#20 0x00007ffff6c91556 in sendSpontaneousEvent
(event=event@entry=0x7fffffffd210,
receiver=receiver@entry=0xb027d0)
at ../../include/QtCore/../../src/corelib/kernel/
qcoreapplication.h:234
#21 qt_sendSpontaneousEvent (receiver=receiver@entry=0xb027d0,
event=event@entry=0x7fffffffd210)
at kernel/qapplication.cpp:5565
#22 0x00007ffff6d32027 in QKeyMapper::sendKeyEvent
(keyWidget=keyWidget@entry=0xb027d0, grab=grab@entry=false,
type=QEvent::KeyPress, code=90, modifiers=..., text=...,
autorepeat=autorepeat@entry=false, count=1,
nativeScanCode=52, nativeVirtualKey=122, nativeModifiers=20)
at kernel/qkeymapper_x11.cpp:1866
#23 0x00007ffff6d323c9 in QKeyMapperPrivate::translateKeyEvent
(this=0x8810f0, keyWidget=keyWidget@entry=0xb027d0,
event=event@entry=0x7fffffffd7a0, grab=grab@entry=false)
at kernel/qkeymapper_x11.cpp:1836
#24 0x00007ffff6d0c417 in QApplication::x11ProcessEvent
(this=0x7fffffffdda0, event=event@entry=0x7fffffffd7a0)
at kernel/qapplication_x11.cpp:3642
#25 0x00007ffff6d34b32 in x11EventSourceDispatch
(s=0x80fba0, callback=0x0, user_data=0x0)
at kernel/qguieventdispatcher_glib.cpp:146
#26 0x00007ffff4758e04 in g_main_context_dispatch ()
from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#27 0x00007ffff4759048 in ?? ()
from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#28 0x00007ffff47590ec in g_main_context_iteration ()
from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#29 0x00007ffff64467a1 in QEventDispatcherGlib::processEvents
(this=0x80e560, flags=...)
at kernel/qeventdispatcher_glib.cpp:434
#30 0x00007ffff6d34be6 in QGuiEventDispatcherGlib::processEvents
(this=<optimized out>, flags=...)
at kernel/qguieventdispatcher_glib.cpp:204
#31 0x00007ffff64180af in QEventLoop::processEvents
(this=this@entry=0x7fffffffdb70, flags=...)
at kernel/qeventloop.cpp:149
#32 0x00007ffff64183a5 in QEventLoop::exec
(this=this@entry=0x7fffffffdb70, flags=...)
at kernel/qeventloop.cpp:204
#33 0x00007ffff641db79 in QCoreApplication::exec ()
at kernel/qcoreapplication.cpp:1225
#34 0x00000000004ba28f in main (argc=1, argv=0x7fffffffdf08)
at xdrawchem/main.cpp:177
-- System Information:
Debian Release: jessie/sid
APT prefers testing-updates
APT policy: (500, 'testing-updates'), (500, 'testing')
Architecture: amd64 (x86_64)
Kernel: Linux 3.14-2-amd64 (SMP w/1 CPU core)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) (ignored:
LC_ALL set to en_US.UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages xdrawchem depends on:
ii libc6 2.19-11
ii libgcc1 1:4.9.1-4
ii libopenbabel4 2.3.2+dfsg-1.4
ii libqt4-network 4:4.8.6+git64-g5dc8b2b+dfsg-2
ii libqt4-xml 4:4.8.6+git64-g5dc8b2b+dfsg-2
ii libqtcore4 4:4.8.6+git64-g5dc8b2b+dfsg-2
ii libqtgui4 4:4.8.6+git64-g5dc8b2b+dfsg-2
ii libstdc++6 4.9.1-4
xdrawchem recommends no packages.
xdrawchem suggests no packages.
Cheers,
Martin
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]