Skip to content

Crash when creating a share transaction with a date older than opening date of the account #5324

@raphael-kahler

Description

@raphael-kahler

MMEX version:

  • 1.6.0

Operating System:

  • Windows
  • Mac OSX
  • Linux

Description of the bug

MMEX crashes when adding a stock share transaction with a date older than the opening date of the investment account.

Reproduction

Is the bug reproducible?

  • Always
  • Randomly
  • Happened only once

Reproduction steps:

Create a database with an investment account.
When opening the account it asks for the opening date. Leave the current date (e.g. 11/13/2022).
repro-steps-1

Add new stock investment. In the date also specify the same current date (11/13/2022).
repro-steps-2

When clicking save it asks for a share account, click ok to create one, Leave everything default, including date (again 11/13/2022),
repro-steps-3

Popup opens to add initial share transaction. Here use an older date, like 1/1/2022.
repro-steps-4

When clicking OK to save the share transaction, MMEX crashes.
Additionally, if you then reopen MMEX and try to open the investment account it will crash again.

Expected result:
MMEX should show something like an "invalid transaction" notification when trying to save the transaction with a date older than the account opening date.

Actual result:
MMEX immediately crashes when saving the transaction.
Because it also crashes whenever you try to reopen the investment account in the future, this essentially corrupts the DB and makes it unusable.

Additional information

