diff options
author | Leah Neukirchen <leah@vuxu.org> | 2018-01-21 16:26:30 +0100 |
---|---|---|
committer | Leah Neukirchen <leah@vuxu.org> | 2018-01-21 16:26:30 +0100 |
commit | 3a867c9ba4f41dad6c67a1a08792b358f328c54b (patch) | |
tree | b1a78317a86069785124441284edbbd7c81c899c | |
parent | 2dda99039012b3605bda62d2373d526d914a6855 (diff) | |
download | fail-3a867c9ba4f41dad6c67a1a08792b358f328c54b.tar.gz fail-3a867c9ba4f41dad6c67a1a08792b358f328c54b.tar.xz fail-3a867c9ba4f41dad6c67a1a08792b358f328c54b.zip |
add -D to generate a process in uninterruptible sleep
-rw-r--r-- | fail.1 | 9 | ||||
-rw-r--r-- | fail.c | 13 |
2 files changed, 20 insertions, 2 deletions
diff --git a/fail.1 b/fail.1 index c5af510..d63ea57 100644 --- a/fail.1 +++ b/fail.1 @@ -6,7 +6,7 @@ .Nd crash in various possible ways .Sh SYNOPSIS .Nm -.Op Fl 123Oacdikrst +.Op Fl 123DOacdikrst .Sh DESCRIPTION .Nm crashes in various possible ways to @@ -27,6 +27,13 @@ Return with exit status -1. Return with exit status 2. .It Fl 3 Return with exit status 111. +.It Fl D +Create a process that is in uninterruptible sleep (state D) and +print its pid. +(This uses +.Xr vfork 2 +and +.Xr pause 2 . ) .It Fl O Allocate memory in an infinite loop, to trigger an out of memory situation. diff --git a/fail.c b/fail.c index f586ba8..6e986ee 100644 --- a/fail.c +++ b/fail.c @@ -10,6 +10,7 @@ #include <fcntl.h> #include <signal.h> +#include <stdio.h> #include <stdlib.h> #include <unistd.h> @@ -34,6 +35,15 @@ dlcrash() *nullp = 1337; } +void +uninterruptible() +{ + printf("pid %d is now in state D\n", getpid()); + vfork(); + pause(); + exit(1); +} + // can lockup your machine void oom() @@ -122,11 +132,12 @@ main(int argc, char *argv[]) { int c; - while ((c = getopt(argc, argv, "123Oacdikrst")) != -1) { + while ((c = getopt(argc, argv, "123DOacdikrst")) != -1) { switch (c) { case '1': exit(-1); break; case '2': exit(2); break; case '3': exit(111); break; + case 'D': uninterruptible(); break; case 'O': oom(); break; case 'a': abortme(); break; case 'c': violate_seccomp(); break; |