The following diff appears to be working for me. Could you help me find the steps to reproduce the segfault? Otherwise, I think this is a sensible suggestion.
0--- a/src/qt/splashscreen.cpp
1+++ b/src/qt/splashscreen.cpp
2@@ -181,7 +181,7 @@ static void ShowProgress(SplashScreen *splash, const std::string &title, int nPr
3 #ifdef ENABLE_WALLET
4 void SplashScreen::ConnectWallet(CWallet* wallet)
5 {
6- wallet->ShowProgress.connect(boost::bind(ShowProgress, this, _1, _2, false, _4));
7+ wallet->ShowProgress.connect(boost::bind(ShowProgress, this, _1, _2, _3, _4));
8 connectedWallets.push_back(wallet);
9 }
10 #endif
11@@ -203,7 +203,7 @@ void SplashScreen::unsubscribeFromCoreSignals()
12 uiInterface.ShowProgress.disconnect(boost::bind(ShowProgress, this, _1, _2, _3, _4));
13 #ifdef ENABLE_WALLET
14 for (CWallet* const & pwallet : connectedWallets) {
15- pwallet->ShowProgress.disconnect(boost::bind(ShowProgress, this, _1, _2, false, _4));
16+ pwallet->ShowProgress.disconnect(boost::bind(ShowProgress, this, _1, _2, _3, _4));
17 }
18 #endif
19 }