Bug 336258 - Crash while editing a split
Summary: Crash while editing a split
Status: RESOLVED FIXED
Alias: None
Product: kmymoney
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: KMyMoney Devel Mailing List
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2014-06-15 12:23 UTC by allan
Modified: 2014-09-24 19:40 UTC (History)
1 user (show)

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description allan 2014-06-15 12:23:42 UTC
Application: kmymoney (4.6.90-13dee26afe)
KDE Platform Version: 4.10.5 (Compiled from sources)
Qt Version: 4.8.4
Operating System: Linux 3.8.0-26-generic i686
Distribution: Linux Mint 15 Olivia

-- Information about the crash:
- What I was doing when the application crashed:

- Unusual behavior I noticed:
A number of transactions I'd imported had been matched to prior split transactions and while I was editing these. It was not possible to edit any of the shown splits.  Each time I tried the cursor skipped down a line.  I had to delete the splits and re-enter, but keyboard entry was misbehaving, but input via the calculator worked.

While attempting one of these, the crash occurred.

I had tried changing from ibus to xim but this made no difference.

-- Backtrace:
Application: KMyMoney (kmymoney), signal: Segmentation fault
Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1".
[Current thread is 1 (Thread 0xb3934740 (LWP 30511))]

Thread 3 (Thread 0xb049fb40 (LWP 30512)):
#0  0xb7706424 in __kernel_vsyscall ()
#1  0xb4ed74f2 in clock_gettime () from /lib/i386-linux-gnu/libc.so.6
#2  0xb5ce50d5 in ?? () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#3  0xb5dcc80e in ?? () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#4  0xb5dccb9a in ?? () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#5  0xb5dcb373 in ?? () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#6  0xb5dcb40d in ?? () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#7  0xb4396d21 in g_main_context_prepare () from /lib/i386-linux-gnu/libglib-2.0.so.0
#8  0xb43975cf in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#9  0xb4397831 in g_main_context_iteration () from /lib/i386-linux-gnu/libglib-2.0.so.0
#10 0xb5dcbc3f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#11 0xb5d983ec in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#12 0xb5d986e1 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#13 0xb5c83fec in QThread::exec() () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#14 0xb5d77f2d in ?? () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#15 0xb5c86b18 in ?? () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#16 0xb67d7d78 in start_thread () from /lib/i386-linux-gnu/libpthread.so.0
#17 0xb4ec3fee in clone () from /lib/i386-linux-gnu/libc.so.6

Thread 2 (Thread 0xad960b40 (LWP 31289)):
#0  0xb43dad23 in g_mutex_lock () from /lib/i386-linux-gnu/libglib-2.0.so.0
#1  0xb439781a in g_main_context_iteration () from /lib/i386-linux-gnu/libglib-2.0.so.0
#2  0xb5dcbc3f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#3  0xb5d983ec in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#4  0xb5d986e1 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#5  0xb5c83fec in QThread::exec() () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#6  0xb5d77f2d in ?? () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#7  0xb5c86b18 in ?? () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#8  0xb67d7d78 in start_thread () from /lib/i386-linux-gnu/libpthread.so.0
#9  0xb4ec3fee in clone () from /lib/i386-linux-gnu/libc.so.6

