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]

Reply via email to