In trying to debug #12337 I added a sleep at the end of AppInitMain() to simulate being able to close the application late in the AppInitMain() process. If I close the splash screen at this point, I get a reliable crash when the splashs screen is deleted as it tries to disconnect itself from the wallet ShowProgress signal after Shutdown() has been called and the wallet has been deleted.
{
    Q_OBJECT
public:
    explicit BitcoinApplication(int &argc, char **argv);
    ~BitcoinApplication();
#ifdef ENABLE_WALLET
    
    void createPaymentServer();
#endif
    
    void parameterSetup();
    
    void createOptionsModel(bool resetSettings);
    
    void createWindow(const NetworkStyle *networkStyle);
    
    void createSplashScreen(const NetworkStyle *networkStyle);
    
    void requestInitialize();
    
    void requestShutdown();
    
    int getReturnValue() const { return returnValue; }