Bug 342181

Summary: crash when try to input investment transaction
Product: [Applications] kmymoney Reporter: andy <andy.chung.0>
Component: generalAssignee: KMyMoney Devel Mailing List <kmymoney-devel>
Status: RESOLVED FIXED    
Severity: crash CC: onet.cristian
Priority: NOR    
Version: 4.6.6   
Target Milestone: ---   
Platform: Fedora RPMs   
OS: Linux   
Latest Commit: Version Fixed In: 4.7.2
Sentry Crash Report:
Attachments: system logs

Description andy 2014-12-24 08:08:29 UTC
Application: KMyMoney (kmymoney), signal: Segmentation fault
Using host libthread_db library "/lib64/libthread_db.so.1".
[KCrash Handler]
#5  0x000000000063b280 in InvestTransactionEditor::slotUpdateActivity(MyMoneySplit::investTransactionTypeE) ()
#6  0x00007fc51ae6c25c in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /lib64/libQtCore.so.4
#7  0x00007fc51a45035d in QAbstractItemView::doItemsLayout() () from /lib64/libQtGui.so.4
#8  0x00007fc51a48e530 in QTableView::doItemsLayout() () from /lib64/libQtGui.so.4
#9  0x00007fc51a4869bc in QTableView::visualRect(QModelIndex const&) const () from /lib64/libQtGui.so.4
#10 0x00007fc51a45d8bf in QAbstractItemView::inputMethodQuery(Qt::InputMethodQuery) const () from /lib64/libQtGui.so.4
#11 0x00007fc4f5e155bf in GCINIMContext::update_cursor(QWidget*) () from /usr/lib64/qt4/plugins/inputmethods/im-gcin.so
#12 0x00007fc519f73d48 in QWidget::updateMicroFocus() () from /lib64/libQtGui.so.4
#13 0x00007fc51ae6c25c in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /lib64/libQtCore.so.4
#14 0x00007fc51a5c14c5 in QLineControl::textChanged(QString const&) () from /lib64/libQtGui.so.4
#15 0x00007fc51a35785d in QLineControl::finishChange(int, bool, bool) () from /lib64/libQtGui.so.4
#16 0x00007fc51a3588d4 in QLineControl::internalSetText(QString const&, int, bool) () from /lib64/libQtGui.so.4
#17 0x00007fc51a32012f in QDateTimeEditPrivate::updateEdit() () from /lib64/libQtGui.so.4
#18 0x00007fc51a3265fb in QDateTimeEdit::setDisplayFormat(QString const&) () from /lib64/libQtGui.so.4
#19 0x00007fc51a326c4c in QDateTimeEditPrivate::init(QVariant const&) () from /lib64/libQtGui.so.4
#20 0x00007fc51a327392 in QDateTimeEdit::QDateTimeEdit(QVariant const&, QVariant::Type, QWidget*) () from /lib64/libQtGui.so.4
#21 0x00007fc51a3275fc in QDateEdit::QDateEdit(QDate const&, QWidget*) () from /lib64/libQtGui.so.4
#22 0x00007fc51c273131 in kMyMoneyDateInput::kMyMoneyDateInput(QWidget*, Qt::AlignmentFlag) () from /lib64/libkmm_widgets.so.4
#23 0x00000000005b4b67 in KMyMoneyRegister::Transaction::formRowHeight() const ()
#24 0x00000000006f5aeb in KMyMoneyRegister::Register::updateRegister(bool) ()
#25 0x000000000050f558 in KGlobalLedgerView::startEdit(KMyMoneyRegister::SelectedTransactions const&) ()
#26 0x00000000004a34dd in KMyMoneyView::startEdit(KMyMoneyRegister::SelectedTransactions const&) ()
#27 0x000000000047616b in KMyMoneyApp::slotTransactionsNew() ()
#28 0x0000000000498ecd in KMyMoneyApp::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) ()
#29 0x00007fc51ae6c25c in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /lib64/libQtCore.so.4
#30 0x0000000000516bdf in KGlobalLedgerView::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) ()
#31 0x00007fc51ae6c25c in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /lib64/libQtCore.so.4
#32 0x00000000006f69b9 in KMyMoneyRegister::Register::selectItem(int, int) ()
#33 0x00000000006f6d09 in KMyMoneyRegister::Register::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) [clone .part.72] ()
#34 0x00007fc51ae6c25c in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /lib64/libQtCore.so.4
#35 0x00007fc51a4c1f9f in QTableWidget::cellClicked(int, int) () from /lib64/libQtGui.so.4
#36 0x00007fc51ae6c25c in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /lib64/libQtCore.so.4
#37 0x00007fc51a453f85 in QAbstractItemView::clicked(QModelIndex const&) () from /lib64/libQtGui.so.4
#38 0x00007fc51a45419b in QAbstractItemView::mouseReleaseEvent(QMouseEvent*) () from /lib64/libQtGui.so.4
#39 0x00000000006f1a6f in KMyMoneyRegister::Register::mouseReleaseEvent(QMouseEvent*) ()
#40 0x00007fc519f83118 in QWidget::event(QEvent*) () from /lib64/libQtGui.so.4
#41 0x00007fc51a34231e in QFrame::event(QEvent*) () from /lib64/libQtGui.so.4
#42 0x00007fc51a45de43 in QAbstractItemView::viewportEvent(QEvent*) () from /lib64/libQtGui.so.4
#43 0x00007fc51ae57876 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /lib64/libQtCore.so.4
#44 0x00007fc519f2fedc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /lib64/libQtGui.so.4
#45 0x00007fc519f36abf in QApplication::notify(QObject*, QEvent*) () from /lib64/libQtGui.so.4
#46 0x00007fc51d05b9ea in KApplication::notify(QObject*, QEvent*) () from /lib64/libkdeui.so.5
#47 0x00007fc51ae5770d in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /lib64/libQtCore.so.4
#48 0x00007fc519f3611f in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from /lib64/libQtGui.so.4
#49 0x00007fc519fac532 in QETWidget::translateMouseEvent(_XEvent const*) () from /lib64/libQtGui.so.4
#50 0x00007fc519faaf2c in QApplication::x11ProcessEvent(_XEvent*) () from /lib64/libQtGui.so.4
#51 0x00007fc519fd2fb4 in x11EventSourceDispatch(_GSource*, int (*)(void*), void*) () from /lib64/libQtGui.so.4
#52 0x00007fc5128afaeb in g_main_context_dispatch () from /lib64/libglib-2.0.so.0
#53 0x00007fc5128afe88 in g_main_context_iterate.isra () from /lib64/libglib-2.0.so.0
#54 0x00007fc5128aff3c in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#55 0x00007fc51ae86a1e in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQtCore.so.4
#56 0x00007fc519fd3136 in QGuiEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQtGui.so.4
#57 0x00007fc51ae56261 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQtCore.so.4
#58 0x00007fc51ae565c5 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQtCore.so.4
#59 0x00007fc51ae5bca9 in QCoreApplication::exec() () from /lib64/libQtCore.so.4
#60 0x00000000004578b3 in runKMyMoney(KApplication*, KStartupLogo*) [clone .isra.11] ()
#61 0x0000000000456146 in main ()


