Bug 462827 - Crash when editing splits in a transaction
Summary: Crash when editing splits in a transaction
Status: REPORTED
Alias: None
Product: kmymoney
Classification: Applications
Component: general (show other bugs)
Version: 5.1.2
Platform: Fedora RPMs Linux
: NOR crash
Target Milestone: ---
Assignee: KMyMoney Devel Mailing List
URL:
Keywords: drkonqi
: 462026 (view as bug list)
Depends on:
Blocks:
 
Reported: 2022-12-09 19:08 UTC by Ian Neal
Modified: 2022-12-12 11:45 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ian Neal 2022-12-09 19:08:17 UTC
Application: kmymoney (5.1.2)

Qt Version: 5.15.7
Frameworks Version: 5.100.0
Operating System: Linux 6.0.10-200.fc36.x86_64 x86_64
Windowing System: X11
Distribution: "Fedora release 36 (Thirty Six)"
DrKonqi: 5.26.3 [KCrashBackend]

-- Information about the crash:
Creating a new transaction with splits across multiple categories, each new split gets slower and slower to create until it eventually crashes.

The crash can be reproduced sometimes.

-- Backtrace:
Application: KMyMoney (kmymoney), signal: Segmentation fault

[KCrash Handler]
#4  0x00007f1fdb5eb750 in QWidget::setFocus(Qt::FocusReason) () at /lib64/libQt5Widgets.so.5
#5  0x000055671ba799e9 in KMyMoneySplitTable::endEdit(bool, bool) ()
#6  0x00007f1fd7ad2ec4 in QObject::event(QEvent*) () at /lib64/libQt5Core.so.5
#7  0x00007f1fdb69e522 in QFrame::event(QEvent*) () at /lib64/libQt5Widgets.so.5
#8  0x00007f1fdb5aed12 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib64/libQt5Widgets.so.5
#9  0x00007f1fd7aa8278 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /lib64/libQt5Core.so.5
#10 0x00007f1fd7aab5e4 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /lib64/libQt5Core.so.5
#11 0x00007f1fd7af9897 in postEventSourceDispatch(_GSource*, int (*)(void*), void*) () at /lib64/libQt5Core.so.5
#12 0x00007f1fd4bc9faf in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
#13 0x00007f1fd4c1f2c8 in g_main_context_iterate.constprop () at /lib64/libglib-2.0.so.0
#14 0x00007f1fd4bc7940 in g_main_context_iteration () at /lib64/libglib-2.0.so.0
#15 0x00007f1fd7af938a in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib64/libQt5Core.so.5
#16 0x00007f1fd7aa6cca in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib64/libQt5Core.so.5
#17 0x00007f1fdb7bf787 in QDialog::exec() () at /lib64/libQt5Widgets.so.5
#18 0x000055671ba955c2 in KSplitTransactionDlg::exec() ()
#19 0x000055671baa8559 in StdTransactionEditor::slotEditSplits() ()
#20 0x00007f1fd7adbc26 in void doActivate<false>(QObject*, int, void**) () at /lib64/libQt5Core.so.5
#21 0x00007f1fdb6a31d6 in QAbstractButton::clicked(bool) () at /lib64/libQt5Widgets.so.5
#22 0x00007f1fdb6a344e in QAbstractButtonPrivate::emitClicked() () at /lib64/libQt5Widgets.so.5
#23 0x00007f1fdb6a508c in QAbstractButtonPrivate::click() () at /lib64/libQt5Widgets.so.5
#24 0x00007f1fdb6a52ab in QAbstractButton::mouseReleaseEvent(QMouseEvent*) () at /lib64/libQt5Widgets.so.5
#25 0x00007f1fdb5f1818 in QWidget::event(QEvent*) () at /lib64/libQt5Widgets.so.5
#26 0x00007f1fdb5aed12 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib64/libQt5Widgets.so.5
#27 0x00007f1fdb5b7382 in QApplication::notify(QObject*, QEvent*) () at /lib64/libQt5Widgets.so.5
#28 0x00007f1fd7aa8278 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /lib64/libQt5Core.so.5
#29 0x00007f1fdb5b5482 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) () at /lib64/libQt5Widgets.so.5
#30 0x00007f1fdb60ab7c in QWidgetWindow::handleMouseEvent(QMouseEvent*) () at /lib64/libQt5Widgets.so.5
#31 0x00007f1fdb60df40 in QWidgetWindow::event(QEvent*) () at /lib64/libQt5Widgets.so.5
#32 0x00007f1fdb5aed12 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib64/libQt5Widgets.so.5
#33 0x00007f1fd7aa8278 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /lib64/libQt5Core.so.5
#34 0x00007f1fd7f6ae7d in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () at /lib64/libQt5Gui.so.5
#35 0x00007f1fd7f4a02c in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib64/libQt5Gui.so.5
#36 0x00007f1fc3f178de in xcbSourceDispatch(_GSource*, int (*)(void*), void*) () at /lib64/libQt5XcbQpa.so.5
#37 0x00007f1fd4bc9faf in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
#38 0x00007f1fd4c1f2c8 in g_main_context_iterate.constprop () at /lib64/libglib-2.0.so.0
#39 0x00007f1fd4bc7940 in g_main_context_iteration () at /lib64/libglib-2.0.so.0
#40 0x00007f1fd7af938a in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib64/libQt5Core.so.5
#41 0x00007f1fd7aa6cca in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib64/libQt5Core.so.5
#42 0x00007f1fd7aaed92 in QCoreApplication::exec() () at /lib64/libQt5Core.so.5
#43 0x000055671b936b4a in main ()
[Inferior 1 (process 5156) detached]