Thread 1 (Thread 0xb3934740 (LWP 30511)):
[KCrash Handler]
#6  isEmpty (this=<optimized out>) at /usr/include/qt4/QtCore/qstring.h:705
#7  kMyMoneySplitTable::endEdit (this=0xd9e7758, keyBoardDriven=keyBoardDriven@entry=false) at /home/aga/Git/kmymoney/kmymoney/dialogs/kmymoneysplittable.cpp:653
#8  0x08369e67 in kMyMoneySplitTable::slotEndEdit (this=0xd9e7758) at /home/aga/Git/kmymoney/kmymoney/dialogs/kmymoneysplittable.cpp:638
#9  0xb5dafb56 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#10 0xb5923d2d in QAbstractButton::clicked(bool) () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#11 0xb562999d in ?? () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#12 0xb562a19b in ?? () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#13 0xb562a456 in QAbstractButton::mouseReleaseEvent(QMouseEvent*) () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#14 0xb5260710 in QWidget::event(QEvent*) () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#15 0xb562b2f2 in QAbstractButton::event(QEvent*) () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#16 0xb56ca8b8 in QPushButton::event(QEvent*) () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#17 0xb5209c7c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#18 0xb520d587 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#19 0xb6bac491 in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#20 0xb5d9990e in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#21 0xb5210823 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#22 0xb5292735 in ?? () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#23 0xb5291525 in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#24 0xb52c0904 in ?? () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#25 0xb43973b3 in g_main_context_dispatch () from /lib/i386-linux-gnu/libglib-2.0.so.0
#26 0xb4397750 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#27 0xb4397831 in g_main_context_iteration () from /lib/i386-linux-gnu/libglib-2.0.so.0
#28 0xb5dcbc21 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#29 0xb52c0a0a in ?? () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#30 0xb5d983ec in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#31 0xb5d986e1 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#32 0xb574abbd in QDialog::exec() () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#33 0x0832d02a in KSplitTransactionDlg::exec (this=0xcc21810) at /home/aga/Git/kmymoney/kmymoney/dialogs/ksplittransactiondlg.cpp:171
#34 0x08347ea4 in StdTransactionEditor::slotEditSplits (this=0xd9f1bd8) at /home/aga/Git/kmymoney/kmymoney/dialogs/transactioneditor.cpp:1980
#35 0x0834b9c8 in qt_static_metacall (_a=0xbf9780d8, _id=0, _o=0xd9f1bd8, _c=<optimized out>) at /home/aga/Git/kmymoney/build/kmymoney/dialogs/transactioneditor.moc:317
#36 StdTransactionEditor::qt_static_metacall (_o=0xd9f1bd8, _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0xbf9780d8) at /home/aga/Git/kmymoney/build/kmymoney/dialogs/transactioneditor.moc:311
#37 0xb5dafb56 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#38 0xb5923d2d in QAbstractButton::clicked(bool) () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#39 0xb562999d in ?? () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#40 0xb562a19b in ?? () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#41 0xb562a456 in QAbstractButton::mouseReleaseEvent(QMouseEvent*) () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#42 0xb5260710 in QWidget::event(QEvent*) () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#43 0xb562b2f2 in QAbstractButton::event(QEvent*) () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#44 0xb56ca8b8 in QPushButton::event(QEvent*) () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#45 0xb5209c7c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#46 0xb520d587 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#47 0xb6bac491 in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#48 0xb5d9990e in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#49 0xb5210823 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#50 0xb5292735 in ?? () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#51 0xb5291525 in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#52 0xb52c0904 in ?? () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#53 0xb43973b3 in g_main_context_dispatch () from /lib/i386-linux-gnu/libglib-2.0.so.0
#54 0xb4397750 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#55 0xb4397831 in g_main_context_iteration () from /lib/i386-linux-gnu/libglib-2.0.so.0
#56 0xb5dcbc21 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#57 0xb52c0a0a in ?? () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#58 0xb5d983ec in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#59 0xb5d986e1 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#60 0xb5d9e3fa in QCoreApplication::exec() () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#61 0xb5207fc4 in QApplication::exec() () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#62 0x0808d060 in runKMyMoney (splash=0xa252430, a=<optimized out>) at /home/aga/Git/kmymoney/kmymoney/main.cpp:282
#63 0x0808a221 in main (argc=1, argv=0xbf979374) at /home/aga/Git/kmymoney/kmymoney/main.cpp:181

This bug may be a duplicate of or related to bug 294408.

Possible duplicates by query: bug 294408.