Reproducible: Sometimes

Steps to Reproduce:
1. Go to investment account ledger page
2. click on empty transaction line at bottom
3. 

Actual Results:  
crash

Expected Results:  
see the input panel
Comment 1 andy 2014-12-25 08:05:55 UTC
Created attachment 90119 [details]
system logs
Comment 2 andy 2015-01-04 04:37:25 UTC
If I use the default "show transaction form", then there is no crash.  I could new investment transaction and input accordingly.
If I disable kmymoney settings - ledger - "show transaction form", once I press on new in transaction ledger page, the crash would happen as above.
Comment 3 Cristian Oneț 2015-01-05 12:26:05 UTC
Thanks, that seems to be the information needed to reproduce this.
Comment 4 Cristian Oneț 2015-02-27 17:44:09 UTC
Git commit 8bae63bfd82a7e7f63277ab515e8f3cd85ab1423 by Cristian Oneț.
Committed on 27/02/2015 at 17:33.
Pushed by conet into branch 'master'.

Improve the code in the investment transaction editor.

Actually it's pretty poorly written, I don't really know about the
investment editor's requirements so this just makes it safer.

I was not able to reproduce the reported crash in the 4.8 branch but
I think that this improvement is necessary.

M  +22   -21   kmymoney/dialogs/investtransactioneditor.cpp

http://commits.kde.org/kmymoney/8bae63bfd82a7e7f63277ab515e8f3cd85ab1423
Comment 5 Cristian Oneț 2015-02-27 17:46:06 UTC
Git commit 626c3d4e8d9d1910e1a3f2a07e4c5115de197aac by Cristian Oneț.
Committed on 27/02/2015 at 17:33.
Pushed by conet into branch '4.7'.

Improve the code in the investment transaction editor.

Actually it's pretty poorly written, I don't really know about the
investment editor's requirements so this just makes it safer.

I was not able to reproduce the reported crash in the 4.8 branch but
I think that this improvement is necessary.
(cherry picked from commit 8bae63bfd82a7e7f63277ab515e8f3cd85ab1423)

M  +22   -21   kmymoney/dialogs/investtransactioneditor.cpp

http://commits.kde.org/kmymoney/626c3d4e8d9d1910e1a3f2a07e4c5115de197aac
Comment 6 andy 2015-09-03 14:45:19 UTC
dec2014
the bug was reported in fedora 21, kmm 4.6.6.  the crash happens intermittently.
i was also running kmm4.6.6 in windows 7 at the time.  as far as I recall the crash did not happen in windows.

sep2015
I upgraded to fedora 22, running kmm 4.7.1 now.  the crash does not happen anymore.
Am also running kmm 4.7.2 in windows 10.  the crash does not happen.
Comment 7 Cristian Oneț 2015-09-30 16:22:30 UTC
OK, thanks for the feedback.