GSoC '21 KMyMoney : I am stuck.

Suraj Kumar Mahto suraj.mahto49 at gmail.com
Wed Jun 23 20:59:29 BST 2021


> Yes, the problem is, that the profile argument to the AlkOnlineQuoteSource
> ctor is a nullptr. This is then used and the crash happens. The cause to
> this is, that in AlkOnlineQuotesWidget::Private::slotNewEntry() the
> m_profile member is not initialized (nullptr). An assignment happens in
> AlkOnlineQuotesWidget::Private::loadProfiles() and
> AlkOnlineQuotesWidget::Private::slotLoadProfile() but the list of profiles
> in your case seems to be empty, and thus no profile is assigned.

> See MainWindow::MainWindow in onlinequoteseditor.cpp which is part of
alkimia
> how to load an initial profile which you should do if the list is empty.

In alkonlinequoteswidget.cpp (loadProfile() and slotLoadProfile())- I added
such in case for an empty list, taken from
tools/onlinequoteseditor/mainwindow.cpp (I guess you were referring that
instead of onlinequoteseditor.cpp)
    if (list.isEmpty()){
        AlkOnlineQuotesProfileManager &manager =
AlkOnlineQuotesProfileManager::instance();

        manager.addProfile(new AlkOnlineQuotesProfile("no-config-file",
AlkOnlineQuotesProfile::Type::None));
        #if QT_VERSION < QT_VERSION_CHECK(5,0,0)
            manager.addProfile(new AlkOnlineQuotesProfile("alkimia4",
AlkOnlineQuotesProfile::Type::Alkimia4, "alkimia-quotes.knsrc"));
            manager.addProfile(new AlkOnlineQuotesProfile("skrooge4",
AlkOnlineQuotesProfile::Type::Skrooge4, "skrooge-quotes.knsrc"));
            manager.addProfile(new AlkOnlineQuotesProfile("kmymoney4",
AlkOnlineQuotesProfile::Type::KMyMoney4, "kmymoney-quotes.knsrc"));
        #else
            manager.addProfile(new AlkOnlineQuotesProfile("alkimia5",
AlkOnlineQuotesProfile::Type::Alkimia5, "alkimia-quotes.knsrc"));
            manager.addProfile(new AlkOnlineQuotesProfile("skrooge5",
AlkOnlineQuotesProfile::Type::Skrooge5, "skrooge-quotes.knsrc"));
            manager.addProfile(new AlkOnlineQuotesProfile("kmymoney5",
AlkOnlineQuotesProfile::Type::KMyMoney5, "kmymoney-quotes.knsrc"));
        #endif
        #ifdef ENABLE_FINANCEQUOTE
            manager.addProfile(new AlkOnlineQuotesProfile("Finance::Quote",
AlkOnlineQuotesProfile::Type::Script));
        #endif

        m_profile->manager();
        return;
    }

Also in order to use my local cloned version of libalkimia in kmymoney
rather than the installed one in /usr/ . I just imported that in
ksettingskmymoney.cpp as
#include </path/to/local/cloned/libalkimia/alkonlinequoteswidget.h> Am I
doing this right? Because I am still getting the crash :(

Regards
Suraj Kumar Mahto

On Wed, Jun 23, 2021 at 11:11 AM Thomas Baumgart <thb at net-bembel.de> wrote:

> Suraj,
>
> On Dienstag, 22. Juni 2021 21:45:59 CEST Suraj Kumar Mahto wrote:
>
> > > Look at the local variables. What is the value of 'this'? Does that
> make
> > sense?
> > > It chokes inside the method AlkOnlineQuotesProfile::type() which gets
> > called
> > > from AlkOnlineQuoteSource ctor in line 230. Which object is pointed to
> > when
> > > calling type()? Which value does this pointer have? Where is it
> > initialized?
> >
> > After days of bug hunting, I couldn't figure out that. The following
> things
> > I did for the same.
> > - I stepped in through functions in debugging and checked the stack.
> > - Tried to study the QMap related function defaultQuoteSources() and
> > checked its usage.
> > - While experimenting with the alkimia lib I found that after executing
> the
> > onlinequoteseditor5 binary separately(in build/bin/) the widget works
> fine
> > and there is no crash while interacting with the UI like buttons and
> fields
> > as opposed to what I saw in the kmymoney.
>
> Yes, the problem is, that the profile argument to the AlkOnlineQuoteSource
> ctor is a nullptr. This is then used and the crash happens. The cause to
> this is, that in AlkOnlineQuotesWidget::Private::slotNewEntry() the
> m_profile member is not initialized (nullptr). An assignment happens in
> AlkOnlineQuotesWidget::Private::loadProfiles() and
> AlkOnlineQuotesWidget::Private::slotLoadProfile() but the list of profiles
> in your case seems to be empty, and thus no profile is assigned.
>
> See MainWindow::MainWindow in onlinequoteseditor.cpp which is part of
> alkimia
> how to load an initial profile which you should do if the list is empty.
>
> > Please direct me what thing I missed. Thanks.
> > Sorry for the delay in the blog post. I planned for week 1-2 blog by
> Monday
> > only. I thought that I will post that after solving this bug.
>
> OK.
>
> --
>
> Regards
>
> Thomas Baumgart
>
> https://www.signal.org/       Signal, the better WhatsApp
> -------------------------------------------------------------
> 'Knowing a computer language is neither a necessary nor a sufficient
> condition to know how to construct a computer program' -- J.R. Tyrer
> -------------------------------------------------------------
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-finance-apps/attachments/20210624/697e7a1c/attachment.htm>


More information about the Kde-finance-apps mailing list