+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#if 0
+
+1. Run some "bad" tests that prevent kyua from removing the work directory.
+ We use "chflags uunlink". Mounting a file system from an md(4) device
+ is another common use case.
+2. Fork a lot, nearly wrapping the PID number space, so step 3 will re-use
+ a PID from step 1. Running the entire FreeBSD test suite is a more
+ realistic scenario for this step.
+3. Run some more tests. If the stars align, the bug is not fixed yet, and
+ kyua is built with debugging, kyua will abort with the following messages.
+ Without debugging, the tests in step 3 will reuse the context from step 1,
+ including stdout, stderr, and working directory, which are still populated
+ with stuff from step 1. When I found this bug, step 3 was
+ __test_cases_list__, which expects a certain format in stdout and failed
+ when it found something completely unrelated.
+4. You can clean up with: chflags -R nouunlink /tmp/kyua.*; rm -rf /tmp/kyua.*
+
+$ cc -o pid_wrap -latf-c pid_wrap.c
+$ kyua test
+pid_wrap:leak_0 -> passed [0.001s]
+pid_wrap:leak_1 -> passed [0.001s]
+pid_wrap:leak_2 -> passed [0.001s]
+pid_wrap:leak_3 -> passed [0.001s]
+pid_wrap:leak_4 -> passed [0.001s]
+pid_wrap:leak_5 -> passed [0.001s]
+pid_wrap:leak_6 -> passed [0.001s]
+pid_wrap:leak_7 -> passed [0.001s]
+pid_wrap:leak_8 -> passed [0.001s]
+pid_wrap:leak_9 -> passed [0.001s]
+pid_wrap:pid_wrap -> passed [1.113s]
+pid_wrap:pid_wrap_0 -> passed [0.001s]
+pid_wrap:pid_wrap_1 -> passed [0.001s]
+pid_wrap:pid_wrap_2 -> passed [0.001s]
+pid_wrap:pid_wrap_3 -> *** /usr/src/main/contrib/kyua/utils/process/executor.cpp:779: Invariant check failed: PID 60876 already in all_exec_handles; not properly cleaned up or reused too fast
+*** Fatal signal 6 received
+*** Log file is /home/vangyzen/.kyua/logs/kyua.20221006-193544.log
+*** Please report this problem to kyua-discuss@googlegroups.com detailing what you were doing before the crash happened; if possible, include the log file mentioned above