lix/src/libutil
Sergei Trofimovich 3ec02deb20 Make sure no exceptions leave ignoreException()
I noticed that occasional Ctrl-C leaves *.lock files around.
`nix-daemon`'s journal logs contained crashes like:

    nix-daemon[30416]: terminate called after throwing an instance of 'nix::SysError'
    nix-daemon[30416]:   what():  error: writing to file: Broken pipe

And core dump backtraces pointed at `teriminate()` call from
destructors:

    ...
    _Unwind_Resume ()
    nix::ignoreException() ()
    nix::LocalDerivationGoal::~LocalDerivationGoal()
    ...

    void ignoreException()
    {
        try {
            throw;
        } catch (std::exception & e) {
            printError("error (ignored): %1%", e.what());
        }
    }

The crashes happen when client side closes early and printError() throws
an IO error.

The change wraps `ignoreException()` into blanket `try { ... } catch (...) {}`.

Closes: https://github.com/NixOS/nix/issues/6046
2022-02-07 16:20:56 +00:00
..
tests Add some tests for hiliteMatches in libutil 2022-01-21 20:10:54 +01:00
abstract-setting-to-json.hh reproducibility: hide non-reproducible settings from manual 2021-12-01 17:25:58 +01:00
ansicolor.hh Change warnings from yellow to magenta 2021-09-14 10:42:29 +02:00
archive.cc dump(): Use emplace() 2022-01-07 13:23:17 +01:00
archive.hh Add forgotten override annotation 2020-12-02 14:23:38 +01:00
args.cc Don't insert spaces when completing attribute paths 2021-12-22 16:17:01 +01:00
args.hh Don't insert spaces when completing attribute paths 2021-12-22 16:17:01 +01:00
callback.hh Move Callback into its own header 2020-09-21 18:42:21 +02:00
closure.hh Extract a generic computeClosure function 2021-05-19 11:44:58 +02:00
comparator.hh Recursively substitute the realisations 2021-05-26 18:44:17 +02:00
compression.cc Get rid of std::shared_ptr<std::string> and ref<std::string> 2022-01-18 11:12:30 +01:00
compression.hh Get rid of std::shared_ptr<std::string> and ref<std::string> 2022-01-18 11:12:30 +01:00
compute-levels.cc Add x86_64 compute levels as additional system types 2021-02-22 09:11:15 +01:00
compute-levels.hh Add x86_64 compute levels as additional system types 2021-02-22 09:11:15 +01:00
config.cc Style 2021-10-27 13:02:37 +02:00
config.hh reproducibility: hide non-reproducible settings from manual 2021-12-01 17:25:58 +01:00
error.cc BaseError::calcWhat: take loggerSettings.showTrace into account 2021-12-28 15:53:21 +03:00
error.hh serialise.hh: Use std::string_view 2022-01-17 22:20:23 +01:00
experimental-features.cc parseExperimentalFeature(): Initialize atomically 2021-10-26 14:29:48 +02:00
experimental-features.hh Make experimental-features a proper type 2021-10-26 07:02:31 +02:00
finally.hh Add missing #include 2016-11-07 14:35:47 +01:00
fmt.cc hiliteMatches(): Style fixes, pass more stuff by reference 2022-01-24 14:47:34 +01:00
fmt.hh hiliteMatches(): Style fixes, pass more stuff by reference 2022-01-24 14:47:34 +01:00
hash.cc return string_views from forceString* 2022-01-27 17:15:43 +01:00
hash.hh return string_views from forceString* 2022-01-27 17:15:43 +01:00
json.cc avoid ostream sentries per json string character 2022-01-07 06:53:47 +01:00
json.hh Make std::uncaught_exception warning less noisy 2019-10-09 23:04:11 +02:00
local.mk Don't overwrite user provided lib*_LDFLAGS 2021-08-25 08:59:19 -07:00
logging.cc ANSI_YELLOW -> ANSI_WARNING 2021-09-14 10:42:29 +02:00
logging.hh Make --repair-path also repair corrupt optimised links 2022-01-11 11:57:45 +01:00
lru-cache.hh Missing #include <cassert> in lru-cache.hh (#3654) 2020-06-03 10:15:22 +00:00
monitor-fd.hh monitor-fds: Fix on macOS. 2018-02-14 18:26:37 -05:00
pool.hh RemoteStore: Close connection if an exception occurs 2018-10-16 23:36:15 +02:00
ref.hh fix build with gcc11 2021-10-13 18:03:33 +00:00
serialise.cc Get rid of std::shared_ptr<std::string> and ref<std::string> 2022-01-18 11:12:30 +01:00
serialise.hh Get rid of std::shared_ptr<std::string> and ref<std::string> 2022-01-18 11:12:30 +01:00
split.hh Typo 2020-09-17 20:21:04 +02:00
sync.hh sync.hh: return cv_status instead of dropping it, in case useful. 2018-06-18 17:31:00 -05:00
tarfile.cc extract_archive: fix "Hard-link target '...'" error 2021-12-10 17:03:51 +01:00
tarfile.hh TarArchive: Small refactoring 2021-08-30 17:02:51 +02:00
thread-pool.cc Remove CPU locking 2021-12-22 15:56:25 +01:00
thread-pool.hh Fix extra ; warnings involving MakeError 2019-11-10 11:24:47 -05:00
topo-sort.hh Add missing #pragma once 2020-10-06 10:40:07 +02:00
types.hh optionally return string_view from coerceToString 2022-01-27 22:15:30 +01:00
url-parts.hh Fix Nix to properly work with stores using a scoped IPv6 address 2021-03-16 19:14:42 +01:00
url.cc Prefer to throw specific errors 2021-07-01 11:09:31 -07:00
url.hh Don't include <regex> in header files 2020-09-21 18:22:45 +02:00
util.cc Make sure no exceptions leave ignoreException() 2022-02-07 16:20:56 +00:00
util.hh convert a for more utilities to string_view 2022-01-27 17:15:43 +01:00
xml-writer.cc Cleanup 2019-11-06 16:53:02 +01:00
xml-writer.hh Fix some random -Wconversion warnings 2018-05-02 13:56:34 +02:00