Bug 509701 - Wrong date format in transaction leads to crash
Summary: Wrong date format in transaction leads to crash
Status: CONFIRMED
Alias: None
Product: kmymoney
Classification: Applications
Component: general (other bugs)
Version First Reported In: 5.2.1
Platform: openSUSE Linux
: NOR crash
Target Milestone: ---
Assignee: KMyMoney Devel Mailing List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-09-20 08:24 UTC by Sascha
Modified: 2025-09-20 19:16 UTC (History)
0 users

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 Sascha 2025-09-20 08:24:15 UTC
SUMMARY

When changing the date for a transaction e.g. into the wrong "01.01.01.2001", kMyMoney consistently crashes immediately.

STEPS TO REPRODUCE
1. Create a new transaction or edit an existing one
2. Select date
3. Change to non-date format

OBSERVED RESULT

Immediate crash

EXPECTED RESULT

Error message/highlighted problem in the date field

SOFTWARE/OS VERSIONS
Windows: 
macOS: 
(available in the Info Center app, or by running `kinfo` in a terminal window)
Linux/KDE Plasma: 
KDE Plasma Version: 6.4.4
KDE Frameworks Version: 6.17.1
Qt Version: 6.9.1

ADDITIONAL INFORMATION
Backtrace:
#0  0x00007ffff54a9967 in QString::append(QChar) () from /lib64/libQt6Core.so.6
#1  0x00007ffff7ce6ecd in ?? () from /lib64/libkmm_base_widgets.so.5
#2  0x00007ffff7ce7905 in ?? () from /lib64/libkmm_base_widgets.so.5
#3  0x00007ffff542fb14 in ?? () from /lib64/libQt6Core.so.6
#4  0x00007ffff6783bfb in QLineEdit::textChanged(QString const&) () from /lib64/libQt6Widgets.so.6
#5  0x00007ffff542fb14 in ?? () from /lib64/libQt6Core.so.6
#6  0x00007ffff678d9fe in QWidgetLineControl::textChanged(QString const&) () from /lib64/libQt6Widgets.so.6
#7  0x00007ffff679271c in QWidgetLineControl::finishChange(int, bool, bool) () from /lib64/libQt6Widgets.so.6
#8  0x00007ffff67958ef in QWidgetLineControl::processKeyEvent(QKeyEvent*) () from /lib64/libQt6Widgets.so.6
#9  0x00007ffff6781abd in QLineEdit::keyPressEvent(QKeyEvent*) () from /lib64/libQt6Widgets.so.6
#10 0x00007ffff663caf1 in QWidget::event(QEvent*) () from /lib64/libQt6Widgets.so.6
#11 0x00007ffff7ce981b in KMyMoneyDateEdit::keyPressEvent(QKeyEvent*) () from /lib64/libkmm_base_widgets.so.5
#12 0x00007ffff663caf1 in QWidget::event(QEvent*) () from /lib64/libQt6Widgets.so.6
#13 0x00007ffff65e37a8 in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /lib64/libQt6Widgets.so.6
#14 0x00007ffff65e79b4 in QApplication::notify(QObject*, QEvent*) () from /lib64/libQt6Widgets.so.6
#15 0x00007ffff53c8928 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /lib64/libQt6Core.so.6
#16 0x00007ffff6657aea in ?? () from /lib64/libQt6Widgets.so.6
#17 0x00007ffff65e37a8 in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /lib64/libQt6Widgets.so.6
#18 0x00007ffff53c8928 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /lib64/libQt6Core.so.6
#19 0x00007ffff5c29f13 in QGuiApplicationPrivate::processKeyEvent(QWindowSystemInterfacePrivate::KeyEvent*)
    () from /lib64/libQt6Gui.so.6
