Web lists-archives.com

Re: balloo assert on database inconsistency (trying to fix, help needed)






On Mon, Oct 24, 2016 at 11:45 PM, Albert Astals Cid <aacid@xxxxxxx> wrote:
El dilluns, 24 d’octubre de 2016, a les 12:58:30 CEST, Tomaz Canabrava va
escriure:
> So - I got a bit of crash on baloo - and I wonder what should I do to fix
> it.
> mostly because the crash is on an assert - wich means that this shouldn't
> ever happen, and if it does, it's bugged.
>
> The affecting call is this:
>
> QByteArray DocumentUrlDB::get(quint64 docId) const
> {
>     Q_ASSERT(docId > 0);
>
>     IdFilenameDB idFilenameDb(m_idFilenameDbi, m_txn);
>
>     auto path = idFilenameDb.get(docId);
>     if (path.name.isEmpty()) {
>         return QByteArray();
>     }
>
>     QByteArray ret = path.name;
>     quint64 id = path.parentId;
>
>     while (id) {
>         auto p = idFilenameDb.get(id);
>         Q_ASSERT(!p.name.isEmpty());
>
>         ret = p.name + '/' + ret;
>         id = p.parentId;
>     }
>
>     return '/' + ret;
> }
>
> aparently, my database has something that has a parent with no name - hm...
> not sure what a parent means in baloo context / my guess is "folder", but
> what could be the right thing do to in this case?
>
> - remove the index from the database
> - try to reescan the file because the parent is borked
> - show an information that there is a database inconsistency?
>
> the only thing it shouldn't do is crash :)
>
> Halp?

i know it's a poor man's solution but replace the the assert with an if +
return + qWarning  for the moment so it doesn't crash?

while of course this works, I got a lot of empty lines on krunner where a folder should have been.
not perfect solution, but works. I never click on the folders anyway.
 

Cheers,
  Albert

>
> ➜  ~ krunner
> Error contacting the daemon!
> org.kde.kurifilter-ikws: ":q"
> org.kde.kurifilter-ikws: Keywords Engine: Loading config...
> org.kde.kurifilter-ikws: Web Shortcuts Enabled:  true
> org.kde.kurifilter-ikws: Default Shortcut:  ""
> org.kde.kurifilter-ikws: Keyword Delimiter:  :
> ASSERT: "!p.name.isEmpty()" in file
> /home/tcanabrava/Projects/kdesrc/baloo/src/engine/documenturldb.cpp, line
> 143
> KCrash: Attempting to start /home/tcanabrava/Projects/install/bin/krunner
> from kdeinit
> sock_file=/run/user/1000/kdeinit5__0
> KCrash: crashing... crashRecursionCounter = 2
> KCrash: Application Name = krunner path =
> /home/tcanabrava/Projects/install/bin pid = 1693
> KCrash: Arguments: /home/tcanabrava/Projects/install/bin/krunner
> KCrash: Attempting to start
> /home/tcanabrava/Projects/install/lib64/libexec/drkonqi from kdeinit
> sock_file=/run/user/1000/kdeinit5__0
> QSocketNotifier: Invalid socket 8 and type 'Read', disabling...
> QSocketNotifier: Invalid socket 14 and type 'Read', disabling...
> QSocketNotifier: Invalid socket 12 and type 'Read', disabling...
> QSocketNotifier: Invalid socket 6 and type 'Read', disabling...
> QSocketNotifier: Invalid socket 13 and type 'Read', disabling...
> QSocketNotifier: Invalid socket 16 and type 'Exception', disabling...
> QSocketNotifier: Invalid socket 10 and type 'Read', disabling...
> QSocketNotifier: Invalid socket 15 and type 'Read', disabling...
> intel_do_flush_locked failed: Bad file descriptor