https://bugs.kde.org/show_bug.cgi?id=367480

Valerii Malov <jazzv...@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jazzv...@gmail.com

--- Comment #128 from Valerii Malov <jazzv...@gmail.com> ---
This seems to be a somewhat multi-layered issue

A lot of crashes seem to be caused by unsafe handling of LMDB calls, namely
mdb_dbi_open, mdb_dbi_create and mdb_dbi_get aren't checked for errors other
than MDB_NOTFOUND, which allows the application to proceed as normal even if
the call erorred out, so the output buffers passed to those functions aren't
filled out. What makes it worse is that those buffers aren't initalized in the
baloo engine either, so we end up with random database handles and random value
pointers. Then those random handles/pointers are passed somewhere else where
they cause a crash.

As a workardound I've added more strict error checks across baloo engine, if
anyone wants to help with the review or testing:
https://phabricator.kde.org/D18664
Posting in the most popular bug to expedite things (^:

Hard to tell exactly which crashes on the bugtracker this addresses due to
nature of crashes. This fixes crashes I've had on my machine, however this
doesn't really address other issues.

First, I have no idea why baloo makes so many calls that fail in the first
place (corrupted database?). In my case after applying the fix on each run it's
spending around 5-10 minutes using 1 core for 100%, spamming logs with a
MDB_BAD_TXN error, and then calms down.  From user point of view this is
probably worse than crashing.

Second, overall I think baloo engine needs some refactoring because it has a
lot of duplicate code. Probably a proper way to fix this would be a safe
wrapper around LMDB api.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to