diff --git a/src/libstore/globals.cc b/src/libstore/globals.cc index 14437e2f0..b7397da1a 100644 --- a/src/libstore/globals.cc +++ b/src/libstore/globals.cc @@ -402,8 +402,6 @@ void assertLibStoreInitialized() { void initLibStore() { - initLibUtil(); - if (sodium_init() == -1) throw Error("could not initialise libsodium"); diff --git a/src/libutil/error.cc b/src/libutil/error.cc index d30da58c0..b534ff87e 100644 --- a/src/libutil/error.cc +++ b/src/libutil/error.cc @@ -15,11 +15,6 @@ void BaseError::addTrace(std::shared_ptr && e, HintFmt hint) err.traces.push_front(Trace { .pos = std::move(e), .hint = hint }); } -void throwExceptionSelfCheck(){ - // This is meant to be caught in initLibUtil() - throw SysError("C++ exception handling is broken. This would appear to be a problem with the way Nix was compiled and/or linked and/or loaded."); -} - // c++ std::exception descendants must have a 'const char* what()' function. // This stringifies the error and caches it for use by what(), or similarly by msg(). const std::string & BaseError::calcWhat() const diff --git a/src/libutil/error.hh b/src/libutil/error.hh index 9cb3a624d..924366580 100644 --- a/src/libutil/error.hh +++ b/src/libutil/error.hh @@ -200,8 +200,4 @@ public: } }; -/** Throw an exception for the purpose of checking that exception handling works; see 'initLibUtil()'. - */ -void throwExceptionSelfCheck(); - } diff --git a/src/libutil/util.cc b/src/libutil/util.cc index a7a5ad039..645b1ef01 100644 --- a/src/libutil/util.cc +++ b/src/libutil/util.cc @@ -52,26 +52,6 @@ extern char * * environ __attribute__((weak)); namespace nix { -void initLibUtil() { - // Check that exception handling works. Exception handling has been observed - // not to work on darwin when the linker flags aren't quite right. - // In this case we don't want to expose the user to some unrelated uncaught - // exception, but rather tell them exactly that exception handling is - // broken. - // When exception handling fails, the message tends to be printed by the - // C++ runtime, followed by an abort. - // For example on macOS we might see an error such as - // libc++abi: terminating with uncaught exception of type nix::SysError: error: C++ exception handling is broken. This would appear to be a problem with the way Nix was compiled and/or linked and/or loaded. - bool caught = false; - try { - throwExceptionSelfCheck(); - } catch (const nix::Error & _e) { - caught = true; - } - // This is not actually the main point of this check, but let's make sure anyway: - assert(caught); -} - std::optional getEnv(const std::string & key) { char * value = getenv(key.c_str()); diff --git a/src/libutil/util.hh b/src/libutil/util.hh index d47d7e0be..860ddae06 100644 --- a/src/libutil/util.hh +++ b/src/libutil/util.hh @@ -33,8 +33,6 @@ namespace nix { struct Sink; struct Source; -void initLibUtil(); - /** * The system for which Nix is compiled. */