#20 0x00007ffff5c9cecb in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQt6Gui.so.6
#21 0x00007ffff5c9d067 in QWindowSystemInterface::flushWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQt6Gui.so.6
--Type <RET> for more, q to quit, c to continue without paging--
#22 0x00007ffff541ce34 in QObject::event(QEvent*) () from /lib64/libQt6Core.so.6
#23 0x00007ffff65e37a8 in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /lib64/libQt6Widgets.so.6
#24 0x00007ffff53c8928 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /lib64/libQt6Core.so.6
#25 0x00007ffff53cacc7 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) ()
   from /lib64/libQt6Core.so.6
#26 0x00007ffff56818a7 in ?? () from /lib64/libQt6Core.so.6
#27 0x00007fffe73090b6 in g_main_dispatch (context=0x7fffd8000f70) at ../glib/gmain.c:3398
#28 g_main_context_dispatch_unlocked (context=context@entry=0x7fffd8000f70) at ../glib/gmain.c:4249
#29 0x00007fffe730aee8 in g_main_context_iterate_unlocked (context=context@entry=0x7fffd8000f70, 
    block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4314
#30 0x00007fffe730b72c in g_main_context_iteration (context=0x7fffd8000f70, may_block=1)
    at ../glib/gmain.c:4379
#31 0x00007ffff567f978 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /lib64/libQt6Core.so.6
#32 0x00007ffff53d6003 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /lib64/libQt6Core.so.6
#33 0x00007ffff53cd143 in QCoreApplication::exec() () from /lib64/libQt6Core.so.6
#34 0x000055555563b948 in ?? ()
#35 0x00007ffff4a2b2fb in __libc_start_call_main (main=main@entry=0x55555563a370, argc=argc@entry=1, 
    argv=argv@entry=0x7fffffffd848) at ../sysdeps/nptl/libc_start_call_main.h:58
#36 0x00007ffff4a2b3cb in __libc_start_main_impl (main=0x55555563a370, argc=1, argv=0x7fffffffd848, 
    init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffd838)
    at ../csu/libc-start.c:360
#37 0x000055555563c295 in ?? ()
Comment 1 Jack 2025-09-20 19:16:05 UTC
I can confirm with kmymoney 5.2.70-8edfeeb23 just built from master branch.  Not sure if this bt might be more useful.  If I place the cursor on the first 2 of 2025 and type 11/ it crashes on typing the slash.  If I delete 2025 and type 11/2 it crashes on typing the 2.

#0  0x00007ffff5476aec in ?? () from /usr/lib/libQt6Core.so.6
#1  0x00007ffff545a1a0 in QString::append(QChar) () from /usr/lib/libQt6Core.so.6
#2  0x00007ffff7c89826 in KMyMoneyDateEditPrivate::editParts (this=0x555557072180)
    at /home/jack/KDE/KMM/kmymoney/kmymoney/kmymoney/widgets/kmymoneydateedit.cpp:156
