Вобщем имеем такой код:
QEventLoop loop;
QFutureWatcher<void> watcher;
connect(&watcher, SIGNAL(finished()), &loop, SLOT(quit()));
QFuture<void> future = QtConcurrent::run(this, &MyClass::MyMethod, parameters...);
watcher.setFuture(future);
loop.exec();
При использовании такой конструкции вылетает segmentation fault. Если просто вызвать MyMethod с параметрами, то всё работает без ошибок, но это неудобно т.к. в этом методе запускается продолжительный вычислительный процесс и хочется, чтобы он выполнялся в отдельном потоке. Если зкомментировать цикл и QFutureWatcher, то вылетает уже другая ошибка, но суть та же. Воспроизводится как в Qt 4.5.3, так и в 4.6.0-beta1, и в Windows, и в Linux.
В чём может быть проблема: это моя ошибка или баг Qt и надо им писать отчёт?
Думаю ещё запустить Valgrind, чтобы проверить нет ли где ошибки обращения к памяти в моём приложении.
ASSERT: "qApp && qApp->thread() == QThread::currentThread()" in file kernel\qapplication_win.cpp, line 895
QWaitCondition: Destroyed while threads are still waiting