Tags: neosmart/tac
Tags
Removed manual signal handling and uninitialized memory Manual signal handling is no longer needed since using try_print instead of print, and uninitialized memory was causing problems since the destructor was still being called for the uninitialized data, which is obviously not what we wanted.
Fixed issues with hang on SIGPIPE and other panic For some reason, when rust panics with massive memory mapped files open, the process hangs until is SIGSEGVs with out-of-bounds memory access. Now using try_print instead of print and exiting on failure instead of letting it panic, because std::process::exit does not call destructors.
Now exiting on SIGINT to prevent runaway processing on SIGPIPE For some reason, when the stdout pipe is broken rust throw the exception as expected, but does not terminate the actual thread doing the processing. Now catching SIGINT as well, which is the usual cause of SIGPIPE (but notably _not_ the only cause).