#3  KMyMoneyDateEditPrivate::fixupDate (this=0x555557072180) at /home/jack/KDE/KMM/kmymoney/kmymoney/kmymoney/widgets/kmymoneydateedit.cpp:180
#4  0x00007ffff7c86455 in operator() (__closure=0x555557072650, text=...) at /home/jack/KDE/KMM/kmymoney/kmymoney/kmymoney/widgets/kmymoneydateedit.cpp:421
#5  operator() (__closure=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:116
#6  QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<std::integer_sequence<long unsigned int, 0>, QtPrivate::List<const QString&>, void, 
KMyMoneyDateEdit::KMyMoneyDateEdit(QWidget*)::<lambda(const QString&)> >::call(KMyMoneyDateEdit::KMyMoneyDateEdit(QWidget*)::<lambda(const QString&)>&, void**)
::<lambda()> > (args=<optimized out>, fn=...) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:65
#7  QtPrivate::FunctorCall<std::integer_sequence<long unsigned int, 0>, QtPrivate::List<const QString&>, void, KMyMoneyDateEdit::KMyMoneyDateEdit(QWidget*)::<l
ambda(const QString&)> >::call (f=..., arg=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:115
#8  QtPrivate::FunctorCallable<KMyMoneyDateEdit::KMyMoneyDateEdit(QWidget*)::<lambda(const QString&)>, const QString&>::call<QtPrivate::List<QString const&>, v
oid> (f=..., arg=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:337
#9  QtPrivate::QCallableObject<KMyMoneyDateEdit::KMyMoneyDateEdit(QWidget*)::<lambda(const QString&)>, QtPrivate::List<const QString&>, void>::impl(int, QtPriv
ate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=0x555557072640, r=<optimized out>, a=<optimized out>, ret=<optimized out>)
    at /usr/include/qt6/QtCore/qobjectdefs_impl.h:547
#10 0x00007ffff53d2a37 in ?? () from /usr/lib/libQt6Core.so.6
#11 0x00007ffff66b0cbc in QLineEdit::textChanged(QString const&) () from /usr/lib/libQt6Widgets.so.6
#12 0x00007ffff53d2a37 in ?? () from /usr/lib/libQt6Core.so.6
#13 0x00007ffff66c04fa in QWidgetLineControl::finishChange(int, bool, bool) () from /usr/lib/libQt6Widgets.so.6
#14 0x00007ffff66c2cc0 in QWidgetLineControl::processKeyEvent(QKeyEvent*) () from /usr/lib/libQt6Widgets.so.6
#15 0x00007ffff66ad43d in QLineEdit::keyPressEvent(QKeyEvent*) () from /usr/lib/libQt6Widgets.so.6
#16 0x00007ffff655a73a in QWidget::event(QEvent*) () from /usr/lib/libQt6Widgets.so.6
#17 0x00007ffff7c87183 in KMyMoneyDateEdit::keyPressEvent (this=0x555557031000, keyEvent=0x7fffffffd470)
    at /home/jack/KDE/KMM/kmymoney/kmymoney/kmymoney/widgets/kmymoneydateedit.cpp:644
#18 0x00007ffff655a73a in QWidget::event(QEvent*) () from /usr/lib/libQt6Widgets.so.6
#19 0x00007ffff6501c99 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt6Widgets.so.6
#20 0x00007ffff6505b51 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt6Widgets.so.6
#21 0x00007ffff5367f28 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt6Core.so.6
#22 0x00007ffff65773bb in ?? () from /usr/lib/libQt6Widgets.so.6
#23 0x00007ffff6501c99 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt6Widgets.so.6
#24 0x00007ffff5367f28 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt6Core.so.6
#25 0x00007ffff5b9afac in QGuiApplicationPrivate::processKeyEvent(QWindowSystemInterfacePrivate::KeyEvent*) () from /usr/lib/libQt6Gui.so.6
#26 0x00007ffff5c226b4 in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt6Gui.so.6
#27 0x00007ffff5c11c97 in QWindowSystemInterface::flushWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt6Gui.so.6
#28 0x00007ffff53c0334 in QObject::event(QEvent*) () from /usr/lib/libQt6Core.so.6
#29 0x00007ffff6501c99 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt6Widgets.so.6
#30 0x00007ffff5367f28 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt6Core.so.6
#31 0x00007ffff53682db in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/libQt6Core.so.6
#32 0x00007ffff563a620 in ?? () from /usr/lib/libQt6Core.so.6
#33 0x00007fffe7b05b48 in ?? () from /usr/lib/libglib-2.0.so.0
#34 0x00007fffe7b06eff in ?? () from /usr/lib/libglib-2.0.so.0
#35 0x00007fffe7b07082 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#36 0x00007ffff5636e3b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt6Core.so.6
#37 0x00007ffff53741a5 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt6Core.so.6
#38 0x00007ffff536c44b in QCoreApplication::exec() () from /usr/lib/libQt6Core.so.6
#39 0x000055555561893e in main (argc=<optimized out>, argv=<optimized out>) at /home/jack/KDE/KMM/kmymoney/kmymoney/kmymoney/main.cpp:289