mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-12-20 04:36:08 +01:00
Move scheduler/threadGroup into common-init instead of per-app
This resolves #12229 which pointed out a shutdown deadlock due to scheduler/checkqueue having been shut down while network message processing is still running.
This commit is contained in:
@@ -28,7 +28,6 @@
|
||||
|
||||
#include <init.h>
|
||||
#include <rpc/server.h>
|
||||
#include <scheduler.h>
|
||||
#include <ui_interface.h>
|
||||
#include <util.h>
|
||||
#include <warnings.h>
|
||||
@@ -193,8 +192,6 @@ Q_SIGNALS:
|
||||
void runawayException(const QString &message);
|
||||
|
||||
private:
|
||||
boost::thread_group threadGroup;
|
||||
CScheduler scheduler;
|
||||
|
||||
/// Pass fatal exception message to UI thread
|
||||
void handleRunawayException(const std::exception *e);
|
||||
@@ -300,7 +297,7 @@ void BitcoinCore::initialize()
|
||||
try
|
||||
{
|
||||
qDebug() << __func__ << ": Running initialization in thread";
|
||||
bool rv = AppInitMain(threadGroup, scheduler);
|
||||
bool rv = AppInitMain();
|
||||
Q_EMIT initializeResult(rv);
|
||||
} catch (const std::exception& e) {
|
||||
handleRunawayException(&e);
|
||||
@@ -314,8 +311,7 @@ void BitcoinCore::shutdown()
|
||||
try
|
||||
{
|
||||
qDebug() << __func__ << ": Running Shutdown in thread";
|
||||
Interrupt(threadGroup);
|
||||
threadGroup.join_all();
|
||||
Interrupt();
|
||||
Shutdown();
|
||||
qDebug() << __func__ << ": Shutdown finished";
|
||||
Q_EMIT shutdownResult();
|
||||
|
||||
Reference in New Issue
Block a user