qt6-bb10/tests/auto/corelib/thread
Sona Kurazyan a8794503eb Fix memory leaks when capturing a QFuture in its continuation
Capturing a QFuture in the continuations attached to it results in
memory leaks. QFuture's ref-counted data can only be deleted when the
last copy referencing the data gets deleted. The saved continuation
that keeps a copy of the future (as in case of the lambda capture) will
prevent the data from being deleted. So we need to manually clean the
continuation after it is run. But this doesn't solve the problem if the
continuation isn't run. In that case, clean the continuation in the
destructor of the associated QPromise.

To avoid similar leaks, internally we should always create futures via
QPromise, instead of the ref-counted QFutureInterface, so that the
continuation is always cleaned in the destructor. Currently QFuture
continuations and QtFuture::when* methods use QFutureInterface directly,
which will be fixed by the follow-up commits.

Fixes: QTBUG-99534
Pick-to: 6.3 6.2
Change-Id: Ic13e7dffd8cb25bd6b87e5416fe4d1a97af74c9b
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2022-01-21 01:51:20 +01:00
..
qatomicint Remove the qmake project files 2021-01-07 15:32:28 +01:00
qatomicinteger Remove the qmake project files 2021-01-07 15:32:28 +01:00
qatomicpointer Remove the qmake project files 2021-01-07 15:32:28 +01:00
qfuture Fix memory leaks when capturing a QFuture in its continuation 2022-01-21 01:51:20 +01:00
qfuturesynchronizer Remove the qmake project files 2021-01-07 15:32:28 +01:00
qfuturewatcher Optimize QPromise destructor 2021-10-08 17:17:20 +02:00
qmutex tests: fix some -Wvolatile 2021-07-28 17:50:09 +02:00
qmutexlocker Remove the qmake project files 2021-01-07 15:32:28 +01:00
qpromise QFuture/QPromise: don't check for is_copy_constructible 2021-05-21 11:08:11 +02:00
qreadlocker Remove the qmake project files 2021-01-07 15:32:28 +01:00
qreadwritelock Skip tst_QReadWriteLock::multipleReadersLoop on QEMU 2021-09-09 21:08:42 +02:00
qresultstore Don't report results when the results list is empty 2021-07-27 19:57:27 +02:00
qsemaphore QSemaphore: add <chrono> overload of tryAcquire() 2021-06-30 23:48:21 +02:00
qthread QThread::create(): request interruption and join on destruction 2021-12-07 16:56:49 +01:00
qthreadonce Skip tst_qthreadonce test on QEMU 2021-07-20 16:51:51 +02:00
qthreadpool Consistently restore threadpool limit at end of tests 2021-10-22 09:43:42 +02:00
qthreadstorage Compile autotests for Integrity 2021-09-20 17:29:04 +03:00
qwaitcondition Remove the qmake project files 2021-01-07 15:32:28 +01:00
qwritelocker Remove the qmake project files 2021-01-07 15:32:28 +01:00
CMakeLists.txt Compile autotests for Integrity 2021-09-20 17:29:04 +03:00