Bug 254423 - Reproducable crash when importing from aqbanking ctx file
Summary: Reproducable crash when importing from aqbanking ctx file
Status: RESOLVED WORKSFORME
Alias: None
Product: kmymoney
Classification: Applications
Component: general (show other bugs)
Version: SVN
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: KMyMoney Devel Mailing List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-10-17 03:29 UTC by Felix Leimbach
Modified: 2010-12-12 10:00 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 Felix Leimbach 2010-10-17 03:29:08 UTC
Version:           SVN trunk (using KDE 4.5.2) 
OS:                Linux

I have a aqbanking ctx file imported with aqbanking-cli from a German bank which causes kmymoney-4.5.0-svn1182069 to crash.
From the below stacktrace I gather that the crash happens in mymoneybanking.cpp at the second last line of this code block:

// make hash value unique in case we don't have one already
  if (kt.m_strBankID.isEmpty()) {
    QString hashBase;
    hashBase.sprintf("%s-%07lx", qPrintable(kt.m_datePosted.toString(Qt::ISODate)), h);
    int idx = 1;
    QString hash;
    for (;;) {
      hash = QString("%1-%2").arg(hashBase).arg(idx);
      QMap<QString, bool>::const_iterator it;
      it = m_hashMap.constFind(hash);
      if (it == m_hashMap.constEnd()) {
        m_hashMap[hash] = true;
        break;
      }
      ++idx;
    }
    kt.m_strBankID = QString("%1-%2").arg(acc.id()).arg(hash);
  }

So the crash seems to be caused by a missing/invalid bank ID.

Indeed, my ctx file seems to be missing the bank ID:
accountInfoList {
  accountInfo {
    char bankCode=""
    char accountNumber="12345678"
    int  accountType="0"
    int  accountId="0"

So when I fill in the bank ID by hand then kmymoney successfully imports the file. 

Here's the full stacktrace:

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff293b19f in memcpy () from /lib/libc.so.6
(gdb) bt
#0  0x00007ffff293b19f in memcpy () from /lib/libc.so.6
#1  0x00007ffff43a102b in ?? () from /usr/lib64/qt4/libQtCore.so.4
#2  0x00007ffff43a27ed in QString::arg(QString const&, int, QChar const&) const () from /usr/lib64/qt4/libQtCore.so.4
#3  0x00007fffe31ff5e6 in KMyMoneyBanking::_xaToStatement (this=0x1407cc0, ks=<value optimized out>, acc=<value optimized out>, t=<value optimized out>)
    at /home/felix/tmp/kmymoney/kmymoney/plugins/kbanking/mymoneybanking.cpp:1045
#4  0x00007fffe32007b1 in KMyMoneyBanking::importAccountInfo (this=0x1407cc0, ai=0x27ad960)
    at /home/felix/tmp/kmymoney/kmymoney/plugins/kbanking/mymoneybanking.cpp:1150
#5  0x00007fffe32051d1 in AB_Banking::importContext (this=0x1407cc0, ctx=0x25ad5c0, flags=0)
    at /home/felix/tmp/kmymoney/kmymoney/plugins/kbanking/banking.cpp:195
#6  0x00007fffe31f9dfc in KMyMoneyBanking::interactiveImport (this=0x1407cc0) at /home/felix/tmp/kmymoney/kmymoney/plugins/kbanking/mymoneybanking.cpp:822
#7  0x00007fffe31fa411 in KBankingPlugin::slotImport (this=<value optimized out>)
    at /home/felix/tmp/kmymoney/kmymoney/plugins/kbanking/mymoneybanking.cpp:641
#8  0x00007fffe31fa634 in KBankingPlugin::qt_metacall (this=0x14093f0, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, 
    _a=<value optimized out>) at /home/felix/tmp/kmymoney/build/kmymoney/plugins/kbanking/mymoneybanking.moc:85
#9  0x00007ffff44653ef in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib64/qt4/libQtCore.so.4
#10 0x00007ffff35773f2 in QAction::triggered(bool) () from /usr/lib64/qt4/libQtGui.so.4
#11 0x00007ffff3578adb in QAction::activate(QAction::ActionEvent) () from /usr/lib64/qt4/libQtGui.so.4
#12 0x00007ffff39b6c11 in ?? () from /usr/lib64/qt4/libQtGui.so.4
#13 0x00007ffff39bc5a2 in ?? () from /usr/lib64/qt4/libQtGui.so.4
#14 0x00007ffff669bf9e in KMenu::mouseReleaseEvent(QMouseEvent*) () from /usr/lib/libkdeui.so.5
#15 0x00007ffff35d4ce1 in QWidget::event(QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#16 0x00007ffff39be6db in QMenu::event(QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#17 0x00007ffff357eaec in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#18 0x00007ffff358558b in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#19 0x00007ffff65bbb96 in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#20 0x00007ffff444d88b in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib64/qt4/libQtCore.so.4
#21 0x00007ffff3583872 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) ()
   from /usr/lib64/qt4/libQtGui.so.4
#22 0x00007ffff3606c16 in ?? () from /usr/lib64/qt4/libQtGui.so.4
#23 0x00007ffff360590a in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#24 0x00007ffff362f852 in ?? () from /usr/lib64/qt4/libQtGui.so.4
#25 0x00007fffed99e9bf in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#26 0x00007fffed9a27f8 in ?? () from /usr/lib/libglib-2.0.so.0
#27 0x00007fffed9a29ac in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#28 0x00007ffff4479833 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4
#29 0x00007ffff362f1ce in ?? () from /usr/lib64/qt4/libQtGui.so.4
#30 0x00007ffff444c5e2 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4
#31 0x00007ffff444c9c4 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4
#32 0x00007ffff44518e9 in QCoreApplication::exec() () from /usr/lib64/qt4/libQtCore.so.4

Reproducible: Always




OS: Linux (x86_64) release 2.6.32-gentoo-r6
Compiler: x86_64-pc-linux-gnu-gcc
Comment 1 Alvaro Soliverez 2010-11-14 04:59:53 UTC
Which version of AqBanking are you using?
Comment 2 Felix Leimbach 2010-11-14 13:34:04 UTC
AqBanking 5.0.1
Comment 3 Thomas Baumgart 2010-12-12 10:00:01 UTC
According to the original poster, the problem does not exist anymore.