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

Fushan Wen <qydwhotm...@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
             Status|REPORTED                    |RESOLVED
      Latest Commit|                            |https://invent.kde.org/plas
                   |                            |ma/plasma-workspace/-/commi
                   |                            |t/9d18e0821455366c00a763252
                   |                            |515d48741316f6c

--- Comment #2 from Fushan Wen <qydwhotm...@gmail.com> ---
Git commit 9d18e0821455366c00a763252515d48741316f6c by Fushan Wen, on behalf of
Max Ramanouski.
Committed on 07/06/2023 at 14:06.
Pushed by fusionfuture into branch 'Plasma/5.27'.

runners/calculator: implement thread-safety in QalculateEngine::evaluate

Libqalculate does not seem to support ability to run multiple computations
that are controlled or have timeout set beeing run in the same time.
After the timeout was introduced in QalculateEngine this led to BUG 470219,
which happens when computations are started from multiple threads in the same
time
that "confuses" libqalculate computation thread which leads to crash in
libqalculate code.

To fix that we need to ensure that only one evaluation is running at single
moment of time.
This is done via QalculateLock class that is like QMutexLocker but for
libqalculate.
QalculateLock is implemented with two static mutexes. Mutex s_evalLock is used
to ensure that only one evaluation is running at single moment.
Mutex s_ctrlLock is used to ensure that thread that aborted evaluation will
get to start next evaluation.

M  +35   -8    runners/calculator/qalculate_engine.cpp

https://invent.kde.org/plasma/plasma-workspace/-/commit/9d18e0821455366c00a763252515d48741316f6c

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

Reply via email to