diff --git a/test/libc/runtime/zipos_test.c b/test/libc/runtime/zipos_test.c index e7befe201..6b6c62f8d 100644 --- a/test/libc/runtime/zipos_test.c +++ b/test/libc/runtime/zipos_test.c @@ -28,6 +28,7 @@ #include "libc/str/str.h" #include "libc/sysv/consts/o.h" #include "libc/testlib/hyperion.h" +#include "libc/testlib/subprocess.h" #include "libc/testlib/testlib.h" #include "libc/thread/thread.h" @@ -111,3 +112,15 @@ TEST(zipos, lseek) { EXPECT_EQ(0, memcmp(b1, b2, 512)); EXPECT_SYS(0, 0, close(3)); } + +TEST(zipos, closeAfterVfork) { + ASSERT_SYS(0, 3, open("/zip/libc/testlib/hyperion.txt", O_RDONLY)); + SPAWN(vfork); + ASSERT_SYS(0, 0, close(3)); + ASSERT_SYS(0, 3, open("/etc/hosts", O_RDONLY)); + ASSERT_SYS(0, 0, close(3)); + ASSERT_SYS(EBADF, -1, close(3)); + EXITS(0); + ASSERT_SYS(0, 0, close(3)); + ASSERT_SYS(EBADF, -1, close(3)); +}