Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This adds the module
lib.watchdog.watchdog
whose purpose is to provide a simple process supervision service. The idea is to set up a "watchdog" with a specified timeout. Unless the timeout is reset in time, the watchdog will kill the process because it is assumed that the offending process is hanging.The implementation works as follows (roughly speaking): The process periodically resets an
alarm(3)
, resetting the previous alarm each time. If it fails to reset the alarm, it will receive aSIGALRM
which it does not handle, and thus it is killed.For a detailed usage description see the file
src/watchdog/README.md
.NOTE: This pull request also introduces a new way to write tests. It adjusts
src/Makefile
to look for executables namedselftest.sh
in thesrc/
directory and run them as tests.