Reported using DrKonqi
Comment 1 allan 2014-06-15 12:50:25 UTC
Difficulty while editing -
Because I cannot edit the existing splits, I try to enter a new one.  When I click Edit to open a new one, I get "You need to assign a category to this split before it can be entered." , twice.  When I enter the first character, this same message again appears twice.  I select the category from the drop-down, but when I try to enter into the memo field, the category has been cleared and again two messages.  When I try to enter the amount, same again, so use the calculator.  Ho hum...
Comment 2 allan 2014-06-17 22:54:59 UTC
> this split before it can be entered." , twice.  When I enter the 
> first character, this same message again appears twice. 

Got the same problem about a year ago. Recompiling from a clean source 
tree did help in my case. I somehow messed up my repo.

Hope this helps. Greetz.
Martin

Thanks Martin, but sadly, no here.  I had even created a new sandbox and clone, but no help.  Now I've done a make clean on that and still have the problem.
Comment 3 Cristian Oneț 2014-08-30 16:53:01 UTC
Manage to reproduce this using a lot of random double clicks in the split table, after obtaining two transaction editors, close each of them with 'Enter' and the crash occurs.
Comment 4 Cristian Oneț 2014-08-31 16:17:51 UTC
Git commit 8e7898fbd7de4cc7557d5de9eaae32386d2859b1 by Cristian Oneț.
Committed on 31/08/2014 at 15:49.
Pushed by conet into branch 'master'.

Fix a nasty split editor bug.

Because of the way the endEdit method was written the endEdit
operation could be executed without actually ending the edit
(missing category). But code that was calling endEdit expected
that it allways would end the edit thus sometimes edit widgets
could be obtained on two rows.

Once in this state accepting both editors would cause a crash.

Also removed a workaround which would end the edit on a resize.
Instead don't do the operation that was resizing the rows while
in edit.

M  +24   -21   kmymoney/dialogs/kmymoneysplittable.cpp
M  +9    -1    kmymoney/dialogs/kmymoneysplittable.h

http://commits.kde.org/kmymoney/8e7898fbd7de4cc7557d5de9eaae32386d2859b1
Comment 5 Cristian Oneț 2014-08-31 16:22:14 UTC
Git commit f3d666d93dbcb2f0b51a344ab2d78f7c68c92c67 by Cristian Oneț.
Committed on 31/08/2014 at 15:49.
Pushed by conet into branch 'frameworks'.

Fix a nasty split editor bug.

Because of the way the endEdit method was written the endEdit
operation could be executed without actually ending the edit
(missing category). But code that was calling endEdit expected
that it allways would end the edit thus sometimes edit widgets
could be obtained on two rows.

Once in this state accepting both editors would cause a crash.

Also removed a workaround which would end the edit on a resize.
Instead don't do the operation that was resizing the rows while
in edit.
(cherry picked from commit 8e7898fbd7de4cc7557d5de9eaae32386d2859b1)

Conflicts:
	kmymoney/dialogs/kmymoneysplittable.cpp

M  +24   -21   kmymoney/dialogs/kmymoneysplittable.cpp
M  +9    -1    kmymoney/dialogs/kmymoneysplittable.h

http://commits.kde.org/kmymoney/f3d666d93dbcb2f0b51a344ab2d78f7c68c92c67
Comment 6 Christian David 2014-09-24 19:40:54 UTC
Git commit c6639a214066388a6c718b5a9a42db2e7cf9fd5b by Christian Dávid, on behalf of Cristian Oneț.
Committed on 31/08/2014 at 15:49.
Pushed by christiand into branch 'add-onlinebanking'.

Fix a nasty split editor bug.

Because of the way the endEdit method was written the endEdit
operation could be executed without actually ending the edit
(missing category). But code that was calling endEdit expected
that it allways would end the edit thus sometimes edit widgets
could be obtained on two rows.

Once in this state accepting both editors would cause a crash.

Also removed a workaround which would end the edit on a resize.
Instead don't do the operation that was resizing the rows while
in edit.

M  +24   -21   kmymoney/dialogs/kmymoneysplittable.cpp
M  +9    -1    kmymoney/dialogs/kmymoneysplittable.h

http://commits.kde.org/kmymoney/c6639a214066388a6c718b5a9a42db2e7cf9fd5b