rhbz#2171265 Report fatal InitApplicationServiceManager failures more reliably

For example, when initialization of the UNO type manager failed, any code run
between this SetBootstrapError and the HandleBootstrapErrors in Desktop::Main
which would need the type manager (e.g., to set a css::uno::Any) would have
caused a crash, so would have failed to print to std::cerr the sought-after
css::uno::Exception message.  The mis-initialized process would most definitely
crash sooner or later anyway, so there's no harm in a controlled std::abort()
here (if that is even reached, and the process doesn't already crash in
HandleBootstrapErrors, after it has printed the relevant information to
std::cerr).

Change-Id: Ic5889aedec0908fa4b1e2966eb188508d0f92d26
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149323
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
This commit is contained in:
Stephan Bergmann
2023-03-22 15:01:17 +00:00
parent 9331d2d333
commit a1faf14f74
+3 -1
View File
@@ -28,6 +28,7 @@
#include <sal/config.h>
#include <cstdlib>
#include <iostream>
#include <string_view>
@@ -458,7 +459,8 @@ void Desktop::Init()
}
catch (css::uno::Exception & e)
{
SetBootstrapError( BE_UNO_SERVICEMANAGER, e.Message );
HandleBootstrapErrors( BE_UNO_SERVICEMANAGER, e.Message );
std::abort();
}
// Check whether safe mode is enabled