Reported using DrKonqi
Comment 1 Ian Neal 2022-12-10 12:57:29 UTC
STR
1. Create a scheduled transaction with splits
2. Edit the scheduled transaction
3. On one of the splits alter the amount then hit CR twice very quickly
4. When prompted go back to editing the split
5. Loop back to step 3 for around 15-20 times.

Expected result
1. Popup entitled "Enter Split" with message "You need to assign a category to this split before it can be entered." which, when acknowledge, goes back to split transaction screen.

Actual result
1. Popup entitled "Enter Split" with message "You need to assign a category to this split before it can be entered." which, when acknowledge, crashes / hangs KMyMoney.

I'm not sure if this is due to the number of times the field is being edited or how quickly the enter/CR key is hit.
Comment 2 Ian Neal 2022-12-10 12:58:47 UTC
*** Bug 462026 has been marked as a duplicate of this bug. ***
Comment 3 Ian Neal 2022-12-10 15:32:05 UTC
Easier STR:
1. Create a scheduled transaction with splits
2. Edit the scheduled transaction
3. On one of the splits alter the amount then hit CR and Enter at the same time (easier than trying to do it twice quickly).
Comment 4 Ian Neal 2022-12-10 15:33:08 UTC
Tested using kmymoney-5.1-327-linux-gcc-x86_64.AppImage - that also crashes
Comment 5 Thomas Baumgart 2022-12-11 05:57:11 UTC
Ian reported on IRC that he is not able to reproduce it with a version generated from master, so this is a 5.1 problem only.
Comment 6 Jack 2022-12-11 20:24:01 UTC
Just for clarification, is this when editing splits in a transaction in the ledger, or when editing splits in a scheduled transaction?
Comment 7 Ian Neal 2022-12-12 11:45:19 UTC
(In reply to Jack from comment #6)
> Just for clarification, is this when editing splits in a transaction in the
> ledger, or when editing splits in a scheduled transaction?

I have checked, it crashes both for a scheduled transaction and a transaction that is already in the ledger.
I have tested editing a scheduled transaction both in the ledger view and the scheduled transactions view - it crashes in both.