Stacktrace from debug report.

  <stack>
    <frame level="0" offset="0" address="0x7ff6a28ed774"/>
    <frame level="1" offset="0" address="0x7ff6a28ed66c"/>
    <frame level="2" offset="0" address="0x7ff6a27bcad8"/>
    <frame level="3" offset="0" address="0x7ff6a272cd4e"/>
    <frame level="4" function="wxAppConsoleBase::CallEventHandler" offset="0x54" address="0x7ff9e3924af4"/>
    <frame level="5" function="wxEvtHandler::ProcessEventIfMatchesId" offset="0x61" address="0x7ff9e3a40201"/>
    <frame level="6" function="wxEventHashTable::HandleEvent" offset="0xbc" address="0x7ff9e3a3fdcc"/>
    <frame level="7" function="wxEvtHandler::TryHereOnly" offset="0x3d" address="0x7ff9e3a40dbd"/>
    <frame level="8" function="wxEvtHandler::ProcessEvent" offset="0xe2" address="0x7ff9e3a40152"/>
    <frame level="9" function="wxWindowBase::TryAfter" offset="0x6f" address="0x7ff9dedb813f"/>
    <frame level="10" function="wxEvtHandler::ProcessEvent" offset="0x101" address="0x7ff9e3a40171"/>
    <frame level="11" function="wxWindowBase::TryAfter" offset="0x6f" address="0x7ff9dedb813f"/>
    <frame level="12" function="wxEvtHandler::ProcessEvent" offset="0x101" address="0x7ff9e3a40171"/>
    <frame level="13" function="wxEvtHandler::SafelyProcessEvent" offset="0x13" address="0x7ff9e3a409c3"/>
    <frame level="14" function="wxButton::SendClickEvent" offset="0x91" address="0x7ff9dec71931"/>
    <frame level="15" function="wxWindow::HandleCommand" offset="0xa3" address="0x7ff9dec23d03"/>
    <frame level="16" function="wxWindow::MSWHandleMessage" offset="0xac8" address="0x7ff9dec2a3c8"/>
    <frame level="17" function="wxWindow::MSWWindowProc" offset="0x38" address="0x7ff9dec2ce68"/>
    <frame level="18" function="wxWndProc" offset="0x90" address="0x7ff9dec32cf0"/>
    <frame level="19" function="CallWindowProcW" offset="0x3f8" address="0x7ffa1778e858"/>
    <frame level="20" function="SendMessageW" offset="0x86b" address="0x7ffa1778de1b"/>
    <frame level="21" function="SendMessageW" offset="0xda" address="0x7ffa1778d68a"/>
    <frame level="22" function="ImageList_LoadImageW" offset="0x367" address="0x7ffa09652467"/>
    <frame level="23" function="ImageList_WriteEx" offset="0x9a0" address="0x7ffa096620f0"/>
    <frame level="24" function="CallWindowProcW" offset="0x3f8" address="0x7ffa1778e858"/>
    <frame level="25" function="CallWindowProcW" offset="0x8e" address="0x7ffa1778e4ee"/>
    <frame level="26" function="wxWindow::MSWDefWindowProc" offset="0x54" address="0x7ff9dec28984"/>
    <frame level="27" function="wxWindow::MSWWindowProc" offset="0x50" address="0x7ff9dec2ce80"/>
    <frame level="28" function="wxWndProc" offset="0x90" address="0x7ff9dec32cf0"/>
    <frame level="29" function="CallWindowProcW" offset="0x3f8" address="0x7ffa1778e858"/>
    <frame level="30" function="DispatchMessageW" offset="0x259" address="0x7ffa1778e299"/>
    <frame level="31" function="IsDialogMessageW" offset="0x280" address="0x7ffa1778c050"/>
    <frame level="32" function="wxWindow::MSWSafeIsDialogMessage" offset="0x137" address="0x7ff9dec2c187"/>
    <frame level="33" function="wxWindow::MSWProcessMessage" offset="0x2c4" address="0x7ff9dec2bde4"/>
    <frame level="34" function="wxGUIEventLoop::PreProcessMessage" offset="0x16f" address="0x7ff9dec5679f"/>
    <frame level="35" function="wxGUIEventLoop::ProcessMessage" offset="0x12" address="0x7ff9dec567f2"/>
    <frame level="36" function="wxGUIEventLoop::Dispatch" offset="0x1a1" address="0x7ff9dec56161"/>
    <frame level="37" function="wxEventLoopManual::DoRun" offset="0x93" address="0x7ff9e39520b3"/>
    <frame level="38" function="wxEventLoopBase::Run" offset="0x74" address="0x7ff9e3952344"/>
    <frame level="39" function="wxDialog::ShowModal" offset="0x13e" address="0x7ff9dec7b65e"/>
    <frame level="40" offset="0" address="0x7ff6a27c9532"/>
    <frame level="41" offset="0" address="0x7ff6a27ce2a5"/>
    <frame level="42" offset="0" address="0x7ff6a272cd4e"/>
    <frame level="43" function="wxAppConsoleBase::CallEventHandler" offset="0x54" address="0x7ff9e3924af4"/>
    <frame level="44" function="wxEvtHandler::ProcessEventIfMatchesId" offset="0x61" address="0x7ff9e3a40201"/>
    <frame level="45" function="wxEventHashTable::HandleEvent" offset="0xbc" address="0x7ff9e3a3fdcc"/>
    <frame level="46" function="wxEvtHandler::TryHereOnly" offset="0x3d" address="0x7ff9e3a40dbd"/>
    <frame level="47" function="wxEvtHandler::ProcessEvent" offset="0xe2" address="0x7ff9e3a40152"/>
    <frame level="48" function="wxWindowBase::TryAfter" offset="0x6f" address="0x7ff9dedb813f"/>
    <frame level="49" function="wxEvtHandler::ProcessEvent" offset="0x101" address="0x7ff9e3a40171"/>
    <frame level="50" function="wxEvtHandler::SafelyProcessEvent" offset="0x13" address="0x7ff9e3a409c3"/>
    <frame level="51" function="wxButton::SendClickEvent" offset="0x91" address="0x7ff9dec71931"/>
    <frame level="52" function="wxWindow::HandleCommand" offset="0xa3" address="0x7ff9dec23d03"/>
    <frame level="53" function="wxWindow::MSWHandleMessage" offset="0xac8" address="0x7ff9dec2a3c8"/>
    <frame level="54" function="wxWindow::MSWWindowProc" offset="0x38" address="0x7ff9dec2ce68"/>
    <frame level="55" function="wxNonOwnedWindow::MSWWindowProc" offset="0x209" address="0x7ff9debfca99"/>
    <frame level="56" function="wxTopLevelWindowMSW::MSWWindowProc" offset="0xea" address="0x7ff9dec1b0ea"/>
    <frame level="57" function="wxDialog::MSWWindowProc" offset="0x50" address="0x7ff9dec7afb0"/>
    <frame level="58" function="wxWndProc" offset="0x90" address="0x7ff9dec32cf0"/>
    <frame level="59" function="CallWindowProcW" offset="0x3f8" address="0x7ffa1778e858"/>
    <frame level="60" function="SendMessageW" offset="0x86b" address="0x7ffa1778de1b"/>
    <frame level="61" function="SendMessageW" offset="0xda" address="0x7ffa1778d68a"/>
    <frame level="62" function="ImageList_LoadImageW" offset="0x367" address="0x7ffa09652467"/>
    <frame level="63" function="ImageList_WriteEx" offset="0x9a0" address="0x7ffa096620f0"/>
    <frame level="64" function="CallWindowProcW" offset="0x3f8" address="0x7ffa1778e858"/>
    <frame level="65" function="CallWindowProcW" offset="0x8e" address="0x7ffa1778e4ee"/>
    <frame level="66" function="wxWindow::MSWDefWindowProc" offset="0x54" address="0x7ff9dec28984"/>
    <frame level="67" function="wxWindow::MSWWindowProc" offset="0x50" address="0x7ff9dec2ce80"/>
    <frame level="68" function="wxWndProc" offset="0x90" address="0x7ff9dec32cf0"/>
    <frame level="69" function="CallWindowProcW" offset="0x3f8" address="0x7ffa1778e858"/>
    <frame level="70" function="DispatchMessageW" offset="0x259" address="0x7ffa1778e299"/>
    <frame level="71" function="IsDialogMessageW" offset="0x280" address="0x7ffa1778c050"/>
    <frame level="72" function="wxWindow::MSWSafeIsDialogMessage" offset="0x137" address="0x7ff9dec2c187"/>
    <frame level="73" function="wxWindow::MSWProcessMessage" offset="0x2c4" address="0x7ff9dec2bde4"/>
    <frame level="74" function="wxGUIEventLoop::PreProcessMessage" offset="0x16f" address="0x7ff9dec5679f"/>
    <frame level="75" function="wxGUIEventLoop::ProcessMessage" offset="0x12" address="0x7ff9dec567f2"/>
    <frame level="76" function="wxGUIEventLoop::Dispatch" offset="0x1a1" address="0x7ff9dec56161"/>
    <frame level="77" function="wxEventLoopManual::DoRun" offset="0x93" address="0x7ff9e39520b3"/>
    <frame level="78" function="wxEventLoopBase::Run" offset="0x74" address="0x7ff9e3952344"/>
    <frame level="79" function="wxDialog::ShowModal" offset="0x13e" address="0x7ff9dec7b65e"/>
    <frame level="80" offset="0" address="0x7ff6a27ed6ef"/>
    <frame level="81" offset="0" address="0x7ff6a272cd4e"/>
    <frame level="82" function="wxAppConsoleBase::CallEventHandler" offset="0x54" address="0x7ff9e3924af4"/>
    <frame level="83" function="wxEvtHandler::ProcessEventIfMatchesId" offset="0x61" address="0x7ff9e3a40201"/>
    <frame level="84" function="wxEventHashTable::HandleEvent" offset="0xbc" address="0x7ff9e3a3fdcc"/>
    <frame level="85" function="wxEvtHandler::TryHereOnly" offset="0x3d" address="0x7ff9e3a40dbd"/>
    <frame level="86" function="wxEvtHandler::ProcessEvent" offset="0xe2" address="0x7ff9e3a40152"/>
    <frame level="87" function="wxEvtHandler::SafelyProcessEvent" offset="0x13" address="0x7ff9e3a409c3"/>
    <frame level="88" function="wxMenuBase::DoProcessEvent" offset="0xd0" address="0x7ff9ded76aa0"/>
    <frame level="89" function="wxMenuBase::SendEvent" offset="0xa6" address="0x7ff9ded781e6"/>
    <frame level="90" function="wxMenu::MSWCommand" offset="0xab" address="0x7ff9deca18fb"/>
    <frame level="91" function="wxWindow::HandleCommand" offset="0x63" address="0x7ff9dec23cc3"/>
    <frame level="92" function="wxWindow::MSWHandleMessage" offset="0xac8" address="0x7ff9dec2a3c8"/>
    <frame level="93" function="wxWindow::MSWWindowProc" offset="0x38" address="0x7ff9dec2ce68"/>
    <frame level="94" function="wxListCtrl::MSWWindowProc" offset="0x68" address="0x7ff9dec96e28"/>
    <frame level="95" function="wxWndProc" offset="0x90" address="0x7ff9dec32cf0"/>
    <frame level="96" function="CallWindowProcW" offset="0x3f8" address="0x7ffa1778e858"/>
    <frame level="97" function="DispatchMessageW" offset="0x259" address="0x7ffa1778e299"/>
    <frame level="98" function="wxWindow::DoPopupMenu" offset="0xf1" address="0x7ff9dec21761"/>
    <frame level="99" function="wxWindowBase::PopupMenu" offset="0x60" address="0x7ff9dedb5b60"/>
    <frame level="100" offset="0" address="0x7ff6a27ed281"/>
    <frame level="101" offset="0" address="0x7ff6a272cd4e"/>
    <frame level="102" function="wxAppConsoleBase::CallEventHandler" offset="0x54" address="0x7ff9e3924af4"/>
    <frame level="103" function="wxEvtHandler::ProcessEventIfMatchesId" offset="0x61" address="0x7ff9e3a40201"/>
    <frame level="104" function="wxEventHashTable::HandleEvent" offset="0xbc" address="0x7ff9e3a3fdcc"/>
    <frame level="105" function="wxEvtHandler::TryHereOnly" offset="0x3d" address="0x7ff9e3a40dbd"/>
    <frame level="106" function="wxEvtHandler::ProcessEvent" offset="0xe2" address="0x7ff9e3a40152"/>
    <frame level="107" function="wxEvtHandler::SafelyProcessEvent" offset="0x13" address="0x7ff9e3a409c3"/>
    <frame level="108" function="wxWindow::HandleMouseEvent" offset="0xc3" address="0x7ff9dec25353"/>
    <frame level="109" function="wxWindow::MSWHandleMessage" offset="0x132d" address="0x7ff9dec2ac2d"/>
    <frame level="110" function="wxWindow::MSWWindowProc" offset="0x38" address="0x7ff9dec2ce68"/>
    <frame level="111" function="wxListCtrl::MSWWindowProc" offset="0x68" address="0x7ff9dec96e28"/>
    <frame level="112" function="wxWndProc" offset="0x90" address="0x7ff9dec32cf0"/>
    <frame level="113" function="CallWindowProcW" offset="0x3f8" address="0x7ffa1778e858"/>
    <frame level="114" function="DispatchMessageW" offset="0x259" address="0x7ffa1778e299"/>
    <frame level="115" function="IsDialogMessageW" offset="0x280" address="0x7ffa1778c050"/>
    <frame level="116" function="wxWindow::MSWSafeIsDialogMessage" offset="0x137" address="0x7ff9dec2c187"/>
    <frame level="117" function="wxWindow::MSWProcessMessage" offset="0x2c4" address="0x7ff9dec2bde4"/>
    <frame level="118" function="wxGUIEventLoop::PreProcessMessage" offset="0x16f" address="0x7ff9dec5679f"/>
    <frame level="119" function="wxGUIEventLoop::ProcessMessage" offset="0x12" address="0x7ff9dec567f2"/>
    <frame level="120" function="wxGUIEventLoop::Dispatch" offset="0x1a1" address="0x7ff9dec56161"/>
    <frame level="121" function="wxEventLoopManual::DoRun" offset="0x93" address="0x7ff9e39520b3"/>
    <frame level="122" function="wxEventLoopBase::Run" offset="0x74" address="0x7ff9e3952344"/>
    <frame level="123" function="wxAppConsoleBase::MainLoop" offset="0x77" address="0x7ff9e3926f27"/>
    <frame level="124" function="wxEntryCleanup" offset="0x146" address="0x7ff9e398f106"/>
    <frame level="125" function="wxEntry" offset="0x28" address="0x7ff9e3a457c8"/>
    <frame level="126" offset="0" address="0x7ff6a2a1895a"/>
    <frame level="127" function="BaseThreadInitThunk" offset="0x14" address="0x7ffa173574b4"/>
    <frame level="128" function="RtlUserThreadStart" offset="0x21" address="0x7ffa17ae26a1"/>
  </stack>

Metadata

Metadata

Assignees

Labels

bugfixedgood first issuegood issue for first-time contributors - please fix me ASAP

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions