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

Elvis Angelaccio <elvis.angelac...@kde.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
      Latest Commit|                            |https://commits.kde.org/ark
                   |                            |/b1a251ebb96b86c8cba8334371
                   |                            |9fa8e67ab4ee9b
         Resolution|---                         |FIXED
   Version Fixed In|                            |18.03.80
             Status|CONFIRMED                   |RESOLVED

--- Comment #2 from Elvis Angelaccio <elvis.angelac...@kde.org> ---
Git commit b1a251ebb96b86c8cba83343719fa8e67ab4ee9b by Elvis Angelaccio.
Committed on 25/02/2018 at 22:41.
Pushed by elvisangelaccio into branch 'master'.

Rework kill logic

The libzip plugin sometimes cannot react to `QThread::requestInterruption()`
because there is a blocking `zip_close()` which writes to disk (e.g. with
AddJobs).

This means we have to manually abort the thread (by passing a timeout to
`QThread::wait()` in `Job::doKill()`. We cannot do this uconditionally
because we would end up with crashes in libarchive. Since the libarchive
plugin is not affected by this problem, we rework the logic in
`Job::doKill()` by assuming that the interface will tell us whether it
needs to be brutally killed. This way we can distinguish between the
libarchive and the libzip plugins (the ones that use a worker thread).

The mutex in this patch is needed because in theory `m_operationMode` could be
read and written by different threads at the same time, even though that's
unlikely.
FIXED-IN: 18.03.80
Task: T7824

M  +4    -0    kerfuffle/archiveinterface.h
M  +13   -7    kerfuffle/jobs.cpp
M  +25   -7    plugins/libzipplugin/libzipplugin.cpp
M  +5    -0    plugins/libzipplugin/libzipplugin.h

https://commits.kde.org/ark/b1a251ebb96b86c8cba83343719fa8e67ab4ee9b

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

Reply via email to