aboutsummaryrefslogtreecommitdiff
path: root/src/qt
diff options
context:
space:
mode:
authorGavin Andresen <gavinandresen@gmail.com>2013-05-02 12:26:33 -0400
committerGavin Andresen <gavinandresen@gmail.com>2013-05-02 12:26:33 -0400
commitd605bc4cd13716fde9c34d79a01f4ee128f8814f (patch)
treed6fe14f8a9654b4eaa5b4df69e02fb6820c12b95 /src/qt
parenteef2091fe9ee39ecd8e874c91d3ab0ff023c5356 (diff)
downloadbitcoin-d605bc4cd13716fde9c34d79a01f4ee128f8814f.tar.xz
Exit cleanly if AppInit2 returns false
Bitcoin-Qt could core dump if application initialization failed in certain ways. I double-fixed this: 1) qt/bitcoin.cpp now shuts down core threads cleanly if AppInit2 returns false 2) init.cpp now exits before StartNode() if strErrors is set (no reason to StartNode if we're just going to exit immediately anyway). Tested by triggering all of the various ways AppInit2 can fail, either by passing bogus command-line arguments or just recompiling tweaked code to simulate failure. This is a partial fix for #2480
Diffstat (limited to 'src/qt')
-rw-r--r--src/qt/bitcoin.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp
index 25448ea8cf..a567eafd5c 100644
--- a/src/qt/bitcoin.cpp
+++ b/src/qt/bitcoin.cpp
@@ -271,6 +271,9 @@ int main(int argc, char *argv[])
}
else
{
+ threadGroup.interrupt_all();
+ threadGroup.join_all();
+ Shutdown();
return 1;
}
} catch (std::exception& e) {