From f7ff77d865ca9f55d02abfea71573baedd1f188d Mon Sep 17 00:00:00 2001
From: Justine Tunney <jtunney@gmail.com>
Date: Mon, 17 Oct 2022 11:02:04 -0700
Subject: [PATCH] Make fixes and improvements

- Invent iso8601us() for faster timestamps
- Improve --strace descriptions of sigset_t
- Rebuild the Landlock Make bootstrap binary
- Introduce MODE=sysv for non-Windows builds
- Permit OFD fcntl() locks under pledge(flock)
- redbean can now protect your kernel from ddos
- Have vfork() fallback to sys_fork() not fork()
- Change kmalloc() to not die when out of memory
- Improve documentation for some termios functions
- Rewrite putenv() and friends to conform to POSIX
- Fix linenoise + strace verbosity issue on Windows
- Fix regressions in our ability to show backtraces
- Change redbean SetHeader() to no-op if value is nil
- Improve fcntl() so SQLite locks work in non-WAL mode
- Remove some unnecessary work during fork() on Windows
- Create redbean-based SSL reverse proxy for IPv4 TurfWar
- Fix ape/apeinstall.sh warning when using non-bash shells
- Add ProgramTrustedIp(), and IsTrustedIp() APIs to redbean
- Support $PWD, $UID, $GID, and $EUID in command interpreter
- Introduce experimental JTqFpD APE prefix for non-Windows builds
- Invent blackhole daemon for firewalling IP addresses via UNIX named socket
- Add ProgramTokenBucket(), AcquireToken(), and CountTokens() APIs to redbean
---
 ape/ape.S                                     |  10 +-
 ape/apeinstall.sh                             |   4 +-
 ape/apeuninstall.sh                           |   4 +
 build/bootstrap/make.com                      | Bin 497450 -> 502045 bytes
 build/config.mk                               |  33 +-
 examples/auto-memory-safety-crash2.c          |  12 +-
 examples/crashreport.c                        |   7 +
 examples/examples.mk                          |  19 +
 examples/nesemu1.cc                           |   2 +-
 examples/symtab.c                             |  42 ++
 libc/calls/__sig_mask.c                       |   2 +
 libc/calls/blocksigs.internal.h               |  19 +
 libc/calls/calls.h                            |  84 ++--
 libc/calls/cfspeed.c                          |  88 ++++
 libc/calls/close-nt.c                         |   9 +-
 libc/calls/close.c                            |   4 +-
 libc/calls/closefrom.c                        |   7 +-
 libc/calls/dup-nt.c                           |  35 +-
 libc/calls/execve-sysv.c                      |  57 ++-
 libc/calls/execve.c                           |   6 +-
 libc/calls/fcntl-nt.c                         | 265 +++++++++--
 libc/calls/fcntl.c                            |  27 +-
 libc/calls/internal.h                         |   3 +-
 libc/calls/kill.c                             |   6 +-
 libc/calls/open-nt.c                          |   2 +-
 libc/calls/pipe-nt.c                          |   6 +-
 libc/calls/pledge-linux.c                     |  27 +-
 libc/calls/preadv.c                           |  19 +-
 libc/calls/pwritev.c                          |  19 +-
 libc/{intrin => calls}/releasefd.c            |  15 +-
 libc/calls/reservefd.c                        |  14 +-
 libc/calls/sigaction.c                        |   4 +
 .../sigblockall.c}                            |  19 +-
 libc/calls/sigenter-openbsd.c                 |   4 +-
 libc/calls/sigenter-xnu.c                     |   1 +
 ...rocmask-sysv.greg.c => sigprocmask-sysv.c} |   0
 libc/calls/sigprocmask.c                      |   1 -
 libc/calls/{cfsetospeed.c => sigsetmask.c}    |  34 +-
 libc/calls/struct/fd.internal.h               |   2 +-
 libc/calls/struct/flock.h                     |   2 +-
 libc/calls/struct/sigset.h                    |   2 +
 libc/calls/syscall-sysv.internal.h            |   3 +-
 libc/calls/tcdrain.c                          |  37 +-
 libc/calls/tcflow.c                           |  88 +++-
 libc/calls/tcflush.c                          |  65 ++-
 libc/calls/tcgetpgrp.c                        |  23 +-
 libc/calls/tcsendbreak.c                      |  53 ++-
 libc/calls/tcsetpgrp.c                        |  27 +-
 .../{calls/cfsetispeed.c => intrin/_getenv.c} |  32 +-
 libc/intrin/_getenv.internal.h                |  15 +
 libc/intrin/bt.c                              |  27 +-
 libc/{runtime => intrin}/clearenv.c           |   4 +-
 libc/intrin/describeflock.c                   |   2 +-
 libc/intrin/describesigaction.c               |  55 ++-
 libc/intrin/describesigset.c                  |  14 +-
 libc/intrin/extend.c                          |  33 +-
 .../mem/putenv_test.c => libc/intrin/getenv.c |  36 +-
 libc/intrin/intrin.mk                         |   3 +-
 libc/intrin/kmalloc.c                         |  42 +-
 libc/intrin/kmalloc.h                         |   2 +-
 libc/{mem => intrin}/putenv.c                 | 122 ++---
 libc/{mem => intrin}/setenv.c                 |  21 +-
 libc/intrin/sigaddset.c                       |  11 +-
 libc/intrin/sigcountset.c                     |  22 +-
 libc/intrin/sigdelset.c                       |   1 +
 libc/intrin/sigfillset.c                      |  15 +-
 libc/intrin/sigismember.c                     |   7 +-
 libc/intrin/sigisprecious.c                   |   6 +-
 libc/intrin/sigisprecious.inc                 |   3 +
 libc/intrin/strsignal_r.c                     |   1 +
 libc/{calls => intrin}/unsetenv.c             |  44 +-
 libc/log/backtrace2.c                         |  13 +-
 libc/log/backtrace3.c                         |   2 +-
 libc/log/log.mk                               |   1 +
 libc/log/showcrashreports.c                   |   1 +
 libc/log/vflogf.c                             |   6 +-
 libc/mem/internal.h                           |   1 -
 libc/mem/sortedints.c                         |  93 ++++
 libc/mem/sortedints.internal.h                |  19 +
 libc/nexgen32e/longjmp.S                      |   6 +-
 .../cfgetospeed.c => nexgen32e/siglongjmp.S}  |  25 +-
 libc/nt/comms.h                               |  36 ++
 libc/nt/kernel32/ClearCommBreak.s             |  13 +
 libc/nt/kernel32/PurgeComm.s                  |  10 +
 libc/nt/kernel32/TransmitCommChar.s           |  10 +
 libc/nt/master.sh                             |   6 +-
 libc/runtime/cocmd.c                          |  45 +-
 libc/runtime/enable_threads.c                 |   7 +-
 libc/runtime/enable_tls.c                     |   7 +-
 libc/runtime/fork-nt.c                        |  14 +-
 .../cfgetispeed.c => runtime/fork-sysv.c}     |  22 +-
 libc/runtime/fork.c                           |  23 +-
 libc/runtime/hook.greg.c                      |   7 +-
 libc/runtime/memtrack.internal.h              |  36 +-
 libc/runtime/morph.greg.c                     |  71 ++-
 libc/runtime/morph.h                          |  12 +
 libc/runtime/runtime.h                        |   4 +-
 libc/runtime/straceinit.greg.c                |   4 +-
 libc/runtime/vfork.S                          |  94 ++--
 libc/sock/socketpair-nt.c                     |   4 +-
 libc/stdio/getrandom.c                        |   3 +-
 libc/str/str.h                                |   3 +
 libc/sysv/calls/__sys_fork.s                  |   2 +
 libc/sysv/calls/sys_fork.s                    |   2 -
 libc/sysv/consts.sh                           |  74 +--
 libc/sysv/consts/B1000000.s                   |   2 +-
 libc/sysv/consts/B110.s                       |   2 +-
 libc/sysv/consts/B115200.s                    |   2 +-
 libc/sysv/consts/B1152000.s                   |   2 +-
 libc/sysv/consts/B1200.s                      |   2 +-
 libc/sysv/consts/B134.s                       |   2 +-
 libc/sysv/consts/B150.s                       |   2 +-
 libc/sysv/consts/B1500000.s                   |   2 +-
 libc/sysv/consts/B1800.s                      |   2 +-
 libc/sysv/consts/B19200.s                     |   2 +-
 libc/sysv/consts/B200.s                       |   2 +-
 libc/sysv/consts/B2000000.s                   |   2 +-
 libc/sysv/consts/B230400.s                    |   2 +-
 libc/sysv/consts/B2400.s                      |   2 +-
 libc/sysv/consts/B2500000.s                   |   2 +-
 libc/sysv/consts/B300.s                       |   2 +-
 libc/sysv/consts/B3000000.s                   |   2 +-
 libc/sysv/consts/B3500000.s                   |   2 +-
 libc/sysv/consts/B38400.s                     |   2 +-
 libc/sysv/consts/B4000000.s                   |   2 +-
 libc/sysv/consts/B4800.s                      |   2 +-
 libc/sysv/consts/B50.s                        |   2 +-
 libc/sysv/consts/B500000.s                    |   2 +-
 libc/sysv/consts/B57600.s                     |   2 +-
 libc/sysv/consts/B576000.s                    |   2 +-
 libc/sysv/consts/B600.s                       |   2 +-
 libc/sysv/consts/B75.s                        |   2 +-
 libc/sysv/consts/B9600.s                      |   2 +-
 libc/sysv/consts/F_OFD_GETLK.s                |   2 +-
 libc/sysv/consts/F_OFD_SETLK.s                |   2 +-
 libc/sysv/consts/F_OFD_SETLKW.s               |   2 +-
 libc/sysv/consts/TIOCDRAIN.s                  |   2 -
 libc/sysv/consts/clone.h                      |  10 +-
 libc/sysv/consts/f.h                          |   2 +-
 libc/sysv/consts/termios.h                    |   2 -
 libc/sysv/syscalls.sh                         |   2 +-
 libc/thread/freebsd.internal.h                |   3 +
 libc/thread/posixthread.internal.h            |   4 +-
 libc/thread/pthread_attr_getscope.c           |   9 +-
 libc/thread/pthread_attr_setscope.c           |  31 +-
 libc/thread/pthread_cleanup_pop.c             |   5 +-
 libc/thread/pthread_cleanup_push.c            |   2 +-
 libc/thread/pthread_create.c                  |  11 +-
 libc/thread/pthread_kill.c                    |   1 +
 libc/thread/pthread_mutexattr_gettype.c       |   1 -
 libc/thread/pthread_self.c                    |   1 +
 libc/thread/pthread_sigmask.c                 |   1 +
 libc/thread/thread.h                          |   5 +-
 libc/time/iso8601.c                           |  41 ++
 libc/time/iso8601us.c                         |  80 ++++
 libc/time/struct/tm.h                         |   1 +
 libc/time/time.mk                             |   5 +-
 libc/time/xiso8601.c                          |   4 +-
 libc/{intrin/intrin.h => zipos/.cosmo}        |   0
 libc/zipos/open.c                             |   5 +-
 libc/zipos/zipos.S                            |  11 +-
 libc/zipos/zipos.mk                           |   7 +-
 net/http/http.h                               |   1 +
 net/http/http.mk                              |   2 +
 .../build/lib => net/http}/isnocompressext.c  |   9 +-
 net/turfwar/.init.lua                         |  46 ++
 .../getenv.greg.c => net/turfwar/blackhole.c  |  93 ++--
 net/turfwar/blackholed.c                      | 448 ++++++++++++++++++
 net/turfwar/blackholed.sh                     |   5 +
 net/turfwar/turfwar.c                         |  57 ++-
 net/turfwar/turfwar.mk                        |  28 +-
 test/libc/calls/access_test.c                 |   2 +-
 test/libc/calls/chdir_test.c                  |   2 +-
 test/libc/calls/lock2_test.c                  | 168 +++++++
 test/libc/calls/lock_ofd_test.c               | 207 ++++++++
 test/libc/calls/lock_test.c                   |   2 +-
 test/libc/calls/open_test.c                   |   2 +-
 test/libc/calls/sigaction_test.c              |  25 +
 test/libc/calls/test.mk                       |   6 +
 test/libc/calls/unlinkat_test.c               |   2 +-
 test/libc/intrin/describesigset_test.c        |   9 +-
 test/libc/intrin/lockipc_test.c               |   1 -
 test/libc/intrin/lockscale_test.c             |   1 -
 test/libc/intrin/pthread_atfork_test.c        |   1 -
 test/libc/intrin/putenv_test.c                |  69 +++
 test/libc/log/backtrace_test.c                |   1 +
 test/libc/mem/sortedints_test.c               | 126 +++++
 test/libc/stdio/dirstream_test.c              |   4 +
 test/libc/thread/pthread_cond_signal_test.c   |   4 +-
 test/libc/thread/pthread_rwlock_rdlock_test.c |   2 +-
 test/libc/time/iso8601_test.c                 |  51 ++
 .../lib => net/http}/isnocompressext_test.c   |   5 +-
 test/tool/net/redbean_test.c                  | 107 ++++-
 test/tool/net/sqlite_test.c                   |   1 -
 test/tool/net/test.mk                         |  22 +-
 third_party/python/Python/sysmodule.c         |   2 +-
 third_party/sqlite3/README.cosmo              |   6 +-
 third_party/sqlite3/main.shell.c              |   1 +
 third_party/sqlite3/shell.c                   |  14 +
 third_party/sqlite3/sqlite3.mk                |   1 +
 third_party/zip/fileio.c                      |  82 ----
 tool/build/lib/buildlib.mk                    |   1 +
 tool/build/lib/elfwriter_zip.c                |   4 +-
 tool/build/lib/isnocompressext.h              |  10 -
 tool/net/counters.inc                         |   4 +
 tool/net/demo/.init.lua                       |   3 +
 tool/net/fetch.inc                            |  11 +-
 tool/net/help.txt                             | 154 ++++++
 tool/net/redbean.c                            | 300 ++++++++++--
 209 files changed, 3818 insertions(+), 998 deletions(-)
 create mode 100644 examples/symtab.c
 create mode 100644 libc/calls/blocksigs.internal.h
 create mode 100644 libc/calls/cfspeed.c
 rename libc/{intrin => calls}/releasefd.c (81%)
 rename libc/{intrin/releasefd_unlocked.c => calls/sigblockall.c} (87%)
 rename libc/calls/{sigprocmask-sysv.greg.c => sigprocmask-sysv.c} (100%)
 rename libc/calls/{cfsetospeed.c => sigsetmask.c} (75%)
 rename libc/{calls/cfsetispeed.c => intrin/_getenv.c} (74%)
 create mode 100644 libc/intrin/_getenv.internal.h
 rename libc/{runtime => intrin}/clearenv.c (96%)
 rename test/libc/mem/putenv_test.c => libc/intrin/getenv.c (72%)
 rename libc/{mem => intrin}/putenv.c (60%)
 rename libc/{mem => intrin}/setenv.c (85%)
 create mode 100644 libc/intrin/sigisprecious.inc
 rename libc/{calls => intrin}/unsetenv.c (75%)
 create mode 100644 libc/mem/sortedints.c
 create mode 100644 libc/mem/sortedints.internal.h
 rename libc/{calls/cfgetospeed.c => nexgen32e/siglongjmp.S} (77%)
 create mode 100644 libc/nt/comms.h
 rename libc/{calls/cfgetispeed.c => runtime/fork-sysv.c} (82%)
 create mode 100644 libc/runtime/morph.h
 create mode 100644 libc/sysv/calls/__sys_fork.s
 delete mode 100644 libc/sysv/calls/sys_fork.s
 delete mode 100644 libc/sysv/consts/TIOCDRAIN.s
 create mode 100644 libc/time/iso8601us.c
 rename libc/{intrin/intrin.h => zipos/.cosmo} (100%)
 mode change 100755 => 100644
 rename {tool/build/lib => net/http}/isnocompressext.c (94%)
 create mode 100644 net/turfwar/.init.lua
 rename libc/intrin/getenv.greg.c => net/turfwar/blackhole.c (59%)
 create mode 100644 net/turfwar/blackholed.c
 create mode 100755 net/turfwar/blackholed.sh
 create mode 100644 test/libc/calls/lock2_test.c
 create mode 100644 test/libc/calls/lock_ofd_test.c
 create mode 100644 test/libc/intrin/putenv_test.c
 create mode 100644 test/libc/mem/sortedints_test.c
 create mode 100644 test/libc/time/iso8601_test.c
 rename test/{tool/build/lib => net/http}/isnocompressext_test.c (93%)
 delete mode 100644 tool/build/lib/isnocompressext.h

diff --git a/ape/ape.S b/ape/ape.S
index 5313039db..2521ac30c 100644
--- a/ape/ape.S
+++ b/ape/ape.S
@@ -112,7 +112,15 @@ cstr:	.endobj	cstr,globl,hidden		# ←for gdb readability
 //
 //	@param	dl is drive number
 //	@noreturn
-ape_mz:	.asciz	"MZqFpD='\n"		# Mark 'Zibo' Joseph Zbikowski
+ape_mz:
+#if SupportsWindows() || SupportsMetal()
+	.asciz	"MZqFpD='\n"		# Mark 'Zibo' Joseph Zbikowski
+#else
+//	Avoid virus scanner reputation damage when targeting System Five.
+//	WARNING: This prefix is experimental; it may be removed sometime.
+//	TODO(jart): Find another prefix that will work with BIOS loading.
+	.asciz	"JTqFpD='\n"		# Mark 'Zibo' Joseph Zbikowski
+#endif
 	.short	0x1000			# MZ: lowers upper bound load / 16
 	.short	0xf800			# MZ: roll greed on bss
 	.short	0			# MZ: lower bound on stack segment
diff --git a/ape/apeinstall.sh b/ape/apeinstall.sh
index 4f1c50948..c97d8fff7 100755
--- a/ape/apeinstall.sh
+++ b/ape/apeinstall.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-if [ $UID -eq 0 ]; then
+if [ "$(id -u)" -eq 0 ]; then
   SUDO=
 else
   SUDO=sudo
@@ -97,6 +97,8 @@ if [ x"$(uname -s)" = xLinux ]; then
   echo you may need to edit configs to persist across reboot >&2
   echo '$SUDO sh -c "echo '"'"':APE:M::MZqFpD::/usr/bin/ape:'"'"' >/proc/sys/fs/binfmt_misc/register"' >&2
   $SUDO sh -c "echo ':APE:M::MZqFpD::/usr/bin/ape:' >/proc/sys/fs/binfmt_misc/register" || exit
+  echo '$SUDO sh -c "echo '"'"':APE-sysv:M::JTqFpD::/usr/bin/ape:'"'"' >/proc/sys/fs/binfmt_misc/register"' >&2
+  $SUDO sh -c "echo ':APE-sysv:M::JTqFpD::/usr/bin/ape:' >/proc/sys/fs/binfmt_misc/register" || exit
   echo done >&2
 
   if [ x"$(cat /proc/sys/fs/binfmt_misc/status)" = xdisabled ]; then
diff --git a/ape/apeuninstall.sh b/ape/apeuninstall.sh
index e4abe5406..69cd41031 100755
--- a/ape/apeuninstall.sh
+++ b/ape/apeuninstall.sh
@@ -11,6 +11,7 @@ fi
   echo "APE Uninstaller intends to run"
   echo
   echo "    $SUDO sh -c 'echo -1 >/proc/sys/fs/binfmt_misc/APE'"
+  echo "    $SUDO sh -c 'echo -1 >/proc/sys/fs/binfmt_misc/APE-sysv'"
   echo "    $SUDO rm -f /usr/bin/ape ~/.ape o/tmp/.ape /tmp/.ape"
   echo
   echo "You may then use ape/apeinstall.sh to reinstall it"
@@ -21,4 +22,7 @@ set -ex
 if [ -f /proc/sys/fs/binfmt_misc/APE ]; then
   $SUDO sh -c 'echo -1 >/proc/sys/fs/binfmt_misc/APE' || exit
 fi
+if [ -f /proc/sys/fs/binfmt_misc/APE-sysv ]; then
+  $SUDO sh -c 'echo -1 >/proc/sys/fs/binfmt_misc/APE-sysv' || exit
+fi
 $SUDO rm -f /usr/bin/ape ~/.ape o/tmp/.ape o/tmp/ape /tmp/.ape /tmp/ape || exit
diff --git a/build/bootstrap/make.com b/build/bootstrap/make.com
index a9ded9870bd25edda743d842d878af3d8b2826b9..04ddfe9831c2617c7b8c038f2877fab9d7fd1510 100755
GIT binary patch
delta 205741
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
IA_GGG1)(Y)5&!@I

delta 201608
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
H{6qf>1145=

diff --git a/build/config.mk b/build/config.mk
index d37681ec8..3cf604303 100644
--- a/build/config.mk
+++ b/build/config.mk
@@ -29,7 +29,7 @@ endif
 #
 ifeq ($(MODE),fastbuild)
 CONFIG_CCFLAGS += $(BACKTRACES) $(FTRACE) -O
-CONFIG_CPPFLAGS += -DSYSDEBUG
+CONFIG_CPPFLAGS += -DSYSDEBUG -DDWARFLESS
 CONFIG_OFLAGS += -g0
 CONFIG_LDFLAGS += -S
 TARGET_ARCH ?= -msse3
@@ -125,6 +125,22 @@ TARGET_ARCH ?= -msse3
 OVERRIDE_CCFLAGS += -fno-pie
 endif
 
+# System Five Mode
+#
+#   - `make MODE=sysv`
+#   - Optimized
+#   - Backtraces
+#   - Debuggable
+#   - Syscall tracing
+#   - Function tracing
+#   - No Windows bloat!
+#
+ifeq ($(MODE), sysv)
+CONFIG_CCFLAGS += $(BACKTRACES) $(FTRACE) -O2
+CONFIG_CPPFLAGS += -DSYSDEBUG -DSUPPORT_VECTOR=121
+TARGET_ARCH ?= -msse3
+endif
+
 # Tiny Mode
 #
 #   - `make MODE=tiny`
@@ -151,7 +167,8 @@ CONFIG_CCFLAGS +=			\
 	-fschedule-insns2		\
 	-fomit-frame-pointer		\
 	-momit-leaf-frame-pointer	\
-	-foptimize-sibling-calls
+	-foptimize-sibling-calls	\
+	-DDWARFLESS
 CONFIG_OFLAGS +=			\
 	-g0
 CONFIG_LDFLAGS +=			\
@@ -181,7 +198,8 @@ CONFIG_CPPFLAGS +=			\
 	-DTINY				\
 	-DNDEBUG			\
 	-DTRUSTWORTHY			\
-	-DSUPPORT_VECTOR=1
+	-DSUPPORT_VECTOR=1		\
+	-DDWARFLESS
 DEFAULT_COPTS +=			\
 	-mred-zone
 CONFIG_OFLAGS +=			\
@@ -217,7 +235,8 @@ CONFIG_CPPFLAGS +=		\
 	-DTINY			\
 	-DNDEBUG		\
 	-DTRUSTWORTHY		\
-	-DSUPPORT_VECTOR=113
+	-DSUPPORT_VECTOR=113	\
+	-DDWARFLESS
 DEFAULT_COPTS +=		\
 	-mred-zone
 CONFIG_OFLAGS +=		\
@@ -252,7 +271,8 @@ CONFIG_CPPFLAGS +=		\
 	-DTINY			\
 	-DNDEBUG		\
 	-DTRUSTWORTHY		\
-	-DSUPPORT_VECTOR=121
+	-DSUPPORT_VECTOR=121	\
+	-DDWARFLESS
 DEFAULT_COPTS +=		\
 	-mred-zone
 CONFIG_CCFLAGS +=		\
@@ -287,7 +307,8 @@ CONFIG_CPPFLAGS +=		\
 	-DTINY			\
 	-DNDEBUG		\
 	-DTRUSTWORTHY		\
-	-DSUPPORT_VECTOR=251
+	-DSUPPORT_VECTOR=251	\
+	-DDWARFLESS
 CONFIG_CCFLAGS +=		\
 	-Os			\
 	-fno-align-functions	\
diff --git a/examples/auto-memory-safety-crash2.c b/examples/auto-memory-safety-crash2.c
index 3365afd0b..5916e0b40 100644
--- a/examples/auto-memory-safety-crash2.c
+++ b/examples/auto-memory-safety-crash2.c
@@ -7,12 +7,12 @@
 │   • http://creativecommons.org/publicdomain/zero/1.0/            │
 ╚─────────────────────────────────────────────────────────────────*/
 #endif
-#include "libc/intrin/bits.h"
 #include "libc/dce.h"
+#include "libc/intrin/bits.h"
+#include "libc/intrin/kprintf.h"
 #include "libc/log/log.h"
 #include "libc/mem/mem.h"
 #include "libc/runtime/runtime.h"
-#include "libc/stdio/stdio.h"
 #include "libc/str/str.h"
 
 /**
@@ -59,9 +59,15 @@
 
 int main(int argc, char *argv[]) {
   if (!IsAsan()) {
-    printf("this example is intended for MODE=asan or MODE=dbg\n");
+    kprintf("this example is intended for MODE=asan or MODE=dbg\n");
     exit(1);
   }
+
+  kprintf("----------------\n");
+  kprintf(" THIS IS A TEST \n");
+  kprintf("SIMULATING CRASH\n");
+  kprintf("----------------\n");
+
   char *buffer;
   ShowCrashReports(); /* not needed but yoinks appropriate symbols */
   buffer = malloc(13);
diff --git a/examples/crashreport.c b/examples/crashreport.c
index 558b6a28a..326356f74 100644
--- a/examples/crashreport.c
+++ b/examples/crashreport.c
@@ -7,6 +7,7 @@
 │   • http://creativecommons.org/publicdomain/zero/1.0/            │
 ╚─────────────────────────────────────────────────────────────────*/
 #endif
+#include "libc/intrin/kprintf.h"
 #include "libc/log/log.h"
 #include "libc/runtime/symbols.internal.h"
 
@@ -24,6 +25,12 @@
  */
 
 noubsan int main(int argc, char *argv[]) {
+
+  kprintf("----------------\n");
+  kprintf(" THIS IS A TEST \n");
+  kprintf("SIMULATING CRASH\n");
+  kprintf("----------------\n");
+
   volatile int64_t x;
   ShowCrashReports();
   return 1 / (x = 0);
diff --git a/examples/examples.mk b/examples/examples.mk
index 944c677a4..26317f1e8 100644
--- a/examples/examples.mk
+++ b/examples/examples.mk
@@ -146,6 +146,25 @@ o/$(MODE)/examples/nesemu1.com.dbg:						\
 		$(EXAMPLES_BOOTLOADER)
 	@$(APELINK)
 
+# # force symtab.com to be a zip file, by pulling a zip asset into linkage
+# # we wouldn't need to do this if we depended on functions like localtime
+# o/$(MODE)/examples/symtab.com.dbg:						\
+# 		$(EXAMPLES_DEPS)						\
+# 		o/$(MODE)/examples/symtab.o					\
+# 		o/$(MODE)/examples/symtab.c.zip.o				\
+# 		o/$(MODE)/examples/examples.pkg					\
+# 		$(EXAMPLES_BOOTLOADER)
+# 	@$(APELINK)
+
+# modify .com so it can read the symbol table without needing the .com.dbg file
+o/$(MODE)/examples/symtab.com:							\
+		o/$(MODE)/examples/symtab.com.dbg				\
+		o/$(MODE)/third_party/zip/zip.com				\
+		o/$(MODE)/tool/build/symtab.com
+	@$(MAKE_OBJCOPY)
+	@$(MAKE_SYMTAB_CREATE)
+	@$(MAKE_SYMTAB_ZIP)
+
 o/$(MODE)/examples/picol.o: private				\
 		OVERRIDE_CPPFLAGS +=				\
 			-DSTACK_FRAME_UNLIMITED
diff --git a/examples/nesemu1.cc b/examples/nesemu1.cc
index 2e648dbea..099fbe79d 100644
--- a/examples/nesemu1.cc
+++ b/examples/nesemu1.cc
@@ -47,7 +47,7 @@
 #include "third_party/libcxx/vector"
 #include "tool/viz/lib/knobs.h"
 
-STATIC_YOINK("zip_uri_support");
+STATIC_YOINK("zipos");
 
 #define USAGE \
   " [ROM] [FMV]\n\
diff --git a/examples/symtab.c b/examples/symtab.c
new file mode 100644
index 000000000..2c11eb964
--- /dev/null
+++ b/examples/symtab.c
@@ -0,0 +1,42 @@
+#if 0
+/*─────────────────────────────────────────────────────────────────╗
+│ To the extent possible under law, Justine Tunney has waived      │
+│ all copyright and related or neighboring rights to this file,    │
+│ as it is written in the following disclaimers:                   │
+│   • http://unlicense.org/                                        │
+│   • http://creativecommons.org/publicdomain/zero/1.0/            │
+╚─────────────────────────────────────────────────────────────────*/
+#endif
+#include "libc/intrin/kprintf.h"
+#include "libc/log/log.h"
+
+/**
+ * @fileoverview example of how to embed symbol table in .com file
+ *
+ *     # build our binary
+ *     make -j16 o//examples/symtab.com
+ *
+ *     # move binary somewhere else
+ *     # so it can't find the .com.dbg binary
+ *     cp o//examples/symtab.com /tmp
+ *
+ *     # run program
+ *     # notice that it has a symbolic backtrace
+ *     /tmp/symtab.com
+ *
+ * @see examples/examples.mk
+ */
+
+int main(int argc, char *argv[]) {
+
+  // this links all the debugging and zip functionality
+  ShowCrashReports();
+
+  kprintf("----------------\n");
+  kprintf(" THIS IS A TEST \n");
+  kprintf("SIMULATING CRASH\n");
+  kprintf("----------------\n");
+
+  volatile int64_t x;
+  return 1 / (x = 0);
+}
diff --git a/libc/calls/__sig_mask.c b/libc/calls/__sig_mask.c
index 2cb92a38f..1fc839bd5 100644
--- a/libc/calls/__sig_mask.c
+++ b/libc/calls/__sig_mask.c
@@ -16,7 +16,9 @@
 │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/assert.h"
 #include "libc/calls/sig.internal.h"
+#include "libc/calls/struct/sigset.h"
 #include "libc/sysv/consts/sig.h"
 #include "libc/sysv/errfuns.h"
 #include "libc/thread/tls.h"
diff --git a/libc/calls/blocksigs.internal.h b/libc/calls/blocksigs.internal.h
new file mode 100644
index 000000000..1886f02c1
--- /dev/null
+++ b/libc/calls/blocksigs.internal.h
@@ -0,0 +1,19 @@
+#ifndef COSMOPOLITAN_LIBC_CALLS_BLOCKSIGS_INTERNAL_H_
+#define COSMOPOLITAN_LIBC_CALLS_BLOCKSIGS_INTERNAL_H_
+#include "libc/calls/struct/sigset.h"
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+#define BLOCK_SIGNALS  \
+  do {                 \
+    sigset_t _SigMask; \
+  _SigMask = _sigblockall()
+
+#define ALLOW_SIGNALS    \
+  _sigsetmask(_SigMask); \
+  }                      \
+  while (0)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#endif /* COSMOPOLITAN_LIBC_CALLS_BLOCKSIGS_INTERNAL_H_ */
diff --git a/libc/calls/calls.h b/libc/calls/calls.h
index df2bceef7..7ee4d2083 100644
--- a/libc/calls/calls.h
+++ b/libc/calls/calls.h
@@ -65,13 +65,13 @@ char *ttyname(int);
 int access(const char *, int) dontthrow;
 int arch_prctl();
 int chdir(const char *);
-int chmod(const char *, uint32_t);
-int chown(const char *, uint32_t, uint32_t);
+int chmod(const char *, unsigned);
+int chown(const char *, unsigned, unsigned);
 int chroot(const char *);
 int close(int);
 int close_range(unsigned, unsigned, unsigned);
 int closefrom(int);
-int creat(const char *, uint32_t);
+int creat(const char *, unsigned);
 int dup(int);
 int dup2(int, int);
 int dup3(int, int, int);
@@ -84,25 +84,22 @@ int execv(const char *, char *const[]);
 int execve(const char *, char *const[], char *const[]);
 int execvp(const char *, char *const[]);
 int execvpe(const char *, char *const[], char *const[]);
-int fexecve(int, char *const[], char *const[]);
 int faccessat(int, const char *, int, int);
 int fadvise(int, uint64_t, uint64_t, int);
 int fchdir(int);
-int fchmod(int, uint32_t) dontthrow;
-int fchmodat(int, const char *, uint32_t, int);
-int fchown(int, uint32_t, uint32_t);
-int fchownat(int, const char *, uint32_t, uint32_t, int);
+int fchmod(int, unsigned) dontthrow;
+int fchmodat(int, const char *, unsigned, int);
+int fchown(int, unsigned, unsigned);
+int fchownat(int, const char *, unsigned, unsigned, int);
 int fcntl(int, int, ...);
 int fdatasync(int);
+int fexecve(int, char *const[], char *const[]);
 int flock(int, int);
 int fork(void);
 int fsync(int);
 int ftruncate(int, int64_t);
 int getdomainname(char *, size_t);
-uint32_t getegid(void) nosideeffect;
-uint32_t geteuid(void) nosideeffect;
-uint32_t getgid(void) nosideeffect;
-int getgroups(int size, uint32_t list[]);
+int getgroups(int, unsigned[]);
 int gethostname(char *, size_t);
 int getloadavg(double *, int);
 int getpgid(int) libcesque;
@@ -110,36 +107,29 @@ int getpgrp(void) nosideeffect;
 int getpid(void) nosideeffect libcesque;
 int getppid(void);
 int getpriority(int, unsigned);
-int getresgid(uint32_t *, uint32_t *, uint32_t *);
-int getresuid(uint32_t *, uint32_t *, uint32_t *);
+int getresgid(unsigned *, unsigned *, unsigned *);
+int getresuid(unsigned *, unsigned *, unsigned *);
 int getsid(int) nosideeffect libcesque;
 int gettid(void) libcesque;
-uint32_t getuid(void) libcesque;
-int sys_iopl(int);
 int ioprio_get(int, int);
 int ioprio_set(int, int, int);
 int issetugid(void);
 int kill(int, int);
 int killpg(int, int);
-int lchmod(const char *, uint32_t);
-int lchown(const char *, uint32_t, uint32_t);
+int lchmod(const char *, unsigned);
+int lchown(const char *, unsigned, unsigned);
 int link(const char *, const char *) dontthrow;
 int linkat(int, const char *, int, const char *, int);
 int madvise(void *, uint64_t, int);
+int makedirs(const char *, unsigned);
 int memfd_create(const char *, unsigned int);
 int mincore(void *, size_t, unsigned char *);
 int mkdir(const char *, unsigned);
 int mkdirat(int, const char *, unsigned);
-int makedirs(const char *, unsigned);
-int mkfifo(const char *, uint32_t);
-int mkfifoat(int, const char *, uint32_t);
-int mknod(const char *, uint32_t, uint64_t);
-int mknodat(int, const char *, int32_t, uint64_t);
-int sys_mlock(const void *, size_t);
-int sys_mlock2(const void *, size_t, int);
-int sys_mlockall(int);
-int sys_munlock(const void *, size_t);
-int sys_munlockall(void);
+int mkfifo(const char *, unsigned);
+int mkfifoat(int, const char *, unsigned);
+int mknod(const char *, unsigned, uint64_t);
+int mknodat(int, const char *, int, uint64_t);
 int nice(int);
 int open(const char *, int, ...);
 int openat(int, const char *, int, ...);
@@ -161,19 +151,19 @@ int renameat2(long, const char *, long, const char *, int);
 int rmdir(const char *);
 int sched_yield(void);
 int seccomp(unsigned, unsigned, void *);
-int setegid(uint32_t);
-int seteuid(uint32_t);
+int setegid(unsigned);
+int seteuid(unsigned);
 int setfsgid(unsigned);
 int setfsuid(unsigned);
 int setgid(unsigned);
-int setgroups(size_t, const uint32_t[]);
+int setgroups(size_t, const unsigned[]);
 int setpgid(int, int);
 int setpgrp(void);
 int setpriority(int, unsigned, int);
-int setregid(uint32_t, uint32_t);
-int setresgid(uint32_t, uint32_t, uint32_t);
-int setresuid(uint32_t, uint32_t, uint32_t);
-int setreuid(uint32_t, uint32_t);
+int setregid(unsigned, unsigned);
+int setresgid(unsigned, unsigned, unsigned);
+int setresuid(unsigned, unsigned, unsigned);
+int setreuid(unsigned, unsigned);
 int setsid(void);
 int setuid(unsigned);
 int sigignore(int);
@@ -181,16 +171,22 @@ int siginterrupt(int, int);
 int symlink(const char *, const char *);
 int symlinkat(const char *, int, const char *);
 int sync_file_range(int, int64_t, int64_t, unsigned);
+int sys_iopl(int);
+int sys_mlock(const void *, size_t);
+int sys_mlock2(const void *, size_t, int);
+int sys_mlockall(int);
+int sys_munlock(const void *, size_t);
+int sys_munlockall(void);
 int sys_ptrace(int, ...);
 int sys_sysctl(const int *, unsigned, void *, size_t *, void *, size_t);
-int tcsetpgrp(int, int32_t);
+int tcgetpgrp(int);
+int tcsetpgrp(int, int);
 int tgkill(int, int, int);
 int tkill(int, int);
 int tmpfd(void);
-int touch(const char *, uint32_t);
+int touch(const char *, unsigned);
 int truncate(const char *, int64_t);
 int ttyname_r(int, char *, size_t);
-unsigned umask(unsigned);
 int unlink(const char *);
 int unlink_s(const char **);
 int unlinkat(int, const char *, int);
@@ -199,11 +195,10 @@ int usleep(unsigned);
 int vfork(void) returnstwice;
 int wait(int *);
 int waitpid(int, int *, int);
-int32_t tcgetpgrp(int);
 intptr_t syscall(int, ...);
 long ptrace(int, ...);
-ssize_t copy_file_range(int, long *, int, long *, size_t, uint32_t);
-ssize_t copyfd(int, int64_t *, int, int64_t *, size_t, uint32_t);
+ssize_t copy_file_range(int, long *, int, long *, size_t, unsigned);
+ssize_t copyfd(int, int64_t *, int, int64_t *, size_t, unsigned);
 ssize_t getfiledescriptorsize(int);
 ssize_t lseek(int, int64_t, int);
 ssize_t pread(int, void *, size_t, int64_t);
@@ -212,8 +207,13 @@ ssize_t read(int, void *, size_t);
 ssize_t readansi(int, char *, size_t);
 ssize_t readlink(const char *, char *, size_t);
 ssize_t readlinkat(int, const char *, char *, size_t);
-ssize_t splice(int, int64_t *, int, int64_t *, size_t, uint32_t);
+ssize_t splice(int, int64_t *, int, int64_t *, size_t, unsigned);
 ssize_t write(int, const void *, size_t);
+unsigned getegid(void) nosideeffect;
+unsigned geteuid(void) nosideeffect;
+unsigned getgid(void) nosideeffect;
+unsigned getuid(void) libcesque;
+unsigned umask(unsigned);
 void sync(void);
 
 COSMOPOLITAN_C_END_
diff --git a/libc/calls/cfspeed.c b/libc/calls/cfspeed.c
new file mode 100644
index 000000000..e6a388a1d
--- /dev/null
+++ b/libc/calls/cfspeed.c
@@ -0,0 +1,88 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2021 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/calls/termios.h"
+#include "libc/sysv/consts/termios.h"
+#include "libc/sysv/errfuns.h"
+
+/**
+ * Returns input baud rate.
+ * @asyncsignalsafe
+ */
+uint32_t cfgetispeed(const struct termios *t) {
+  if (CBAUD) {
+    return t->c_cflag & CBAUD;
+  } else {
+    return t->c_ispeed;
+  }
+}
+
+/**
+ * Returns output baud rate.
+ * @asyncsignalsafe
+ */
+uint32_t cfgetospeed(const struct termios *t) {
+  if (CBAUD) {
+    return t->c_cflag & CBAUD;
+  } else {
+    return t->c_ospeed;
+  }
+}
+
+/**
+ * Sets input baud rate.
+ *
+ * @return 0 on success, or -1 w/ errno
+ * @asyncsignalsafe
+ */
+int cfsetispeed(struct termios *t, unsigned speed) {
+  if (speed) {
+    if (CBAUD) {
+      if (!(speed & ~CBAUD)) {
+        t->c_cflag &= ~CBAUD;
+        t->c_cflag |= speed;
+      } else {
+        return einval();
+      }
+    } else {
+      t->c_ispeed = speed;
+    }
+  }
+  return 0;
+}
+
+/**
+ * Sets output baud rate.
+ *
+ * @return 0 on success, or -1 w/ errno
+ * @asyncsignalsafe
+ */
+int cfsetospeed(struct termios *t, unsigned speed) {
+  if (CBAUD) {
+    if (!(speed & ~CBAUD)) {
+      t->c_cflag &= ~CBAUD;
+      t->c_cflag |= speed;
+      return 0;
+    } else {
+      return einval();
+    }
+  } else {
+    t->c_ospeed = speed;
+    return 0;
+  }
+}
diff --git a/libc/calls/close-nt.c b/libc/calls/close-nt.c
index 0db63759d..af398658d 100644
--- a/libc/calls/close-nt.c
+++ b/libc/calls/close-nt.c
@@ -18,15 +18,22 @@
 ╚─────────────────────────────────────────────────────────────────────────────*/
 #include "libc/calls/struct/fd.internal.h"
 #include "libc/errno.h"
+#include "libc/intrin/weaken.h"
 #include "libc/nt/enum/filetype.h"
 #include "libc/nt/files.h"
 #include "libc/nt/runtime.h"
 #include "libc/sysv/consts/o.h"
 
-textwindows int sys_close_nt(struct Fd *fd) {
+void sys_fcntl_nt_lock_cleanup(int) hidden;
+
+textwindows int sys_close_nt(struct Fd *fd, int fildes) {
   int e;
   bool ok = true;
 
+  if (_weaken(sys_fcntl_nt_lock_cleanup)) {
+    _weaken(sys_fcntl_nt_lock_cleanup)(fildes);
+  }
+
   if (fd->kind == kFdFile && ((fd->flags & O_ACCMODE) != O_RDONLY &&
                               GetFileType(fd->handle) == kNtFileTypeDisk)) {
     // Like Linux, closing a file on Windows doesn't guarantee it's
diff --git a/libc/calls/close.c b/libc/calls/close.c
index 4aa2dbca8..d3d30fc3a 100644
--- a/libc/calls/close.c
+++ b/libc/calls/close.c
@@ -16,10 +16,10 @@
 │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
-#include "libc/assert.h"
 #include "libc/calls/calls.h"
 #include "libc/calls/internal.h"
 #include "libc/calls/state.internal.h"
+#include "libc/calls/struct/fd.internal.h"
 #include "libc/calls/syscall-nt.internal.h"
 #include "libc/calls/syscall-sysv.internal.h"
 #include "libc/dce.h"
@@ -81,7 +81,7 @@ int close(int fd) {
         } else if (__isfdkind(fd, kFdFile) ||     //
                    __isfdkind(fd, kFdConsole) ||  //
                    __isfdkind(fd, kFdProcess)) {  //
-          rc = sys_close_nt(g_fds.p + fd);
+          rc = sys_close_nt(g_fds.p + fd, fd);
         } else {
           rc = eio();
         }
diff --git a/libc/calls/closefrom.c b/libc/calls/closefrom.c
index 566040ade..759a26351 100644
--- a/libc/calls/closefrom.c
+++ b/libc/calls/closefrom.c
@@ -27,12 +27,9 @@
 /**
  * Closes extra file descriptors, e.g.
  *
- *     // close all non-stdio file descriptors
- *     if (closefrom(3) == -1) {
- *       for (int i = 3; i < 256; ++i) {
+ *     if (closefrom(3))
+ *       for (int i = 3; i < 256; ++i)
  *         close(i);
- *       }
- *     }
  *
  * @return 0 on success, or -1 w/ errno
  * @raise EBADF if `first` is negative
diff --git a/libc/calls/dup-nt.c b/libc/calls/dup-nt.c
index 40b094385..d33ea0312 100644
--- a/libc/calls/dup-nt.c
+++ b/libc/calls/dup-nt.c
@@ -45,27 +45,18 @@ textwindows int sys_dup_nt(int oldfd, int newfd, int flags, int start) {
   }
 
   // allocate a new file descriptor
-  for (;;) {
-    if (newfd == -1) {
-      if ((newfd = __reservefd_unlocked(start)) == -1) {
-        __fds_unlock();
-        return -1;
-      }
-      break;
-    } else {
-      if (__ensurefds_unlocked(newfd) == -1) {
-        __fds_unlock();
-        return -1;
-      }
-      if (g_fds.p[newfd].kind) {
-        __fds_unlock();
-        close(newfd);
-        __fds_lock();
-      }
-      if (!g_fds.p[newfd].kind) {
-        g_fds.p[newfd].kind = kFdReserved;
-        break;
-      }
+  if (newfd == -1) {
+    if ((newfd = __reservefd_unlocked(start)) == -1) {
+      __fds_unlock();
+      return -1;
+    }
+  } else {
+    if (__ensurefds_unlocked(newfd) == -1) {
+      __fds_unlock();
+      return -1;
+    }
+    if (g_fds.p[newfd].kind) {
+      sys_close_nt(g_fds.p + newfd, newfd);
     }
   }
 
@@ -86,7 +77,7 @@ textwindows int sys_dup_nt(int oldfd, int newfd, int flags, int start) {
     }
     rc = newfd;
   } else {
-    __releasefd_unlocked(newfd);
+    __releasefd(newfd);
     rc = __winerr();
   }
 
diff --git a/libc/calls/execve-sysv.c b/libc/calls/execve-sysv.c
index 38add6742..cf275a93c 100644
--- a/libc/calls/execve-sysv.c
+++ b/libc/calls/execve-sysv.c
@@ -16,6 +16,7 @@
 │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/calls/blocksigs.internal.h"
 #include "libc/calls/calls.h"
 #include "libc/calls/syscall-sysv.internal.h"
 #include "libc/dce.h"
@@ -40,7 +41,9 @@ static bool IsApeBinary(const char *path) {
   char buf[8];
   bool res = false;
   if ((fd = sys_open(path, O_RDONLY, 0)) != -1) {
-    if (sys_read(fd, buf, 8) == 8 && READ64LE(buf) == READ64LE("MZqFpD='")) {
+    if (sys_read(fd, buf, 8) == 8 &&  //
+        (READ64LE(buf) == READ64LE("MZqFpD='") ||
+         READ64LE(buf) == READ64LE("JTqFpD='"))) {
       res = true;
     }
     sys_close(fd);
@@ -61,35 +64,41 @@ static const char *Join(const char *a, const char *b, char buf[PATH_MAX]) {
 }
 
 int sys_execve(const char *prog, char *const argv[], char *const envp[]) {
-  int e;
   size_t i;
+  int e, rc;
   char *buf;
   char **shargs;
   const char *ape;
   e = errno;
   __sys_execve(prog, argv, envp);
-  if (errno != ENOEXEC) return -1;
-  for (i = 0; argv[i];) ++i;
-  buf = alloca(PATH_MAX);
-  shargs = alloca((i + 4) * sizeof(char *));
-  if (IsApeBinary(prog) &&
-      (CanExecute((ape = "/usr/bin/ape")) ||
-       CanExecute((ape = Join(firstnonnull(getenv("TMPDIR"),
-                                           firstnonnull(getenv("HOME"), ".")),
-                              ".ape", buf))) ||
-       CanExecute(
-           (ape = Join(firstnonnull(getenv("HOME"), "."), ".ape", buf))))) {
-    shargs[0] = ape;
-    shargs[1] = "-";
-    shargs[2] = prog;
-    memcpy(shargs + 3, argv, (i + 1) * sizeof(char *));
-  } else if (CanExecute(prog)) {
-    shargs[0] = _PATH_BSHELL;
-    shargs[1] = prog;
-    memcpy(shargs + 2, argv + 1, i * sizeof(char *));
+  if (errno == ENOEXEC) {
+    for (i = 0; argv[i];) ++i;
+    buf = alloca(PATH_MAX);
+    shargs = alloca((i + 4) * sizeof(char *));
+    if (IsApeBinary(prog) &&
+        (CanExecute((ape = "/usr/bin/ape")) ||
+         CanExecute((ape = Join(firstnonnull(getenv("TMPDIR"),
+                                             firstnonnull(getenv("HOME"), ".")),
+                                ".ape", buf))) ||
+         CanExecute(
+             (ape = Join(firstnonnull(getenv("HOME"), "."), ".ape", buf))))) {
+      shargs[0] = ape;
+      shargs[1] = "-";
+      shargs[2] = prog;
+      memcpy(shargs + 3, argv, (i + 1) * sizeof(char *));
+      errno = e;
+      rc = __sys_execve(shargs[0], shargs, envp);
+    } else if (CanExecute(prog)) {
+      shargs[0] = _PATH_BSHELL;
+      shargs[1] = prog;
+      memcpy(shargs + 2, argv + 1, i * sizeof(char *));
+      errno = e;
+      rc = __sys_execve(shargs[0], shargs, envp);
+    } else {
+      rc = enoexec();
+    }
   } else {
-    return enoexec();
+    rc = -1;
   }
-  errno = e;
-  return __sys_execve(shargs[0], shargs, envp);
+  return rc;
 }
diff --git a/libc/calls/execve.c b/libc/calls/execve.c
index 4af61ccbd..1e0395da5 100644
--- a/libc/calls/execve.c
+++ b/libc/calls/execve.c
@@ -54,9 +54,9 @@ int execve(const char *prog, char *const argv[], char *const envp[]) {
   int rc;
   size_t i;
   if (!prog || !argv || !envp ||
-      (IsAsan() &&
-       (!__asan_is_valid(prog, 1) || !__asan_is_valid_strlist(argv) ||
-        !__asan_is_valid_strlist(envp)))) {
+      (IsAsan() && (!__asan_is_valid(prog, 1) ||       //
+                    !__asan_is_valid_strlist(argv) ||  //
+                    !__asan_is_valid_strlist(envp)))) {
     rc = efault();
   } else {
     STRACE("execve(%#s, %s, %s) → ...", prog, DescribeStringList(argv),
diff --git a/libc/calls/fcntl-nt.c b/libc/calls/fcntl-nt.c
index 491388499..f5c11ab89 100644
--- a/libc/calls/fcntl-nt.c
+++ b/libc/calls/fcntl-nt.c
@@ -16,6 +16,7 @@
 │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/assert.h"
 #include "libc/calls/calls.h"
 #include "libc/calls/internal.h"
 #include "libc/calls/struct/fd.internal.h"
@@ -24,63 +25,131 @@
 #include "libc/calls/syscall_support-nt.internal.h"
 #include "libc/calls/wincrash.internal.h"
 #include "libc/errno.h"
+#include "libc/intrin/kmalloc.h"
 #include "libc/intrin/weaken.h"
+#include "libc/limits.h"
 #include "libc/log/backtrace.internal.h"
+#include "libc/macros.internal.h"
 #include "libc/nt/enum/filelockflags.h"
 #include "libc/nt/errors.h"
 #include "libc/nt/files.h"
 #include "libc/nt/runtime.h"
 #include "libc/nt/struct/byhandlefileinformation.h"
 #include "libc/nt/struct/overlapped.h"
+#include "libc/str/str.h"
 #include "libc/sysv/consts/f.h"
 #include "libc/sysv/consts/fd.h"
 #include "libc/sysv/consts/o.h"
 #include "libc/sysv/errfuns.h"
+#include "libc/thread/thread.h"
 
-static textwindows int sys_fcntl_nt_dupfd(int fd, int cmd, int start) {
-  if (start < 0) return einval();
-  return sys_dup_nt(fd, -1, (cmd == F_DUPFD_CLOEXEC ? O_CLOEXEC : 0), start);
+struct FileLock {
+  struct FileLock *next;
+  int64_t off;
+  int64_t len;
+  int fd;
+  bool exc;
+};
+
+struct FileLocks {
+  pthread_mutex_t mu;
+  struct FileLock *list;
+  struct FileLock *free;
+};
+
+static struct FileLocks g_locks;
+
+static textwindows struct FileLock *NewFileLock(void) {
+  struct FileLock *fl;
+  if (g_locks.free) {
+    fl = g_locks.free;
+    g_locks.free = fl->next;
+  } else {
+    fl = kmalloc(sizeof(*fl));
+  }
+  bzero(fl, sizeof(*fl));
+  fl->next = g_locks.list;
+  g_locks.list = fl;
+  return fl;
 }
 
-static textwindows int sys_fcntl_nt_lock(struct Fd *f, int cmd, uintptr_t arg) {
+static textwindows void FreeFileLock(struct FileLock *fl) {
+  fl->next = g_locks.free;
+  g_locks.free = fl;
+}
+
+static textwindows bool OverlapsFileLock(struct FileLock *fl, int64_t off,
+                                         int64_t len) {
+  uint64_t BegA, EndA, BegB, EndB;
+  BegA = off;
+  EndA = off + (len - 1);
+  BegB = fl->off;
+  EndB = fl->off + (fl->len - 1);
+  return MAX(BegA, BegB) < MIN(EndA, EndB);
+}
+
+static textwindows bool EncompassesFileLock(struct FileLock *fl, int64_t off,
+                                            int64_t len) {
+  return off <= fl->off && fl->off + fl->len <= off + len;
+}
+
+static textwindows bool EqualsFileLock(struct FileLock *fl, int64_t off,
+                                       int64_t len) {
+  return fl->off == off && off + len == fl->off + fl->len;
+}
+
+hidden textwindows void sys_fcntl_nt_lock_cleanup(int fd) {
+  struct FileLock *fl, *ft, **flp;
+  pthread_mutex_lock(&g_locks.mu);
+  for (flp = &g_locks.list, fl = *flp; fl;) {
+    if (fl->fd == fd) {
+      *flp = fl->next;
+      ft = fl->next;
+      FreeFileLock(fl);
+      fl = ft;
+    } else {
+      flp = &fl->next;
+      fl = *flp;
+    }
+  }
+  pthread_mutex_unlock(&g_locks.mu);
+}
+
+static textwindows int sys_fcntl_nt_lock(struct Fd *f, int fd, int cmd,
+                                         uintptr_t arg) {
   int e;
   struct flock *l;
   uint32_t flags, err;
-  int64_t pos, off, len, size;
-  struct NtByHandleFileInformation info;
-
-  if (!GetFileInformationByHandle(f->handle, &info)) {
-    return __winerr();
-  }
-
-  pos = 0;
-  if (!SetFilePointerEx(f->handle, 0, &pos, SEEK_CUR)) {
-    return __winerr();
-  }
+  struct FileLock *fl, *ft, **flp;
+  int64_t pos, off, len, end, size;
 
   l = (struct flock *)arg;
   len = l->l_len;
   off = l->l_start;
-  size = (uint64_t)info.nFileSizeHigh << 32 | info.nFileSizeLow;
 
   switch (l->l_whence) {
     case SEEK_SET:
       break;
     case SEEK_CUR:
-      off = pos + off;
+      pos = 0;
+      if (SetFilePointerEx(f->handle, 0, &pos, SEEK_CUR)) {
+        off = pos + off;
+      } else {
+        return __winerr();
+      }
       break;
     case SEEK_END:
-      off = size - off;
+      off = INT64_MAX - off;
       break;
     default:
       return einval();
   }
 
   if (!len) {
-    len = size - off;
+    len = INT64_MAX - off;
   }
 
-  if (off < 0 || len < 0) {
+  if (off < 0 || len < 0 || __builtin_add_overflow(off, len, &end)) {
     return einval();
   }
 
@@ -89,8 +158,57 @@ static textwindows int sys_fcntl_nt_lock(struct Fd *f, int cmd, uintptr_t arg) {
                             .Pointer = (void *)(uintptr_t)off};
 
   if (l->l_type == F_RDLCK || l->l_type == F_WRLCK) {
+
+    if (cmd == F_SETLK || cmd == F_SETLKW) {
+      // make it possible to transition read locks to write locks
+      for (flp = &g_locks.list, fl = *flp; fl;) {
+        if (fl->fd == fd) {
+          if (EqualsFileLock(fl, off, len)) {
+            if (fl->exc == l->l_type == F_WRLCK) {
+              // we already have this lock
+              return 0;
+            } else {
+              // unlock our read lock and acquire write lock below
+              if (UnlockFileEx(f->handle, 0, len, len >> 32, &ov)) {
+                *flp = fl->next;
+                ft = fl->next;
+                FreeFileLock(fl);
+                fl = ft;
+                continue;
+              } else {
+                return -1;
+              }
+            }
+            break;
+          } else if (OverlapsFileLock(fl, off, len)) {
+            return enotsup();
+          }
+        }
+        flp = &fl->next;
+        fl = *flp;
+      }
+    }
+
+    // return better information on conflicting locks if possible
+    if (cmd == F_GETLK) {
+      for (fl = g_locks.list; fl; fl = fl->next) {
+        if (fl->fd == fd &&  //
+            OverlapsFileLock(fl, off, len) &&
+            (l->l_type == F_WRLCK || !fl->exc)) {
+          l->l_whence = SEEK_SET;
+          l->l_start = fl->off;
+          l->l_len = fl->len;
+          l->l_type == fl->exc ? F_WRLCK : F_RDLCK;
+          l->l_pid = getpid();
+          return 0;
+        }
+      }
+    }
+
     flags = 0;
     if (cmd != F_SETLKW) {
+      // TODO(jart): we should use expo backoff in wrapper function
+      //             should not matter since sqlite doesn't need it
       flags |= kNtLockfileFailImmediately;
     }
     if (l->l_type == F_WRLCK) {
@@ -101,68 +219,133 @@ static textwindows int sys_fcntl_nt_lock(struct Fd *f, int cmd, uintptr_t arg) {
       if (ok) {
         l->l_type = F_UNLCK;
         if (!UnlockFileEx(f->handle, 0, len, len >> 32, &ov)) {
-          notpossible;
+          return -1;
         }
       } else {
         l->l_pid = -1;
         ok = true;
       }
+    } else if (ok) {
+      fl = NewFileLock();
+      fl->off = off;
+      fl->len = len;
+      fl->exc = l->l_type == F_WRLCK;
+      fl->fd = fd;
     }
     return ok ? 0 : -1;
   }
 
   if (l->l_type == F_UNLCK) {
     if (cmd == F_GETLK) return einval();
-    e = errno;
-    if (UnlockFileEx(f->handle, 0, len, len >> 32, &ov)) {
-      return 0;
-    } else if (errno == ENOLCK) {
-      errno = e;
-      return 0;
-    } else {
-      return 0;
+
+    // allow a big range to unlock many small ranges
+    for (flp = &g_locks.list, fl = *flp; fl;) {
+      if (fl->fd == fd && EncompassesFileLock(fl, off, len)) {
+        struct NtOverlapped ov = {.hEvent = f->handle,
+                                  .Pointer = (void *)(uintptr_t)fl->off};
+        if (UnlockFileEx(f->handle, 0, fl->len, fl->len >> 32, &ov)) {
+          *flp = fl->next;
+          ft = fl->next;
+          FreeFileLock(fl);
+          fl = ft;
+        } else {
+          return -1;
+        }
+      } else {
+        flp = &fl->next;
+        fl = *flp;
+      }
     }
+
+    // win32 won't let us carve up existing locks
+    int overlap_count = 0;
+    for (fl = g_locks.list; fl; fl = fl->next) {
+      if (fl->fd == fd &&  //
+          OverlapsFileLock(fl, off, len)) {
+        ++overlap_count;
+      }
+    }
+
+    // try to handle the carving cases needed by sqlite
+    if (overlap_count == 1) {
+      for (fl = g_locks.list; fl; fl = fl->next) {
+        if (fl->fd == fd &&          //
+            off <= fl->off &&        //
+            off + len >= fl->off &&  //
+            off + len < fl->off + fl->len) {
+          // cleave left side of lock
+          struct NtOverlapped ov = {.hEvent = f->handle,
+                                    .Pointer = (void *)(uintptr_t)fl->off};
+          if (!UnlockFileEx(f->handle, 0, fl->len, fl->len >> 32, &ov)) {
+            return -1;
+          }
+          fl->len = (fl->off + fl->len) - (off + len);
+          fl->off = off + len;
+          ov.Pointer = (void *)(uintptr_t)fl->off;
+          if (!LockFileEx(f->handle, kNtLockfileExclusiveLock, 0, fl->len,
+                          fl->len >> 32, &ov)) {
+            return -1;
+          }
+          return 0;
+        }
+      }
+    }
+
+    if (overlap_count) {
+      return enotsup();
+    }
+
+    return 0;
   }
 
   return einval();
 }
 
+static textwindows int sys_fcntl_nt_dupfd(int fd, int cmd, int start) {
+  if (start < 0) return einval();
+  return sys_dup_nt(fd, -1, (cmd == F_DUPFD_CLOEXEC ? O_CLOEXEC : 0), start);
+}
+
 textwindows int sys_fcntl_nt(int fd, int cmd, uintptr_t arg) {
+  int rc;
   uint32_t flags;
   if (__isfdkind(fd, kFdFile) || __isfdkind(fd, kFdSocket)) {
     if (cmd == F_GETFL) {
-      return g_fds.p[fd].flags &
-             (O_ACCMODE | O_APPEND | O_ASYNC | O_DIRECT | O_NOATIME |
-              O_NONBLOCK | O_RANDOM | O_SEQUENTIAL);
+      rc = g_fds.p[fd].flags &
+           (O_ACCMODE | O_APPEND | O_ASYNC | O_DIRECT | O_NOATIME | O_NONBLOCK |
+            O_RANDOM | O_SEQUENTIAL);
     } else if (cmd == F_SETFL) {
       // O_APPEND doesn't appear to be tunable at cursory glance
       // O_NONBLOCK might require we start doing all i/o in threads
       // O_DSYNC / O_RSYNC / O_SYNC maybe if we fsync() everything
       // O_DIRECT | O_RANDOM | O_SEQUENTIAL | O_NDELAY possible but
       // not worth it.
-      return einval();
+      rc = einval();
     } else if (cmd == F_GETFD) {
       if (g_fds.p[fd].flags & O_CLOEXEC) {
-        return FD_CLOEXEC;
+        rc = FD_CLOEXEC;
       } else {
-        return 0;
+        rc = 0;
       }
     } else if (cmd == F_SETFD) {
       if (arg & FD_CLOEXEC) {
         g_fds.p[fd].flags |= O_CLOEXEC;
-        return FD_CLOEXEC;
+        rc = FD_CLOEXEC;
       } else {
         g_fds.p[fd].flags &= ~O_CLOEXEC;
-        return 0;
+        rc = 0;
       }
     } else if (cmd == F_SETLK || cmd == F_SETLKW || cmd == F_GETLK) {
-      return sys_fcntl_nt_lock(g_fds.p + fd, cmd, arg);
+      pthread_mutex_lock(&g_locks.mu);
+      rc = sys_fcntl_nt_lock(g_fds.p + fd, fd, cmd, arg);
+      pthread_mutex_unlock(&g_locks.mu);
     } else if (cmd == F_DUPFD || cmd == F_DUPFD_CLOEXEC) {
-      return sys_fcntl_nt_dupfd(fd, cmd, arg);
+      rc = sys_fcntl_nt_dupfd(fd, cmd, arg);
     } else {
-      return einval();
+      rc = einval();
     }
   } else {
-    return ebadf();
+    rc = ebadf();
   }
+  return rc;
 }
diff --git a/libc/calls/fcntl.c b/libc/calls/fcntl.c
index be68a3f9c..06369e9ba 100644
--- a/libc/calls/fcntl.c
+++ b/libc/calls/fcntl.c
@@ -31,7 +31,7 @@
 #include "libc/zipos/zipos.internal.h"
 
 /**
- * Does things with file descriptor, via re-imagined hourglass api, e.g.
+ * Does things with file descriptor, e.g.
  *
  *     CHECK_NE(-1, fcntl(fd, F_SETFD, FD_CLOEXEC));
  *
@@ -41,12 +41,14 @@
  *     CHECK_GE((newfd = fcntl(oldfd, F_DUPFD,         3)), 3);
  *     CHECK_GE((newfd = fcntl(oldfd, F_DUPFD_CLOEXEC, 3)), 3);
  *
- * This function implements POSIX Advisory Locks, which let independent
- * processes (and on Windows, threads too!) read/write lock byte ranges
- * of files. See `test/libc/calls/lock_test.c` for an example.
+ * This function implements file record locking, which lets independent
+ * processes (and on Linux 3.15+, threads too!) lock arbitrary ranges
+ * associated with a file. See `test/libc/calls/lock_test.c` and other
+ * locking related tests in that folder.
  *
- * Please be warned that locks currently do nothing on Windows since
- * figuring out how to polyfill them correctly is a work in progress.
+ * On Windows, the Cosmopolitan Libc polyfill for POSIX advisory locks
+ * only implements enough of its nuances to support SQLite's needs. Some
+ * possibilities, e.g. punching holes in lock, will raise `ENOTSUP`.
  *
  * @param fd is the file descriptor
  * @param cmd can be one of:
@@ -56,12 +58,12 @@
  *     - `F_SETFL` sets file descriptor status flags
  *     - `F_DUPFD` is like dup() but `arg` is a minimum result, e.g. 3
  *     - `F_DUPFD_CLOEXEC` ditto but sets `O_CLOEXEC` on returned fd
- *     - `F_SETLK` for record locking where `arg` is `struct flock`
- *     - `F_SETLKW` ditto but waits (i.e. blocks) for lock
+ *     - `F_SETLK` for record locking where `arg` is `struct flock *`
+ *     - `F_SETLKW` ditto but waits for lock (SQLite avoids this)
  *     - `F_GETLK` to retrieve information about a record lock
- *     - `F_OFD_SETLK` for better locks on Linux and XNU
- *     - `F_OFD_SETLKW` for better locks on Linux and XNU
- *     - `F_OFD_GETLK` for better locks on Linux and XNU
+ *     - `F_OFD_SETLK` for better non-blocking lock (Linux 3.15+ only)
+ *     - `F_OFD_SETLKW` for better blocking lock (Linux 3.15+ only)
+ *     - `F_OFD_GETLK` for better lock querying (Linux 3.15+ only)
  *     - `F_FULLFSYNC` on MacOS for fsync() with release barrier
  *     - `F_BARRIERFSYNC` on MacOS for fsync() with even more barriers
  *     - `F_SETNOSIGPIPE` on MacOS and NetBSD to control `SIGPIPE`
@@ -71,7 +73,7 @@
  *     - `F_NOCACHE` on MacOS to toggle data caching
  *     - `F_GETPIPE_SZ` on Linux to get pipe size
  *     - `F_SETPIPE_SZ` on Linux to set pipe size
- *     - `F_NOTIFY` raise `SIGIO` upon `fd` events in `arg` on Linux
+ *     - `F_NOTIFY` raise `SIGIO` upon `fd` events in `arg` (Linux only)
  *       - `DN_ACCESS` for file access
  *       - `DN_MODIFY` for file modifications
  *       - `DN_CREATE` for file creations
@@ -88,6 +90,7 @@
  * @raise ENOLCK if `F_SETLKW` would have exceeded `RLIMIT_LOCKS`
  * @raise EPERM if `cmd` is `F_SETOWN` and we weren't authorized
  * @raise ESRCH if `cmd` is `F_SETOWN` and process group not found
+ * @raise ENOTSUP on Windows if locking operation isn't supported yet
  * @raise EDEADLK if `cmd` was `F_SETLKW` and waiting would deadlock
  * @raise EMFILE if `cmd` is `F_DUPFD` or `F_DUPFD_CLOEXEC` and
  *     `RLIMIT_NOFILE` would be exceeded
diff --git a/libc/calls/internal.h b/libc/calls/internal.h
index 498b94e5d..68123098d 100644
--- a/libc/calls/internal.h
+++ b/libc/calls/internal.h
@@ -18,7 +18,6 @@ hidden extern const struct Fd kEmptyFd;
 int __reservefd(int) hidden;
 int __reservefd_unlocked(int) hidden;
 void __releasefd(int) hidden;
-void __releasefd_unlocked(int) hidden;
 int __ensurefds(int) hidden;
 int __ensurefds_unlocked(int) hidden;
 void __printfds(void) hidden;
@@ -43,7 +42,7 @@ forceinline size_t _clampio(size_t size) {
   }
 }
 
-int sys_close_nt(struct Fd *) hidden;
+int sys_close_nt(struct Fd *, int) hidden;
 bool _check_interrupts(bool, struct Fd *) hidden;
 int sys_openat_metal(int, const char *, int, unsigned);
 
diff --git a/libc/calls/kill.c b/libc/calls/kill.c
index fd8f459de..03ecfe4fb 100644
--- a/libc/calls/kill.c
+++ b/libc/calls/kill.c
@@ -17,10 +17,10 @@
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
 #include "libc/calls/calls.h"
-#include "libc/intrin/strace.internal.h"
 #include "libc/calls/syscall-nt.internal.h"
 #include "libc/calls/syscall-sysv.internal.h"
 #include "libc/dce.h"
+#include "libc/intrin/strace.internal.h"
 #include "libc/str/str.h"
 
 /**
@@ -38,6 +38,10 @@
  *      >0 can be SIGINT, SIGTERM, SIGKILL, SIGUSR1, etc.
  *      =0 checks both if pid exists and we can signal it
  * @return 0 if something was accomplished, or -1 w/ errno
+ * @raise ESRCH if `pid` couldn't be found
+ * @raise EPERM if lacked permission to signal process
+ * @raise EPERM if pledge() is in play without `proc` promised
+ * @raise EINVAL if the provided `sig` is invalid or unsupported
  * @asyncsignalsafe
  */
 int kill(int pid, int sig) {
diff --git a/libc/calls/open-nt.c b/libc/calls/open-nt.c
index d1242f63c..bcc7c032d 100644
--- a/libc/calls/open-nt.c
+++ b/libc/calls/open-nt.c
@@ -88,7 +88,7 @@ textwindows int sys_open_nt(int dirfd, const char *file, uint32_t flags,
       rc = sys_open_nt_file(dirfd, file, flags, mode, fd);
     }
     if (rc == -1) {
-      __releasefd_unlocked(fd);
+      __releasefd(fd);
     }
     __fds_unlock();
   }
diff --git a/libc/calls/pipe-nt.c b/libc/calls/pipe-nt.c
index 5bede1c12..1affe6793 100644
--- a/libc/calls/pipe-nt.c
+++ b/libc/calls/pipe-nt.c
@@ -41,7 +41,7 @@ textwindows int sys_pipe_nt(int pipefd[2], unsigned flags) {
     return -1;
   }
   if ((writer = __reservefd_unlocked(-1)) == -1) {
-    __releasefd_unlocked(reader);
+    __releasefd(reader);
     __fds_unlock();
     return -1;
   }
@@ -73,8 +73,8 @@ textwindows int sys_pipe_nt(int pipefd[2], unsigned flags) {
       CloseHandle(hin);
     }
   }
-  __releasefd_unlocked(writer);
-  __releasefd_unlocked(reader);
+  __releasefd(writer);
+  __releasefd(reader);
   __fds_unlock();
   return -1;
 }
diff --git a/libc/calls/pledge-linux.c b/libc/calls/pledge-linux.c
index 0e49c94fa..7e29bd67a 100644
--- a/libc/calls/pledge-linux.c
+++ b/libc/calls/pledge-linux.c
@@ -1606,19 +1606,26 @@ static privileged void AllowFcntlStdio(struct Filter *f) {
 
 // The second argument of fcntl() must be one of:
 //
-//   - F_GETLK (5)
-//   - F_SETLK (6)
-//   - F_SETLKW (7)
+//   - F_GETLK (0x05)
+//   - F_SETLK (0x06)
+//   - F_SETLKW (0x07)
+//   - F_OFD_GETLK (0x24)
+//   - F_OFD_SETLK (0x25)
+//   - F_OFD_SETLKW (0x26)
 //
 static privileged void AllowFcntlLock(struct Filter *f) {
   static const struct sock_filter fragment[] = {
-      /*L0*/ BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, __NR_linux_fcntl, 0, 6 - 1),
-      /*L1*/ BPF_STMT(BPF_LD | BPF_W | BPF_ABS, OFF(args[1])),
-      /*L2*/ BPF_JUMP(BPF_JMP | BPF_JGE | BPF_K, 5, 0, 5 - 3),
-      /*L3*/ BPF_JUMP(BPF_JMP | BPF_JGE | BPF_K, 8, 5 - 4, 0),
-      /*L4*/ BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_ALLOW),
-      /*L5*/ BPF_STMT(BPF_LD | BPF_W | BPF_ABS, OFF(nr)),
-      /*L6*/ /* next filter */
+      BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, __NR_linux_fcntl, 0, 9),
+      BPF_STMT(BPF_LD | BPF_W | BPF_ABS, OFF(args[1])),
+      BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 0x05, 5, 0),
+      BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 0x06, 4, 0),
+      BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 0x07, 3, 0),
+      BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 0x24, 2, 0),
+      BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 0x25, 1, 0),
+      BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 0x26, 0, 1),
+      BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_ALLOW),
+      BPF_STMT(BPF_LD | BPF_W | BPF_ABS, OFF(nr)),
+      /* next filter */
   };
   AppendFilter(f, PLEDGE(fragment));
 }
diff --git a/libc/calls/preadv.c b/libc/calls/preadv.c
index f005312b9..0657395f1 100644
--- a/libc/calls/preadv.c
+++ b/libc/calls/preadv.c
@@ -16,12 +16,9 @@
 │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
-#include "libc/assert.h"
 #include "libc/calls/internal.h"
 #include "libc/calls/struct/iovec.h"
 #include "libc/calls/struct/iovec.internal.h"
-#include "libc/calls/struct/sigset.h"
-#include "libc/calls/struct/sigset.internal.h"
 #include "libc/calls/syscall-sysv.internal.h"
 #include "libc/calls/syscall_support-sysv.internal.h"
 #include "libc/dce.h"
@@ -31,16 +28,13 @@
 #include "libc/intrin/likely.h"
 #include "libc/intrin/strace.internal.h"
 #include "libc/intrin/weaken.h"
-#include "libc/sysv/consts/sig.h"
 #include "libc/sysv/errfuns.h"
 #include "libc/zipos/zipos.internal.h"
 
 static ssize_t Preadv(int fd, struct iovec *iov, int iovlen, int64_t off) {
   int e, i;
   size_t got;
-  bool masked;
   ssize_t rc, toto;
-  sigset_t mask, oldmask;
 
   if (fd < 0) {
     return ebadf();
@@ -94,26 +88,17 @@ static ssize_t Preadv(int fd, struct iovec *iov, int iovlen, int64_t off) {
     if (rc == -1) {
       if (!toto) {
         toto = -1;
+      } else if (errno != EINTR) {
+        notpossible;
       }
       break;
     }
-
     got = rc;
     toto += got;
     off += got;
     if (got != iov[i].iov_len) {
       break;
     }
-
-    if (!masked) {
-      sigfillset(&mask);
-      _npassert(!sys_sigprocmask(SIG_SETMASK, &mask, &oldmask));
-      masked = true;
-    }
-  }
-
-  if (masked) {
-    _npassert(!sys_sigprocmask(SIG_SETMASK, &oldmask, 0));
   }
 
   return toto;
diff --git a/libc/calls/pwritev.c b/libc/calls/pwritev.c
index f06417b6a..3197ca6c9 100644
--- a/libc/calls/pwritev.c
+++ b/libc/calls/pwritev.c
@@ -16,12 +16,9 @@
 │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
-#include "libc/assert.h"
 #include "libc/calls/internal.h"
 #include "libc/calls/struct/iovec.h"
 #include "libc/calls/struct/iovec.internal.h"
-#include "libc/calls/struct/sigset.h"
-#include "libc/calls/struct/sigset.internal.h"
 #include "libc/calls/syscall-sysv.internal.h"
 #include "libc/calls/syscall_support-sysv.internal.h"
 #include "libc/dce.h"
@@ -31,17 +28,14 @@
 #include "libc/intrin/likely.h"
 #include "libc/intrin/strace.internal.h"
 #include "libc/intrin/weaken.h"
-#include "libc/sysv/consts/sig.h"
 #include "libc/sysv/errfuns.h"
 #include "libc/zipos/zipos.internal.h"
 
 static ssize_t Pwritev(int fd, const struct iovec *iov, int iovlen,
                        int64_t off) {
   int i, e;
-  bool masked;
   size_t sent;
   ssize_t rc, toto;
-  sigset_t mask, oldmask;
 
   if (fd < 0) {
     return ebadf();
@@ -95,26 +89,17 @@ static ssize_t Pwritev(int fd, const struct iovec *iov, int iovlen,
     if (rc == -1) {
       if (!toto) {
         toto = -1;
+      } else if (errno != EINTR) {
+        notpossible;
       }
       break;
     }
-
     sent = rc;
     toto += sent;
     off += sent;
     if (sent != iov[i].iov_len) {
       break;
     }
-
-    if (!masked) {
-      sigfillset(&mask);
-      _npassert(!sys_sigprocmask(SIG_SETMASK, &mask, &oldmask));
-      masked = true;
-    }
-  }
-
-  if (masked) {
-    _npassert(!sys_sigprocmask(SIG_SETMASK, &oldmask, 0));
   }
 
   return toto;
diff --git a/libc/intrin/releasefd.c b/libc/calls/releasefd.c
similarity index 81%
rename from libc/intrin/releasefd.c
rename to libc/calls/releasefd.c
index 505fd9eb5..2efcf13c7 100644
--- a/libc/intrin/releasefd.c
+++ b/libc/calls/releasefd.c
@@ -17,11 +17,18 @@
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
 #include "libc/calls/internal.h"
-#include "libc/calls/state.internal.h"
+#include "libc/intrin/atomic.h"
 #include "libc/macros.internal.h"
+#include "libc/str/str.h"
 
+// really want to avoid locking here so close() needn't block signals
 void __releasefd(int fd) {
-  __fds_lock();
-  __releasefd_unlocked(fd);
-  __fds_unlock();
+  int f1, f2;
+  if (!(0 <= fd && fd < g_fds.n)) return;
+  bzero(g_fds.p + fd, sizeof(*g_fds.p));
+  f1 = atomic_load_explicit(&g_fds.f, memory_order_relaxed);
+  do {
+    f2 = MIN(fd, f1);
+  } while (!atomic_compare_exchange_weak_explicit(
+      &g_fds.f, &f1, f2, memory_order_release, memory_order_relaxed));
 }
diff --git a/libc/calls/reservefd.c b/libc/calls/reservefd.c
index 28df3135e..4a13960d2 100644
--- a/libc/calls/reservefd.c
+++ b/libc/calls/reservefd.c
@@ -22,6 +22,7 @@
 #include "libc/calls/state.internal.h"
 #include "libc/calls/struct/sigset.h"
 #include "libc/dce.h"
+#include "libc/intrin/atomic.h"
 #include "libc/intrin/cmpxchg.h"
 #include "libc/intrin/extend.internal.h"
 #include "libc/intrin/strace.internal.h"
@@ -36,6 +37,8 @@
 #include "libc/sysv/consts/sig.h"
 #include "libc/sysv/errfuns.h"
 
+// TODO(jart): make more of this code lockless
+
 static volatile size_t mapsize;
 
 /**
@@ -71,9 +74,10 @@ int __ensurefds(int fd) {
  * @asyncsignalsafe
  */
 int __reservefd_unlocked(int start) {
-  int fd;
+  int fd, f1, f2;
   for (;;) {
-    for (fd = MAX(start, g_fds.f); fd < g_fds.n; ++fd) {
+    f1 = atomic_load_explicit(&g_fds.f, memory_order_acquire);
+    for (fd = MAX(start, f1); fd < g_fds.n; ++fd) {
       if (!g_fds.p[fd].kind) {
         break;
       }
@@ -81,7 +85,11 @@ int __reservefd_unlocked(int start) {
     fd = __ensurefds_unlocked(fd);
     bzero(g_fds.p + fd, sizeof(*g_fds.p));
     if (_cmpxchg(&g_fds.p[fd].kind, kFdEmpty, kFdReserved)) {
-      _cmpxchg(&g_fds.f, fd, fd + 1);
+      // g_fds.f isn't guarded by our mutex
+      do {
+        f2 = MAX(fd + 1, f1);
+      } while (!atomic_compare_exchange_weak_explicit(
+          &g_fds.f, &f1, f2, memory_order_release, memory_order_relaxed));
       return fd;
     }
   }
diff --git a/libc/calls/sigaction.c b/libc/calls/sigaction.c
index 4aab5d495..bea1a434b 100644
--- a/libc/calls/sigaction.c
+++ b/libc/calls/sigaction.c
@@ -17,6 +17,7 @@
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
 #include "libc/assert.h"
+#include "libc/calls/blocksigs.internal.h"
 #include "libc/calls/calls.h"
 #include "libc/calls/internal.h"
 #include "libc/calls/sig.internal.h"
@@ -29,6 +30,7 @@
 #include "libc/calls/struct/sigaction.h"
 #include "libc/calls/struct/sigaction.internal.h"
 #include "libc/calls/struct/siginfo.internal.h"
+#include "libc/calls/struct/sigset.h"
 #include "libc/calls/syscall-sysv.internal.h"
 #include "libc/calls/syscall_support-sysv.internal.h"
 #include "libc/calls/ucontext.h"
@@ -474,9 +476,11 @@ int sigaction(int sig, const struct sigaction *act, struct sigaction *oldact) {
   if (sig == SIGKILL || sig == SIGSTOP) {
     rc = einval();
   } else {
+    BLOCK_SIGNALS;
     __sig_lock();
     rc = __sigaction(sig, act, oldact);
     __sig_unlock();
+    ALLOW_SIGNALS;
   }
   STRACE("sigaction(%G, %s, [%s]) → %d% m", sig, DescribeSigaction(0, act),
          DescribeSigaction(rc, oldact), rc);
diff --git a/libc/intrin/releasefd_unlocked.c b/libc/calls/sigblockall.c
similarity index 87%
rename from libc/intrin/releasefd_unlocked.c
rename to libc/calls/sigblockall.c
index 08d9d8a08..9ca00277c 100644
--- a/libc/intrin/releasefd_unlocked.c
+++ b/libc/calls/sigblockall.c
@@ -16,13 +16,16 @@
 │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
-#include "libc/calls/internal.h"
-#include "libc/macros.internal.h"
-#include "libc/str/str.h"
+#include "libc/calls/struct/sigset.h"
 
-void __releasefd_unlocked(int fd) {
-  if (0 <= fd && fd < g_fds.n) {
-    bzero(g_fds.p + fd, sizeof(*g_fds.p));
-    g_fds.f = MIN(fd, g_fds.f);
-  }
+/**
+ * Blocks all signals without strace logging.
+ *
+ * @param neu is new signal mask for process
+ * @return old signal mask
+ */
+sigset_t _sigblockall(void) {
+  sigset_t ss;
+  sigfillset(&ss);
+  return _sigsetmask(ss);
 }
diff --git a/libc/calls/sigenter-openbsd.c b/libc/calls/sigenter-openbsd.c
index 74a9f3e5d..f9b277ee8 100644
--- a/libc/calls/sigenter-openbsd.c
+++ b/libc/calls/sigenter-openbsd.c
@@ -49,8 +49,8 @@ privileged void __sigenter_openbsd(int sig, struct siginfo_openbsd *openbsdinfo,
       __repstosb(&g.uc, 0, sizeof(g.uc));
       __siginfo2cosmo(&g.si, (void *)openbsdinfo);
       g.uc.uc_mcontext.fpregs = &g.uc.__fpustate;
-      __repmovsb(&g.uc.uc_sigmask, &ctx->sc_mask,
-                 MIN(sizeof(g.uc.uc_sigmask), sizeof(ctx->sc_mask)));
+      g.uc.uc_sigmask.__bits[0] = ctx->sc_mask;
+      g.uc.uc_sigmask.__bits[1] = 0;
       g.uc.uc_mcontext.rdi = ctx->sc_rdi;
       g.uc.uc_mcontext.rsi = ctx->sc_rsi;
       g.uc.uc_mcontext.rdx = ctx->sc_rdx;
diff --git a/libc/calls/sigenter-xnu.c b/libc/calls/sigenter-xnu.c
index 14c2d7f2d..89e9381e8 100644
--- a/libc/calls/sigenter-xnu.c
+++ b/libc/calls/sigenter-xnu.c
@@ -473,6 +473,7 @@ privileged void __sigenter_xnu(void *fn, int infostyle, int sig,
       if (xnuctx) {
         g.uc.uc_flags = xnuctx->uc_onstack ? SA_ONSTACK : 0;
         g.uc.uc_sigmask.__bits[0] = xnuctx->uc_sigmask;
+        g.uc.uc_sigmask.__bits[1] = 0;
         g.uc.uc_stack.ss_sp = xnuctx->uc_stack.ss_sp;
         g.uc.uc_stack.ss_flags = xnuctx->uc_stack.ss_flags;
         g.uc.uc_stack.ss_size = xnuctx->uc_stack.ss_size;
diff --git a/libc/calls/sigprocmask-sysv.greg.c b/libc/calls/sigprocmask-sysv.c
similarity index 100%
rename from libc/calls/sigprocmask-sysv.greg.c
rename to libc/calls/sigprocmask-sysv.c
diff --git a/libc/calls/sigprocmask.c b/libc/calls/sigprocmask.c
index c59a64ce9..caab7e275 100644
--- a/libc/calls/sigprocmask.c
+++ b/libc/calls/sigprocmask.c
@@ -26,7 +26,6 @@
 #include "libc/intrin/asan.internal.h"
 #include "libc/intrin/describeflags.internal.h"
 #include "libc/intrin/strace.internal.h"
-#include "libc/log/log.h"
 #include "libc/str/str.h"
 #include "libc/sysv/consts/sig.h"
 #include "libc/sysv/errfuns.h"
diff --git a/libc/calls/cfsetospeed.c b/libc/calls/sigsetmask.c
similarity index 75%
rename from libc/calls/cfsetospeed.c
rename to libc/calls/sigsetmask.c
index a6ea81adc..5cebef6f5 100644
--- a/libc/calls/cfsetospeed.c
+++ b/libc/calls/sigsetmask.c
@@ -1,7 +1,7 @@
 /*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
 │vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
 ╞══════════════════════════════════════════════════════════════════════════════╡
-│ Copyright 2021 Justine Alexandra Roberts Tunney                              │
+│ Copyright 2022 Justine Alexandra Roberts Tunney                              │
 │                                                                              │
 │ Permission to use, copy, modify, and/or distribute this software for         │
 │ any purpose with or without fee is hereby granted, provided that the         │
@@ -16,21 +16,25 @@
 │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
-#include "libc/calls/termios.h"
-#include "libc/sysv/consts/termios.h"
-#include "libc/sysv/errfuns.h"
+#include "libc/assert.h"
+#include "libc/calls/calls.h"
+#include "libc/calls/sig.internal.h"
+#include "libc/calls/struct/sigset.internal.h"
+#include "libc/dce.h"
+#include "libc/sysv/consts/sig.h"
 
-int cfsetospeed(struct termios *t, unsigned speed) {
-  if (CBAUD) {
-    if (!(speed & ~CBAUD)) {
-      t->c_cflag &= ~CBAUD;
-      t->c_cflag |= speed;
-      return 0;
-    } else {
-      return einval();
-    }
+/**
+ * Sets signal mask without strace logging.
+ *
+ * @param neu is new signal mask for process
+ * @return old signal mask
+ */
+sigset_t _sigsetmask(sigset_t neu) {
+  sigset_t res;
+  if (IsMetal() || IsWindows()) {
+    __sig_mask(SIG_SETMASK, &neu, &res);
   } else {
-    t->c_ospeed = speed;
-    return 0;
+    _npassert(!sys_sigprocmask(SIG_SETMASK, &neu, &res));
   }
+  return res;
 }
diff --git a/libc/calls/struct/fd.internal.h b/libc/calls/struct/fd.internal.h
index fe117b253..a607d7402 100644
--- a/libc/calls/struct/fd.internal.h
+++ b/libc/calls/struct/fd.internal.h
@@ -25,7 +25,7 @@ struct Fd {
 };
 
 struct Fds {
-  int f; /* lowest free slot */
+  _Atomic(int) f; /* lowest free slot */
   size_t n;
   struct Fd *p, *e;
 };
diff --git a/libc/calls/struct/flock.h b/libc/calls/struct/flock.h
index eb671cf15..ac897f6db 100644
--- a/libc/calls/struct/flock.h
+++ b/libc/calls/struct/flock.h
@@ -9,7 +9,7 @@ struct flock {      /* cosmopolitan abi */
   int64_t l_start;  /* starting offset */
   int64_t l_len;    /* no. bytes (0 means to end of file) */
   int32_t l_pid;    /* lock owner */
-  int32_t l_sysid;  /* remote system id or zero for local */
+  int32_t l_sysid;  /* remote system id or zero for local (freebsd) */
 };
 
 COSMOPOLITAN_C_END_
diff --git a/libc/calls/struct/sigset.h b/libc/calls/struct/sigset.h
index 97d36bda6..afcace1b2 100644
--- a/libc/calls/struct/sigset.h
+++ b/libc/calls/struct/sigset.h
@@ -21,6 +21,8 @@ int sigprocmask(int, const sigset_t *, sigset_t *);
 int sigsuspend(const sigset_t *);
 int sigpending(sigset_t *);
 int pthread_sigmask(int, const sigset_t *, sigset_t *);
+sigset_t _sigsetmask(sigset_t);
+sigset_t _sigblockall(void);
 
 COSMOPOLITAN_C_END_
 #endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
diff --git a/libc/calls/syscall-sysv.internal.h b/libc/calls/syscall-sysv.internal.h
index 7264cd0f0..cd7f36ee4 100644
--- a/libc/calls/syscall-sysv.internal.h
+++ b/libc/calls/syscall-sysv.internal.h
@@ -10,8 +10,8 @@ COSMOPOLITAN_C_START_
 │ cosmopolitan § syscalls » system five » structless synthetic jump slots  ─╬─│┼
 ╚────────────────────────────────────────────────────────────────────────────│*/
 
+axdx_t __sys_fork(void) hidden;
 axdx_t __sys_pipe(i32[hasatleast 2], i32) hidden;
-axdx_t sys_fork(void) hidden;
 axdx_t sys_getpid(void) hidden;
 char *sys_getcwd(char *, u64) hidden;
 char *sys_getcwd_xnu(char *, u64) hidden;
@@ -46,6 +46,7 @@ i32 sys_fchownat(i32, const char *, u32, u32, u32) hidden;
 i32 sys_fcntl(i32, i32, u64) hidden;
 i32 sys_fdatasync(i32) hidden;
 i32 sys_flock(i32, i32) hidden;
+i32 sys_fork(void) hidden;
 i32 sys_fsync(i32) hidden;
 i32 sys_ftruncate(i32, i64, i64) hidden;
 i32 sys_getcontext(void *) hidden;
diff --git a/libc/calls/tcdrain.c b/libc/calls/tcdrain.c
index c7ca74c3a..5c6d2a6e3 100644
--- a/libc/calls/tcdrain.c
+++ b/libc/calls/tcdrain.c
@@ -16,8 +16,41 @@
 │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/calls/internal.h"
+#include "libc/calls/syscall-sysv.internal.h"
+#include "libc/calls/syscall_support-nt.internal.h"
 #include "libc/calls/termios.h"
+#include "libc/dce.h"
+#include "libc/intrin/strace.internal.h"
+#include "libc/nt/files.h"
+#include "libc/sysv/errfuns.h"
 
-int tcdrain(int fd) {
-  return ioctl(fd, TCSBRK, (void *)(intptr_t)1);
+static textwindows int sys_tcdrain_nt(int fd) {
+  if (!__isfdopen(fd)) return ebadf();
+  if (!FlushFileBuffers(g_fds.p[fd].handle)) return __winerr();
+  return 0;
+}
+
+/**
+ * Waits until all written output is transmitted.
+ *
+ * @param fd is file descriptor of tty
+ * @raise EBADF if `fd` isn't an open file descriptor
+ * @raise ENOTTY if `fd` is open but not a teletypewriter
+ * @raise EIO if process group of writer is orphoned, calling thread is
+ *     not blocking `SIGTTOU`, and process isn't ignoring `SIGTTOU`
+ * @raise ENOSYS on bare metal
+ * @asyncsignalsafe
+ */
+int tcdrain(int fd) {
+  int rc;
+  if (IsMetal()) {
+    rc = enosys();
+  } else if (!IsWindows()) {
+    rc = sys_ioctl(fd, TCSBRK, (void *)(intptr_t)1);
+  } else {
+    rc = sys_tcdrain_nt(fd);
+  }
+  STRACE("tcdrain(%d) → %d% m", fd, rc);
+  return rc;
 }
diff --git a/libc/calls/tcflow.c b/libc/calls/tcflow.c
index ec1152d90..8015c7abe 100644
--- a/libc/calls/tcflow.c
+++ b/libc/calls/tcflow.c
@@ -16,31 +16,91 @@
 │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/calls/internal.h"
 #include "libc/calls/struct/termios.h"
 #include "libc/calls/syscall-sysv.internal.h"
+#include "libc/calls/syscall_support-nt.internal.h"
 #include "libc/calls/termios.h"
 #include "libc/dce.h"
+#include "libc/fmt/itoa.h"
+#include "libc/intrin/strace.internal.h"
+#include "libc/mem/alloca.h"
+#include "libc/nt/comms.h"
 #include "libc/sysv/consts/termios.h"
 #include "libc/sysv/errfuns.h"
 
+#define kNtPurgeTxabort 1
+#define kNtPurgeRxabort 2
+
+static const char *DescribeFlow(char buf[12], int action) {
+  if (action == TCOOFF) return "TCOOFF";
+  if (action == TCOON) return "TCOON";
+  if (action == TCIOFF) return "TCIOFF";
+  if (action == TCION) return "TCION";
+  FormatInt32(buf, action);
+  return buf;
+}
+
+static int sys_tcflow_bsd(int fd, int action) {
+  int rc;
+  uint8_t c;
+  struct termios t;
+  if (action == TCOOFF) return sys_ioctl(fd, TIOCSTOP, 0);
+  if (action == TCOON) return sys_ioctl(fd, TIOCSTART, 0);
+  if (action != TCIOFF && action != TCION) return einval();
+  if (sys_ioctl(fd, TCGETS, &t) == -1) return -1;
+  c = t.c_cc[action == TCIOFF ? VSTOP : VSTART];
+  if (c == 255) return 0;  // code is disabled
+  if (sys_write(fd, &c, 1) == -1) return -1;
+  return 0;
+}
+
+static dontinline textwindows int sys_tcflow_nt(int fd, int action) {
+  bool32 ok;
+  int64_t h;
+  if (!__isfdopen(fd)) return ebadf();
+  h = g_fds.p[fd].handle;
+  if (action == TCOOFF) {
+    ok = PurgeComm(h, kNtPurgeTxabort);
+  } else if (action == TCIOFF) {
+    ok = PurgeComm(h, kNtPurgeRxabort);
+  } else if (action == TCOON || action == TCION) {
+    ok = ClearCommBreak(h);
+  } else {
+    return einval();
+  }
+  return ok ? 0 : __winerr();
+}
+
 /**
  * Changes flow of teletypewriter data.
  *
- * - `TCOOFF` suspends output
- * - `TCOON` resumes output
- * - `TCIOFF` transmits a STOP character
- * - `TCION` transmits a START character
+ * @param fd is file descriptor of tty
+ * @param action may be one of:
+ *     - `TCOOFF` to suspend output
+ *     - `TCOON` to resume output
+ *     - `TCIOFF` to transmit a `STOP` character
+ *     - `TCION` to transmit a `START` character
+ * @return 0 on success, or -1 w/ errno
+ * @raise EINVAL if `action` is invalid
+ * @raise ENOSYS on Windows and Bare Metal
+ * @raise EBADF if `fd` isn't an open file descriptor
+ * @raise ENOTTY if `fd` is open but not a teletypewriter
+ * @raise EIO if process group of writer is orphoned, calling thread is
+ *     not blocking `SIGTTOU`, and process isn't ignoring `SIGTTOU`
+ * @asyncsignalsafe
  */
 int tcflow(int fd, int action) {
-  uint8_t c;
-  struct termios t;
-  if (!IsBsd()) return sys_ioctl(fd, TCXONC, action);
-  if (action == TCOOFF) return sys_ioctl(fd, TIOCSTOP, 0);
-  if (action == TCOON) return sys_ioctl(fd, TIOCSTART, 0);
-  if (action != TCIOFF && action != TCION) return einval();
-  if (tcgetattr(fd, &t) == -1) return -1;
-  if ((c = t.c_cc[action == TCIOFF ? VSTOP : VSTART]) != 255) {
-    if (sys_write(fd, &c, 1) == -1) return -1;
+  int rc;
+  if (IsMetal()) {
+    rc = enosys();
+  } else if (IsBsd()) {
+    rc = sys_ioctl(fd, TCXONC, action);
+  } else if (!IsWindows()) {
+    rc = sys_ioctl(fd, TCXONC, action);
+  } else {
+    rc = sys_tcflow_nt(fd, action);
   }
-  return 0;
+  STRACE("tcflow(%d, %s) → %d% m", fd, DescribeFlow(alloca(12), action), rc);
+  return rc;
 }
diff --git a/libc/calls/tcflush.c b/libc/calls/tcflush.c
index 6229b6c68..d23033985 100644
--- a/libc/calls/tcflush.c
+++ b/libc/calls/tcflush.c
@@ -16,17 +16,70 @@
 │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/calls/internal.h"
+#include "libc/calls/syscall-nt.internal.h"
 #include "libc/calls/syscall-sysv.internal.h"
+#include "libc/calls/syscall_support-nt.internal.h"
 #include "libc/calls/termios.h"
+#include "libc/dce.h"
+#include "libc/fmt/itoa.h"
+#include "libc/intrin/strace.internal.h"
+#include "libc/mem/alloca.h"
+#include "libc/nt/comms.h"
+#include "libc/sysv/consts/termios.h"
+#include "libc/sysv/errfuns.h"
+
+#define kNtPurgeTxclear 4
+#define kNtPurgeRxclear 8
+
+static const char *DescribeFlush(char buf[12], int action) {
+  if (action == TCIFLUSH) return "TCIFLUSH";
+  if (action == TCOFLUSH) return "TCOFLUSH";
+  if (action == TCIOFLUSH) return "TCIOFLUSH";
+  FormatInt32(buf, action);
+  return buf;
+}
+
+static dontinline textwindows int sys_tcflush_nt(int fd, int queue) {
+  bool32 ok;
+  int64_t h;
+  if (!__isfdopen(fd)) return ebadf();
+  ok = true;
+  h = g_fds.p[fd].handle;
+  if (queue == TCIFLUSH || queue == TCIOFLUSH) {
+    ok &= !!PurgeComm(h, kNtPurgeRxclear);
+  }
+  if (queue == TCOFLUSH || queue == TCIOFLUSH) {
+    ok &= !!PurgeComm(h, kNtPurgeTxclear);
+  }
+  return ok ? 0 : __winerr();
+}
 
 /**
- * Flushes teletypewriter data.
+ * Discards queued data on teletypewriter.
  *
- * - `TCIFLUSH` flushes data received but not read
- * - `TCOFLUSH` flushes data written but not transmitted
- * - `TCIOFLUSH` does both `TCOFLUSH` and `TCIFLUSH`
+ * @param queue may be one of:
+ *     - `TCIFLUSH` flushes data received but not read
+ *     - `TCOFLUSH` flushes data written but not transmitted
+ *     - `TCIOFLUSH` does both `TCOFLUSH` and `TCIFLUSH`
+ * @return 0 on success, or -1 w/ errno
+ * @raise EINVAL if `action` is invalid
+ * @raise EBADF if `fd` isn't an open file descriptor
+ * @raise ENOTTY if `fd` is open but not a teletypewriter
+ * @raise EIO if process group of writer is orphoned, calling thread is
+ *     not blocking `SIGTTOU`, and process isn't ignoring `SIGTTOU`
+ * @raise ENOSYS on bare metal
+ * @asyncsignalsafe
  */
 int tcflush(int fd, int queue) {
-  /* TODO(jart): Windows? */
-  return sys_ioctl(fd, TCFLSH, queue);
+  int rc;
+  if (IsMetal()) {
+    rc = enosys();
+  } else if (!IsWindows()) {
+    rc = sys_ioctl(fd, TCFLSH, queue);
+  } else {
+    rc = sys_tcflush_nt(fd, queue);
+  }
+  STRACE("tcflush(%d, %s) → %d% m", fd, DescribeFlush(alloca(12), queue), rc);
+  return rc;
 }
diff --git a/libc/calls/tcgetpgrp.c b/libc/calls/tcgetpgrp.c
index 292105e28..3ccf7e446 100644
--- a/libc/calls/tcgetpgrp.c
+++ b/libc/calls/tcgetpgrp.c
@@ -16,16 +16,29 @@
 │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
-#include "libc/calls/calls.h"
+#include "libc/calls/syscall-sysv.internal.h"
 #include "libc/calls/termios.h"
+#include "libc/dce.h"
+#include "libc/intrin/strace.internal.h"
 #include "libc/sysv/consts/termios.h"
+#include "libc/sysv/errfuns.h"
 
 /**
  * Returns which process group controls terminal.
+ *
+ * @return process group id on success, or -1 w/ errno
+ * @raise ENOTTY if `fd` is isn't controlling teletypewriter
+ * @raise EBADF if `fd` isn't an open file descriptor
+ * @raise ENOSYS on Windows and Bare Metal
  * @asyncsignalsafe
  */
-int32_t tcgetpgrp(int fd) {
-  int pgrp;
-  if (ioctl(fd, TIOCGPGRP, &pgrp) < 0) return -1;
-  return pgrp;
+int tcgetpgrp(int fd) {
+  int rc, pgrp;
+  if (IsWindows() || IsMetal()) {
+    rc = enosys();
+  } else {
+    rc = sys_ioctl(fd, TIOCGPGRP, &pgrp);
+  }
+  STRACE("tcgetpgrp(%d) → %d% m", fd, rc == -1 ? rc : pgrp);
+  return rc == -1 ? rc : pgrp;
 }
diff --git a/libc/calls/tcsendbreak.c b/libc/calls/tcsendbreak.c
index 60fbf39d6..f4c4000c0 100644
--- a/libc/calls/tcsendbreak.c
+++ b/libc/calls/tcsendbreak.c
@@ -17,18 +17,53 @@
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
 #include "libc/calls/calls.h"
+#include "libc/calls/internal.h"
 #include "libc/calls/syscall-sysv.internal.h"
+#include "libc/calls/syscall_support-nt.internal.h"
 #include "libc/calls/termios.h"
 #include "libc/dce.h"
+#include "libc/intrin/strace.internal.h"
+#include "libc/nt/comms.h"
 #include "libc/sysv/consts/termios.h"
+#include "libc/sysv/errfuns.h"
 
-int tcsendbreak(int fd, int len) {
-  if (!IsBsd()) {
-    return sys_ioctl(fd, TCSBRK, 0);
-  } else {
-    if (sys_ioctl(fd, TIOCSBRK, 0) == -1) return -1;
-    usleep(400000);
-    if (sys_ioctl(fd, TIOCCBRK, 0) == -1) return -1;
-    return 0;
-  }
+static int sys_tcsendbreak_bsd(int fd) {
+  if (sys_ioctl(fd, TIOCSBRK, 0) == -1) return -1;
+  usleep(400000);
+  if (sys_ioctl(fd, TIOCCBRK, 0) == -1) return -1;
+  return 0;
+}
+
+static textwindows int sys_tcsendbreak_nt(int fd) {
+  if (!__isfdopen(fd)) return ebadf();
+  if (!TransmitCommChar(g_fds.p[fd].handle, '\0')) return __winerr();
+  return 0;
+}
+
+/**
+ * Sends break.
+ *
+ * @param fd is file descriptor of tty
+ * @param duration of 0 sends a break for 0.25-0.5 seconds, and other
+ *     durations are treated the same by this implementation
+ * @raise EBADF if `fd` isn't an open file descriptor
+ * @raise ENOTTY if `fd` is open but not a teletypewriter
+ * @raise EIO if process group of writer is orphoned, calling thread is
+ *     not blocking `SIGTTOU`, and process isn't ignoring `SIGTTOU`
+ * @raise ENOSYS on bare metal
+ * @asyncsignalsafe
+ */
+int tcsendbreak(int fd, int duration) {
+  int rc;
+  if (IsMetal()) {
+    rc = enosys();
+  } else if (IsBsd()) {
+    rc = sys_tcsendbreak_bsd(fd);
+  } else if (!IsWindows()) {
+    rc = sys_ioctl(fd, TCSBRK, 0);
+  } else {
+    rc = sys_tcsendbreak_nt(fd);
+  }
+  STRACE("tcsendbreak(%d, %u) → %d% m", fd, duration, rc);
+  return rc;
 }
diff --git a/libc/calls/tcsetpgrp.c b/libc/calls/tcsetpgrp.c
index db4bad481..39ee96e13 100644
--- a/libc/calls/tcsetpgrp.c
+++ b/libc/calls/tcsetpgrp.c
@@ -17,14 +17,33 @@
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
 #include "libc/calls/calls.h"
+#include "libc/calls/syscall-sysv.internal.h"
 #include "libc/calls/termios.h"
+#include "libc/dce.h"
+#include "libc/intrin/strace.internal.h"
 #include "libc/sysv/consts/termios.h"
+#include "libc/sysv/errfuns.h"
 
 /**
- * Puts process group in control of terminal.
+ * Sets foreground process group id.
+ *
+ * @return 0 on success, or -1 w/ errno
+ * @raise EINVAL if `pgrp` is invalid
+ * @raise ENOSYS on Windows and Bare Metal
+ * @raise EBADF if `fd` isn't an open file descriptor
+ * @raise EPERM if `pgrp` didn't match process in our group
+ * @raise ENOTTY if `fd` is isn't controlling teletypewriter
+ * @raise EIO if process group of writer is orphoned, calling thread is
+ *     not blocking `SIGTTOU`, and process isn't ignoring `SIGTTOU`
  * @asyncsignalsafe
  */
-int tcsetpgrp(int fd, int32_t pgrp) {
-  int pgrp_int = pgrp;
-  return ioctl(fd, TIOCSPGRP, &pgrp_int);
+int tcsetpgrp(int fd, int pgrp) {
+  int rc;
+  if (IsWindows() || IsMetal()) {
+    rc = enosys();
+  } else {
+    rc = sys_ioctl(fd, TIOCSPGRP, &pgrp);
+  }
+  STRACE("tcsetpgrp(%d, %d) → %d% m", fd, pgrp, rc);
+  return rc;
 }
diff --git a/libc/calls/cfsetispeed.c b/libc/intrin/_getenv.c
similarity index 74%
rename from libc/calls/cfsetispeed.c
rename to libc/intrin/_getenv.c
index 9662e3922..24ce1bc34 100644
--- a/libc/calls/cfsetispeed.c
+++ b/libc/intrin/_getenv.c
@@ -1,7 +1,7 @@
 /*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
 │vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
 ╞══════════════════════════════════════════════════════════════════════════════╡
-│ Copyright 2021 Justine Alexandra Roberts Tunney                              │
+│ Copyright 2022 Justine Alexandra Roberts Tunney                              │
 │                                                                              │
 │ Permission to use, copy, modify, and/or distribute this software for         │
 │ any purpose with or without fee is hereby granted, provided that the         │
@@ -16,18 +16,26 @@
 │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
-#include "libc/calls/termios.h"
-#include "libc/sysv/errfuns.h"
+#include "libc/dce.h"
+#include "libc/intrin/_getenv.internal.h"
 
-int cfsetispeed(struct termios *t, unsigned speed) {
-  if (speed) {
-    if (CBAUD) {
-      if (speed & ~CBAUD) return einval();
-      t->c_cflag &= ~CBAUD;
-      t->c_cflag |= speed;
-    } else {
-      t->c_ispeed = speed;
+#define ToUpper(c) \
+  (IsWindows() && (c) >= 'a' && (c) <= 'z' ? (c) - 'a' + 'A' : (c))
+
+struct Env _getenv(char **p, const char *k) {
+  char *t;
+  int i, j;
+  for (i = 0; (t = p[i]); ++i) {
+    for (j = 0;; ++j) {
+      if (!k[j] || k[j] == '=') {
+        if (!t[j]) return (struct Env){t + j, i};
+        if (t[j] == '=') return (struct Env){t + j + 1, i};
+        break;
+      }
+      if (ToUpper(k[j] & 255) != ToUpper(t[j] & 255)) {
+        break;
+      }
     }
   }
-  return 0;
+  return (struct Env){0, i};
 }
diff --git a/libc/intrin/_getenv.internal.h b/libc/intrin/_getenv.internal.h
new file mode 100644
index 000000000..229665677
--- /dev/null
+++ b/libc/intrin/_getenv.internal.h
@@ -0,0 +1,15 @@
+#ifndef COSMOPOLITAN_LIBC_INTRIN__GETENV_INTERNAL_H_
+#define COSMOPOLITAN_LIBC_INTRIN__GETENV_INTERNAL_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+struct Env {
+  char *s;
+  int i;
+};
+
+struct Env _getenv(char **, const char *) hidden;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#endif /* COSMOPOLITAN_LIBC_INTRIN__GETENV_INTERNAL_H_ */
diff --git a/libc/intrin/bt.c b/libc/intrin/bt.c
index 90cb5f239..a1f0c22eb 100644
--- a/libc/intrin/bt.c
+++ b/libc/intrin/bt.c
@@ -17,10 +17,12 @@
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
 #include "libc/errno.h"
-#include "libc/intrin/intrin.h"
 #include "libc/intrin/kprintf.h"
 #include "libc/intrin/weaken.h"
 #include "libc/log/backtrace.internal.h"
+#include "libc/runtime/symbols.internal.h"
+
+static _Thread_local bool noreentry;
 
 /**
  * Shows backtrace if crash reporting facilities are linked.
@@ -28,12 +30,20 @@
 void _bt(const char *fmt, ...) {
   int e;
   va_list va;
+
+  if (!noreentry) {
+    noreentry = true;
+  } else {
+    return;
+  }
+
   if (fmt) {
     va_start(va, fmt);
     kvprintf(fmt, va);
     va_end(va);
   }
-  if (_weaken(ShowBacktrace)) {
+
+  if (_weaken(ShowBacktrace) && _weaken(GetSymbolTable)) {
     e = errno;
     _weaken(ShowBacktrace)(2, __builtin_frame_address(0));
     errno = e;
@@ -41,5 +51,18 @@ void _bt(const char *fmt, ...) {
     kprintf("_bt() can't show backtrace because you need:\n"
             "\tSTATIC_YOINK(\"ShowBacktrace\");\n"
             "to be linked.\n");
+    if (_weaken(PrintBacktraceUsingSymbols) && _weaken(GetSymbolTable)) {
+      e = errno;
+      _weaken(PrintBacktraceUsingSymbols)(2, __builtin_frame_address(0),
+                                          _weaken(GetSymbolTable)());
+      errno = e;
+    } else {
+      kprintf("_bt() can't show backtrace because you need:\n"
+              "\tSTATIC_YOINK(\"PrintBacktraceUsingSymbols\");\n"
+              "\tSTATIC_YOINK(\"GetSymbolTable\");\n"
+              "to be linked.\n");
+    }
   }
+
+  noreentry = false;
 }
diff --git a/libc/runtime/clearenv.c b/libc/intrin/clearenv.c
similarity index 96%
rename from libc/runtime/clearenv.c
rename to libc/intrin/clearenv.c
index 59eedfbc5..fe15c9fd4 100644
--- a/libc/runtime/clearenv.c
+++ b/libc/intrin/clearenv.c
@@ -21,9 +21,11 @@
 
 /**
  * Removes all environment variables.
+ *
+ * @return 0 on success, or nonzero on error
  */
 int clearenv(void) {
+  environ = 0;
   STRACE("clearenv() → 0");
-  environ = NULL;
   return 0;
 }
diff --git a/libc/intrin/describeflock.c b/libc/intrin/describeflock.c
index 80364479a..950a68b0b 100644
--- a/libc/intrin/describeflock.c
+++ b/libc/intrin/describeflock.c
@@ -56,7 +56,7 @@ const char *(DescribeFlock)(char buf[N], int cmd, const struct flock *l) {
     append(", .l_pid=%d", l->l_pid);
   }
 
-  if (l->l_sysid) {
+  if (IsFreebsd() && l->l_sysid) {
     append(", .l_sysid=%d", l->l_sysid);
   }
 
diff --git a/libc/intrin/describesigaction.c b/libc/intrin/describesigaction.c
index 06d316e9a..d5ca35f19 100644
--- a/libc/intrin/describesigaction.c
+++ b/libc/intrin/describesigaction.c
@@ -16,23 +16,68 @@
 │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/calls/calls.h"
 #include "libc/calls/struct/sigaction.h"
+#include "libc/calls/struct/sigset.h"
 #include "libc/calls/struct/sigset.internal.h"
 #include "libc/dce.h"
 #include "libc/intrin/asan.internal.h"
 #include "libc/intrin/describeflags.internal.h"
 #include "libc/intrin/kprintf.h"
+#include "libc/mem/alloca.h"
+#include "libc/sysv/consts/sa.h"
 
-const char *(DescribeSigaction)(char buf[256], int rc,
+static const char *DescribeSigHandler(char buf[64], void f(int)) {
+  if (f == SIG_ERR) return "SIG_ERR";
+  if (f == SIG_DFL) return "SIG_DFL";
+  if (f == SIG_IGN) return "SIG_IGN";
+  ksnprintf(buf, 64, "%t", f);
+  return buf;
+}
+
+static const char *DescribeSigFlags(char buf[64], int x) {
+  const struct DescribeFlags kSigFlags[] = {
+      {SA_NOCLDSTOP, "NOCLDSTOP"},  //
+      {SA_NOCLDWAIT, "NOCLDWAIT"},  //
+      {SA_SIGINFO, "SIGINFO"},      //
+      {SA_ONSTACK, "ONSTACK"},      //
+      {SA_RESTART, "RESTART"},      //
+      {SA_NODEFER, "NODEFER"},      //
+      {SA_RESETHAND, "RESETHAND"},  //
+      {SA_NOMASK, "NOMASK"},        //
+      {SA_ONESHOT, "ONESHOT"},      //
+  };
+  return DescribeFlags(buf, 64, kSigFlags, ARRAYLEN(kSigFlags), "SA_", x);
+}
+
+#define N 256
+
+#define append(...) o += ksnprintf(buf + o, N - o, __VA_ARGS__)
+
+const char *(DescribeSigaction)(char buf[N], int rc,
                                 const struct sigaction *sa) {
+  int o = 0;
+  char b64[64];
+
   if (rc == -1) return "n/a";
   if (!sa) return "NULL";
   if ((!IsAsan() && kisdangerous(sa)) ||
       (IsAsan() && !__asan_is_valid(sa, sizeof(*sa)))) {
-    ksnprintf(buf, 256, "%p", sa);
-  } else {
-    ksnprintf(buf, 256, "{.sa_handler=%t, .sa_flags=%#lx, .sa_mask=%s}",
-              sa->sa_handler, sa->sa_flags, DescribeSigset(rc, &sa->sa_mask));
+    ksnprintf(buf, N, "%p", sa);
+    return buf;
   }
+
+  append("{.sa_handler=%s", DescribeSigHandler(b64, sa->sa_handler));
+
+  if (sa->sa_flags) {
+    append(", .sa_flags=%s", DescribeSigFlags(b64, sa->sa_flags));
+  }
+
+  if (!sigisemptyset(&sa->sa_mask)) {
+    append(", .sa_mask=%s", DescribeSigset(rc, &sa->sa_mask));
+  }
+
+  append("}");
+
   return buf;
 }
diff --git a/libc/intrin/describesigset.c b/libc/intrin/describesigset.c
index 35a0041fd..87e0ea04f 100644
--- a/libc/intrin/describesigset.c
+++ b/libc/intrin/describesigset.c
@@ -23,6 +23,7 @@
 #include "libc/intrin/kprintf.h"
 #include "libc/intrin/popcnt.h"
 #include "libc/str/str.h"
+#include "libc/sysv/consts/limits.h"
 #include "libc/sysv/consts/sig.h"
 
 #define N 128
@@ -31,6 +32,7 @@
 
 const char *(DescribeSigset)(char buf[N], int rc, const sigset_t *ss) {
   bool gotsome;
+  const char *s;
   int sig, o = 0;
   sigset_t sigset;
 
@@ -45,9 +47,9 @@ const char *(DescribeSigset)(char buf[N], int rc, const sigset_t *ss) {
   if (sigcountset(ss) > 16) {
     append("~");
     sigemptyset(&sigset);
-    for (sig = 1; sig <= NSIG; ++sig) {
+    for (sig = 1; sig <= _NSIG; ++sig) {
       if (!sigismember(ss, sig)) {
-        sigaddset(&sigset, sig);
+        sigset.__bits[(sig - 1) >> 6] |= 1ull << ((sig - 1) & 63);
       }
     }
   } else {
@@ -56,14 +58,18 @@ const char *(DescribeSigset)(char buf[N], int rc, const sigset_t *ss) {
 
   append("{");
   gotsome = false;
-  for (sig = 1; sig <= NSIG; ++sig) {
+  for (sig = 1; sig <= _NSIG; ++sig) {
     if (sigismember(&sigset, sig) > 0) {
       if (gotsome) {
         append(",");
       } else {
         gotsome = true;
       }
-      append("%s", strsignal(sig) + 3);
+      s = strsignal(sig);
+      if (s[0] == 'S' && s[1] == 'I' && s[2] == 'G') {
+        s += 3;
+      }
+      append("%s", s);
     }
   }
   append("}");
diff --git a/libc/intrin/extend.c b/libc/intrin/extend.c
index 392446e1c..50840c28e 100644
--- a/libc/intrin/extend.c
+++ b/libc/intrin/extend.c
@@ -19,6 +19,7 @@
 #include "libc/assert.h"
 #include "libc/calls/calls.h"
 #include "libc/dce.h"
+#include "libc/errno.h"
 #include "libc/intrin/asan.internal.h"
 #include "libc/intrin/asancodes.h"
 #include "libc/macros.internal.h"
@@ -29,17 +30,26 @@
 
 #define G FRAMESIZE
 
-static void _mapframe(void *p, int f) {
-  int prot, flags;
+static void *_mapframe(void *p, int f) {
+  int rc, prot, flags;
   struct DirectMap dm;
   prot = PROT_READ | PROT_WRITE;
   flags = f | MAP_ANONYMOUS | MAP_FIXED;
-  _npassert((dm = sys_mmap(p, G, prot, flags, -1, 0)).addr == p);
-  __mmi_lock();
-  _npassert(!TrackMemoryInterval(&_mmi, (uintptr_t)p >> 16, (uintptr_t)p >> 16,
-                                 dm.maphandle, prot, flags, false, false, 0,
-                                 G));
-  __mmi_unlock();
+  if ((dm = sys_mmap(p, G, prot, flags, -1, 0)).addr == p) {
+    __mmi_lock();
+    rc = TrackMemoryInterval(&_mmi, (uintptr_t)p >> 16, (uintptr_t)p >> 16,
+                             dm.maphandle, prot, flags, false, false, 0, G);
+    __mmi_unlock();
+    if (!rc) {
+      return p;
+    } else {
+      _unassert(errno == ENOMEM);
+      return 0;
+    }
+  } else {
+    _unassert(errno == ENOMEM);
+    return 0;
+  }
 }
 
 /**
@@ -58,7 +68,8 @@ static void _mapframe(void *p, int f) {
  * @param e points to end of memory that's allocated
  * @param h is highest address to which `e` may grow
  * @param f should be `MAP_PRIVATE` or `MAP_SHARED`
- * @return new value for `e`
+ * @return new value for `e` or null w/ errno
+ * @raise ENOMEM if we require more vespene gas
  */
 noasan void *_extend(void *p, size_t n, void *e, int f, intptr_t h) {
   char *q;
@@ -67,10 +78,10 @@ noasan void *_extend(void *p, size_t n, void *e, int f, intptr_t h) {
   for (q = e; q < ((char *)p + n); q += 8) {
     if (!((uintptr_t)q & (G - 1))) {
       _unassert(q + G <= (char *)h);
-      _mapframe(q, f);
+      if (!_mapframe(q, f)) return 0;
       if (IsAsan()) {
         if (!((uintptr_t)SHADOW(q) & (G - 1))) {
-          _mapframe(SHADOW(q), f);
+          if (!_mapframe(SHADOW(q), f)) return 0;
           __asan_poison(q, G << kAsanScale, kAsanProtected);
         }
       }
diff --git a/test/libc/mem/putenv_test.c b/libc/intrin/getenv.c
similarity index 72%
rename from test/libc/mem/putenv_test.c
rename to libc/intrin/getenv.c
index d3253ed3e..c5b856e2f 100644
--- a/test/libc/mem/putenv_test.c
+++ b/libc/intrin/getenv.c
@@ -1,7 +1,7 @@
 /*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
 │vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
 ╞══════════════════════════════════════════════════════════════════════════════╡
-│ Copyright 2022 Gavin Arthur Hayes                                            │
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
 │                                                                              │
 │ Permission to use, copy, modify, and/or distribute this software for         │
 │ any purpose with or without fee is hereby granted, provided that the         │
@@ -16,18 +16,28 @@
 │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
-#include "libc/mem/mem.h"
+#include "libc/intrin/_getenv.internal.h"
+#include "libc/intrin/strace.internal.h"
 #include "libc/runtime/runtime.h"
-#include "libc/testlib/testlib.h"
 
-TEST(putenv, test) {
-  EXPECT_EQ(0, clearenv());
-  EXPECT_EQ(0, putenv("hi=there"));
-  EXPECT_STREQ("there", getenv("hi"));
-  EXPECT_EQ(0, clearenv());
-  EXPECT_EQ(0, putenv("hi=theretwo"));
-  EXPECT_STREQ("theretwo", getenv("hi"));
-  EXPECT_EQ(0, clearenv());
-  EXPECT_EQ(0, setenv("hi", "therethree", 0));
-  EXPECT_STREQ("therethree", getenv("hi"));
+/**
+ * Returns value of environment variable, or NULL if not found.
+ *
+ * Environment variables can store empty string on Unix but not Windows.
+ *
+ * @return pointer to value of `environ` entry, or null if not found
+ */
+char *getenv(const char *s) {
+  char **p;
+  struct Env e;
+  if (!s) return 0;
+  if (!(p = environ)) return 0;
+  e = _getenv(p, s);
+#if SYSDEBUG
+  if (!(s[0] == 'T' && s[1] == 'Z' && !s[2])) {
+    // TODO(jart): memoize TZ or something
+    STRACE("getenv(%#s) → %#s", s, e.s);
+  }
+#endif
+  return e.s;
 }
diff --git a/libc/intrin/intrin.mk b/libc/intrin/intrin.mk
index ddc5615e2..9cd87f500 100644
--- a/libc/intrin/intrin.mk
+++ b/libc/intrin/intrin.mk
@@ -7,6 +7,7 @@ LIBC_INTRIN_ARTIFACTS += LIBC_INTRIN_A
 LIBC_INTRIN = $(LIBC_INTRIN_A_DEPS) $(LIBC_INTRIN_A)
 LIBC_INTRIN_A = o/$(MODE)/libc/intrin/intrin.a
 LIBC_INTRIN_A_HDRS = $(filter %.h,$(LIBC_INTRIN_A_FILES))
+LIBC_INTRIN_A_INCS = $(filter %.inc,$(LIBC_INTRIN_A_FILES))
 LIBC_INTRIN_A_SRCS_S = $(filter %.S,$(LIBC_INTRIN_A_FILES))
 LIBC_INTRIN_A_SRCS_C = $(filter %.c,$(LIBC_INTRIN_A_FILES))
 LIBC_INTRIN_A_SRCS = $(LIBC_INTRIN_A_SRCS_S) $(LIBC_INTRIN_A_SRCS_C)
@@ -121,7 +122,6 @@ o/$(MODE)/libc/intrin/describeprotflags.o: private	\
 			-fno-sanitize=address
 
 o/$(MODE)/libc/intrin/exit1.greg.o			\
-o/$(MODE)/libc/intrin/getenv.greg.o			\
 o/$(MODE)/libc/intrin/wsarecv.o				\
 o/$(MODE)/libc/intrin/wsarecvfrom.o			\
 o/$(MODE)/libc/intrin/createfile.o			\
@@ -182,6 +182,7 @@ o/$(MODE)/libc/intrin/memmove.o: private		\
 
 LIBC_INTRIN_LIBS = $(foreach x,$(LIBC_INTRIN_ARTIFACTS),$($(x)))
 LIBC_INTRIN_HDRS = $(foreach x,$(LIBC_INTRIN_ARTIFACTS),$($(x)_HDRS))
+LIBC_INTRIN_INCS = $(foreach x,$(LIBC_INTRIN_ARTIFACTS),$($(x)_INCS))
 LIBC_INTRIN_SRCS = $(foreach x,$(LIBC_INTRIN_ARTIFACTS),$($(x)_SRCS))
 LIBC_INTRIN_CHECKS = $(foreach x,$(LIBC_INTRIN_ARTIFACTS),$($(x)_CHECKS))
 LIBC_INTRIN_OBJS = $(foreach x,$(LIBC_INTRIN_ARTIFACTS),$($(x)_OBJS))
diff --git a/libc/intrin/kmalloc.c b/libc/intrin/kmalloc.c
index 0e9190f9d..2f2872dea 100644
--- a/libc/intrin/kmalloc.c
+++ b/libc/intrin/kmalloc.c
@@ -29,7 +29,7 @@
 #include "libc/thread/thread.h"
 #include "libc/thread/tls.h"
 
-#define KMALLOC_ALIGN __BIGGEST_ALIGNMENT__
+#define KMALLOC_ALIGN sizeof(intptr_t)
 
 static struct {
   char *endptr;
@@ -55,21 +55,37 @@ __attribute__((__constructor__)) static void kmalloc_init(void) {
  * The code malloc() depends upon uses this function to allocate memory.
  * The returned memory can't be freed, and leak detection is impossible.
  * This function panics when memory isn't available.
+ *
+ * Memory returned by this function is aligned on the word size, and as
+ * such, kmalloc() shouldn't be used for vector operations.
+ *
+ * @return zero-initialized memory on success, or null w/ errno
+ * @raise ENOMEM if we require more vespene gas
  */
 void *kmalloc(size_t size) {
-  char *start;
-  size_t i, n;
+  char *p, *e;
+  size_t i, n, t;
   n = ROUNDUP(size + (IsAsan() * 8), KMALLOC_ALIGN);
   kmalloc_lock();
-  i = g_kmalloc.total;
-  g_kmalloc.total += n;
-  start = (char *)kMemtrackKmallocStart;
-  if (!g_kmalloc.endptr) g_kmalloc.endptr = start;
-  g_kmalloc.endptr =
-      _extend(start, g_kmalloc.total, g_kmalloc.endptr, MAP_PRIVATE,
-              kMemtrackKmallocStart + kMemtrackKmallocSize);
+  t = g_kmalloc.total;
+  e = g_kmalloc.endptr;
+  i = t;
+  t += n;
+  p = (char *)kMemtrackKmallocStart;
+  if (!e) e = p;
+  if ((e = _extend(p, t, e, MAP_PRIVATE,
+                   kMemtrackKmallocStart + kMemtrackKmallocSize))) {
+    g_kmalloc.endptr = e;
+    g_kmalloc.total = t;
+  } else {
+    p = 0;
+  }
   kmalloc_unlock();
-  _unassert(!((intptr_t)(start + i) & (KMALLOC_ALIGN - 1)));
-  if (IsAsan()) __asan_poison(start + i + size, n - size, kAsanHeapOverrun);
-  return start + i;
+  if (p) {
+    _unassert(!((intptr_t)(p + i) & (KMALLOC_ALIGN - 1)));
+    if (IsAsan()) __asan_poison(p + i + size, n - size, kAsanHeapOverrun);
+    return p + i;
+  } else {
+    return 0;
+  }
 }
diff --git a/libc/intrin/kmalloc.h b/libc/intrin/kmalloc.h
index b26bba057..a2a01a330 100644
--- a/libc/intrin/kmalloc.h
+++ b/libc/intrin/kmalloc.h
@@ -3,7 +3,7 @@
 #if !(__ASSEMBLER__ + __LINKER__ + 0)
 COSMOPOLITAN_C_START_
 
-void *kmalloc(size_t) attributeallocsize((1)) mallocesque returnsnonnull;
+void *kmalloc(size_t) mallocesque attributeallocsize((1)) returnsaligned((8));
 
 COSMOPOLITAN_C_END_
 #endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
diff --git a/libc/mem/putenv.c b/libc/intrin/putenv.c
similarity index 60%
rename from libc/mem/putenv.c
rename to libc/intrin/putenv.c
index 561adae93..364536347 100644
--- a/libc/mem/putenv.c
+++ b/libc/intrin/putenv.c
@@ -16,19 +16,16 @@
 │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/intrin/_getenv.internal.h"
+#include "libc/intrin/kmalloc.h"
 #include "libc/intrin/strace.internal.h"
-#include "libc/dce.h"
 #include "libc/macros.internal.h"
-#include "libc/mem/alg.h"
 #include "libc/mem/internal.h"
-#include "libc/mem/mem.h"
 #include "libc/runtime/runtime.h"
-#include "libc/str/str.h"
-#include "libc/sysv/errfuns.h"
 
 #define ToUpper(c) ((c) >= 'a' && (c) <= 'z' ? (c) - 'a' + 'A' : (c))
 
-static bool once;
+static char **expected;
 static size_t capacity;
 
 static size_t GetEnvironLen(char **env) {
@@ -37,98 +34,69 @@ static size_t GetEnvironLen(char **env) {
   return p - env;
 }
 
-static void RestoreOriginalEnvironment(char **envp) {
-  environ = envp;
-}
-
-static void PutEnvImplAtExit(void *p) {
-  free(p);
-}
-
-static void FreeEnviron(char **env) {
-  char **a;
-  for (a = env; *a; ++a) {
-    free(*a);
-  }
-  free(env);
-}
-
-static void GrowEnviron(void) {
+static char **GrowEnviron(char **a) {
   size_t n, c;
-  char **a, **b, **p;
-  a = environ;
+  char **b, **p;
+  if (!a) a = environ;
   n = a ? GetEnvironLen(a) : 0;
   c = MAX(16ul, n) << 1;
-  b = calloc(c, sizeof(char *));
-  if (a) {
-    for (p = b; *a;) {
-      *p++ = strdup(*a++);
+  if ((b = kmalloc(c * sizeof(char *)))) {
+    if (a) {
+      for (p = b; *a;) {
+        *p++ = *a++;
+      }
     }
+    environ = b;
+    expected = b;
+    capacity = c;
+    return b;
+  } else {
+    return 0;
   }
-  __cxa_atexit(FreeEnviron, b, 0);
-  environ = b;
-  capacity = c;
 }
 
 int PutEnvImpl(char *s, bool overwrite) {
-  char *p;
-  unsigned i, namelen;
-  if (!once) {
-    __cxa_atexit(RestoreOriginalEnvironment, environ, 0);
-    GrowEnviron();
-    once = true;
-  } else if (!environ) {
-    GrowEnviron();
-  }
-  for (p = s; *p && *p != '='; ++p) {
-    if (IsWindows()) {
-      *p = ToUpper(*p);
+  char **p;
+  struct Env e;
+  if (!(p = environ)) {
+    if (!(p = GrowEnviron(0))) {
+      return -1;
     }
   }
-  if (*p != '=') goto Fail;
-  namelen = p + 1 - s;
-  for (i = 0; environ[i]; ++i) {
-    if (!strncmp(environ[i], s, namelen)) {
-      if (!overwrite) {
-        free(s);
-        return 0;
-      }
-      goto Replace;
+  e = _getenv(p, s);
+  if (e.s && !overwrite) {
+    return 0;
+  }
+  if (e.s) {
+    p[e.i] = s;
+    return 0;
+  }
+  if (p != expected) {
+    capacity = e.i;
+  }
+  if (e.i + 1 >= capacity) {
+    if (!(p = GrowEnviron(p))) {
+      return -1;
     }
   }
-  if (i + 1 >= capacity) {
-    GrowEnviron();
-  }
-  environ[i + 1] = 0;
-Replace:
-  __cxa_atexit(PutEnvImplAtExit, environ[i], 0);
-  environ[i] = s;
+  p[e.i + 1] = 0;
+  p[e.i] = s;
   return 0;
-Fail:
-  free(s);
-  return einval();
-}
-
-static void UnsetenvFree(void *p) {
-  free(p);
-}
-
-/* weakly called by unsetenv() when removing a pointer */
-void __freeenv(void *p) {
-  if (once) {
-    __cxa_atexit(UnsetenvFree, p, 0);
-  }
 }
 
 /**
  * Emplaces environment key=value.
  *
- * @return 0 on success or non-zero on error
+ * @param s should be a string that looks like `"name=value"` and it'll
+ *     become part of the environment; changes to its memory will change
+ *     the environment too
+ * @return 0 on success, or non-zero w/ errno on error
+ * @raise ENOMEM if we require more vespene gas
  * @see setenv(), getenv()
  */
 int putenv(char *s) {
   int rc;
-  rc = PutEnvImpl(strdup(s), true);
-  STRACE("putenv(%#s) → %d", s, rc);
+  rc = PutEnvImpl(s, true);
+  STRACE("putenv(%#s) → %d% m", s, rc);
   return rc;
 }
diff --git a/libc/mem/setenv.c b/libc/intrin/setenv.c
similarity index 85%
rename from libc/mem/setenv.c
rename to libc/intrin/setenv.c
index 21af18abb..7879d1bfb 100644
--- a/libc/mem/setenv.c
+++ b/libc/intrin/setenv.c
@@ -16,10 +16,9 @@
 │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
-#include "libc/intrin/safemacros.internal.h"
+#include "libc/intrin/kmalloc.h"
 #include "libc/intrin/strace.internal.h"
 #include "libc/mem/internal.h"
-#include "libc/mem/mem.h"
 #include "libc/runtime/runtime.h"
 #include "libc/str/str.h"
 #include "libc/sysv/errfuns.h"
@@ -27,7 +26,7 @@
 /**
  * Copies variable to environment.
  *
- * @return 0 on success, or -1 w/ errno
+ * @return 0 on success, or -1 w/ errno and environment is unchanged
  * @raise EINVAL if `name` is empty or contains `'='`
  * @raise ENOMEM if we require more vespene gas
  * @see putenv(), getenv()
@@ -35,12 +34,16 @@
 int setenv(const char *name, const char *value, int overwrite) {
   int rc;
   char *s;
-  size_t namelen, valuelen;
-  if (isempty(name) || strchr(name, '=')) return einval();
-  namelen = strlen(name);
-  valuelen = strlen(value);
-  if (!(s = malloc(namelen + valuelen + 2))) return -1;
-  memcpy(mempcpy(mempcpy(s, name, namelen), "=", 1), value, valuelen + 1);
+  size_t n, m;
+  const char *t;
+  if (!name || !*name || !value) return einval();
+  for (t = name; *t; ++t) {
+    if (*t == '=') return einval();
+  }
+  n = strlen(name);
+  m = strlen(value);
+  if (!(s = kmalloc(n + 1 + m + 1))) return -1;
+  memcpy(mempcpy(mempcpy(s, name, n), "=", 1), value, m + 1);
   rc = PutEnvImpl(s, overwrite);
   STRACE("setenv(%#s, %#s, %d) → %d% m", name, value, overwrite, rc);
   return rc;
diff --git a/libc/intrin/sigaddset.c b/libc/intrin/sigaddset.c
index a513ad536..b19ac04cf 100644
--- a/libc/intrin/sigaddset.c
+++ b/libc/intrin/sigaddset.c
@@ -17,6 +17,7 @@
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
 #include "libc/calls/struct/sigset.h"
+#include "libc/sysv/consts/limits.h"
 #include "libc/sysv/consts/sig.h"
 #include "libc/sysv/errfuns.h"
 
@@ -28,10 +29,16 @@
  * @asyncsignalsafe
  */
 int sigaddset(sigset_t *set, int sig) {
+  _Static_assert(NSIG == sizeof(set->__bits) * CHAR_BIT, "");
   _Static_assert(sizeof(set->__bits[0]) * CHAR_BIT == 64, "");
   if (1 <= sig && sig <= NSIG) {
-    if (!sigisprecious(sig)) {
-      set->__bits[(sig - 1) >> 6] |= 1ull << ((sig - 1) & 63);
+    if (1 <= sig && sig <= _NSIG) {
+      if (
+#define M(x) sig != x &&
+#include "libc/intrin/sigisprecious.inc"
+          1) {
+        set->__bits[(sig - 1) >> 6] |= 1ull << ((sig - 1) & 63);
+      }
     }
     return 0;
   } else {
diff --git a/libc/intrin/sigcountset.c b/libc/intrin/sigcountset.c
index 46d3e932c..c1eabf01c 100644
--- a/libc/intrin/sigcountset.c
+++ b/libc/intrin/sigcountset.c
@@ -19,6 +19,7 @@
 #include "libc/calls/struct/sigset.h"
 #include "libc/intrin/popcnt.h"
 #include "libc/macros.internal.h"
+#include "libc/sysv/consts/limits.h"
 
 /**
  * Returns population count of signal set.
@@ -27,9 +28,22 @@
  * @asyncsignalsafe
  */
 int sigcountset(const sigset_t *set) {
-  int r, i;
-  for (r = i = 0; i < ARRAYLEN(set->__bits); ++i) {
-    r += popcnt(set->__bits[i]);
+  int r, i, x, y;
+  switch (_NSIG) {
+    case 32:
+      x = (uint32_t)set->__bits[0];
+      y = 0;
+      break;
+    case 64:
+      x = set->__bits[0];
+      y = 0;
+      break;
+    case 128:
+      x = set->__bits[0];
+      y = set->__bits[1];
+      break;
+    default:
+      notpossible;
   }
-  return r;
+  return popcnt(x) + popcnt(y);
 }
diff --git a/libc/intrin/sigdelset.c b/libc/intrin/sigdelset.c
index 1ab470193..1ddfc5bd6 100644
--- a/libc/intrin/sigdelset.c
+++ b/libc/intrin/sigdelset.c
@@ -27,6 +27,7 @@
  * @asyncsignalsafe
  */
 int sigdelset(sigset_t *set, int sig) {
+  _Static_assert(NSIG == sizeof(set->__bits) * CHAR_BIT, "");
   _Static_assert(sizeof(set->__bits[0]) * CHAR_BIT == 64, "");
   if (1 <= sig && sig <= NSIG) {
     set->__bits[(sig - 1) >> 6] &= ~(1ull << ((sig - 1) & 63));
diff --git a/libc/intrin/sigfillset.c b/libc/intrin/sigfillset.c
index 596c6fb19..b2d61f804 100644
--- a/libc/intrin/sigfillset.c
+++ b/libc/intrin/sigfillset.c
@@ -18,6 +18,7 @@
 ╚─────────────────────────────────────────────────────────────────────────────*/
 #include "libc/calls/struct/sigset.h"
 #include "libc/str/str.h"
+#include "libc/sysv/consts/limits.h"
 #include "libc/sysv/consts/sig.h"
 
 /**
@@ -29,7 +30,17 @@
  */
 int sigfillset(sigset_t *set) {
   memset(set->__bits, -1, sizeof(set->__bits));
-  sigdelset(set, SIGKILL);
-  sigdelset(set, SIGSTOP);
+#define M(x) set->__bits[(x - 1) >> 6] &= ~(1ull << ((x - 1) & 63));
+#include "libc/intrin/sigisprecious.inc"
+  switch (_NSIG) {
+    case 32:
+      set->__bits[0] &= 0xffffffff;
+      break;
+    case 64:
+      set->__bits[1] = 0;
+      break;
+    default:
+      break;
+  }
   return 0;
 }
diff --git a/libc/intrin/sigismember.c b/libc/intrin/sigismember.c
index 279abedbb..ed62cf767 100644
--- a/libc/intrin/sigismember.c
+++ b/libc/intrin/sigismember.c
@@ -17,6 +17,7 @@
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
 #include "libc/calls/struct/sigset.h"
+#include "libc/sysv/consts/limits.h"
 #include "libc/sysv/errfuns.h"
 
 /**
@@ -30,7 +31,11 @@
 int sigismember(const sigset_t *set, int sig) {
   _Static_assert(sizeof(set->__bits[0]) * CHAR_BIT == 64, "");
   if (1 <= sig && sig <= NSIG) {
-    return !!(set->__bits[(sig - 1) >> 6] & (1ull << ((sig - 1) & 63)));
+    if (1 <= sig && sig <= _NSIG) {
+      return !!(set->__bits[(sig - 1) >> 6] & (1ull << ((sig - 1) & 63)));
+    } else {
+      return 0;
+    }
   } else {
     return einval();
   }
diff --git a/libc/intrin/sigisprecious.c b/libc/intrin/sigisprecious.c
index 37bfcb434..1d3bf80c1 100644
--- a/libc/intrin/sigisprecious.c
+++ b/libc/intrin/sigisprecious.c
@@ -23,6 +23,8 @@
  * Returns true if you're not authorized to block this signal.
  */
 int sigisprecious(int sig) {
-  return sig == SIGKILL ||  //
-         sig == SIGSTOP;
+  return 0
+#define M(x) || sig == x
+#include "libc/intrin/sigisprecious.inc"
+      ;
 }
diff --git a/libc/intrin/sigisprecious.inc b/libc/intrin/sigisprecious.inc
new file mode 100644
index 000000000..5c08fd00b
--- /dev/null
+++ b/libc/intrin/sigisprecious.inc
@@ -0,0 +1,3 @@
+M(SIGKILL)
+M(SIGABRT)
+M(SIGSTOP)
diff --git a/libc/intrin/strsignal_r.c b/libc/intrin/strsignal_r.c
index 35d27280c..b030f9b80 100644
--- a/libc/intrin/strsignal_r.c
+++ b/libc/intrin/strsignal_r.c
@@ -33,6 +33,7 @@
  * @param buf may be used to store output having at least 15 bytes
  * @return pointer to .rodata string, or to `buf` after mutating
  * @see sigaction()
+ * @asyncsignalsafe
  * @threadsafe
  */
 char *strsignal_r(int sig, char buf[hasatleast 15]) {
diff --git a/libc/calls/unsetenv.c b/libc/intrin/unsetenv.c
similarity index 75%
rename from libc/calls/unsetenv.c
rename to libc/intrin/unsetenv.c
index b70bb87a5..440bbc560 100644
--- a/libc/calls/unsetenv.c
+++ b/libc/intrin/unsetenv.c
@@ -17,39 +17,29 @@
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
 #include "libc/dce.h"
-#include "libc/intrin/weaken.h"
-#include "libc/mem/internal.h"
+#include "libc/intrin/_getenv.internal.h"
 #include "libc/runtime/runtime.h"
-
-#define ToUpper(c) \
-  (IsWindows() && (c) >= 'a' && (c) <= 'z' ? (c) - 'a' + 'A' : (c))
+#include "libc/sysv/errfuns.h"
 
 /**
  * Removes environment variable.
+ *
+ * @param s is non-empty environment key which can't contain `'='`
+ * @return 0 on success, or -1 w/ errno and environment is unchanged
+ * @raise EINVAL if `s` is an empty string or has a `'='` character
  */
 int unsetenv(const char *s) {
-  char **p;
-  size_t i, j, k;
-  if (s && (p = environ)) {
-    for (i = 0; p[i]; ++i) {
-      for (j = 0;; ++j) {
-        if (!s[j]) {
-          if (p[i][j] == '=') {
-            if (_weaken(__freeenv)) {
-              _weaken(__freeenv)(p[i]);
-            }
-            k = i + 1;
-            do {
-              p[k - 1] = p[k];
-            } while (p[k++]);
-            return 0;
-          }
-          break;
-        }
-        if (ToUpper(s[j]) != ToUpper(p[i][j])) {
-          break;
-        }
-      }
+  char **p, *t;
+  struct Env e;
+  if (!s || !*s) return einval();
+  for (t = s; *t; ++t) {
+    if (*t == '=') return einval();
+  }
+  if ((p = environ)) {
+    e = _getenv(p, s);
+    while (p[e.i]) {
+      p[e.i] = p[e.i + 1];
+      ++e.i;
     }
   }
   return 0;
diff --git a/libc/log/backtrace2.c b/libc/log/backtrace2.c
index f64659e73..aee07c0f3 100644
--- a/libc/log/backtrace2.c
+++ b/libc/log/backtrace2.c
@@ -125,7 +125,7 @@ static int PrintBacktraceUsingAddr2line(int fd, const struct StackFrame *bp) {
   if (sys_pipe2(pipefds, O_CLOEXEC) == -1) {
     return -1;
   }
-  if ((pid = fork()) == -1) {
+  if ((pid = __sys_fork().ax) == -1) {
     sys_close(pipefds[0]);
     sys_close(pipefds[1]);
     return -1;
@@ -149,19 +149,12 @@ static int PrintBacktraceUsingAddr2line(int fd, const struct StackFrame *bp) {
     }
     p1 = buf;
     p3 = p1 + got;
-    /*
-     * remove racist output from gnu tooling, that can't be disabled
-     * otherwise, since it breaks other tools like emacs that aren't
-     * equipped to ignore it, and what's most problematic is that
-     * addr2line somehow manages to put the racism onto the one line
-     * in the backtrace we actually care about.
-     */
     for (got = p3 - buf, p1 = buf; got;) {
       if ((p2 = memmem(p1, got, " (discriminator ",
                        strlen(" (discriminator ") - 1)) &&
           (p3 = memchr(p2, '\n', got - (p2 - p1)))) {
         if (p3 > p2 && p3[-1] == '\r') --p3;
-        write(2, p1, p2 - p1);
+        sys_write(2, p1, p2 - p1);
         got -= p3 - p1;
         p1 += p3 - p1;
       } else {
@@ -183,11 +176,13 @@ static int PrintBacktraceUsingAddr2line(int fd, const struct StackFrame *bp) {
 }
 
 static int PrintBacktrace(int fd, const struct StackFrame *bp) {
+#if !defined(DWARFLESS)
   if (!IsTiny() && !__isworker) {
     if (PrintBacktraceUsingAddr2line(fd, bp) != -1) {
       return 0;
     }
   }
+#endif
   return PrintBacktraceUsingSymbols(fd, bp, GetSymbolTable());
 }
 
diff --git a/libc/log/backtrace3.c b/libc/log/backtrace3.c
index 1ff5522f5..b1193fb2d 100644
--- a/libc/log/backtrace3.c
+++ b/libc/log/backtrace3.c
@@ -83,7 +83,7 @@ noinstrument noasan int PrintBacktraceUsingSymbols(int fd,
     } else {
       addend = 0;
     }
-    kprintf("%012lx %012lx %s%+d\n", frame, addr, __get_symbol_name(st, symbol),
+    kprintf("%012lx %lx %s%+d\n", frame, addr, __get_symbol_name(st, symbol),
             addend);
   }
   return 0;
diff --git a/libc/log/log.mk b/libc/log/log.mk
index 438a19291..e765c25a9 100644
--- a/libc/log/log.mk
+++ b/libc/log/log.mk
@@ -42,6 +42,7 @@ LIBC_LOG_A_DIRECTDEPS =					\
 	LIBC_SYSV_CALLS					\
 	LIBC_TIME					\
 	LIBC_TINYMATH					\
+	LIBC_ZIPOS					\
 	THIRD_PARTY_DLMALLOC				\
 	THIRD_PARTY_GDTOA
 
diff --git a/libc/log/showcrashreports.c b/libc/log/showcrashreports.c
index 1723dbb80..24dfa7201 100644
--- a/libc/log/showcrashreports.c
+++ b/libc/log/showcrashreports.c
@@ -32,6 +32,7 @@
 #include "libc/sysv/consts/sig.h"
 #include "libc/sysv/consts/ss.h"
 
+STATIC_YOINK("zipos");                       // for symtab
 STATIC_YOINK("__die");                       // for backtracing
 STATIC_YOINK("ShowBacktrace");               // for backtracing
 STATIC_YOINK("GetSymbolTable");              // for backtracing
diff --git a/libc/log/vflogf.c b/libc/log/vflogf.c
index f2763ae93..83ffa1717 100644
--- a/libc/log/vflogf.c
+++ b/libc/log/vflogf.c
@@ -18,7 +18,6 @@
 ╚─────────────────────────────────────────────────────────────────────────────*/
 #include "libc/calls/calls.h"
 #include "libc/calls/dprintf.h"
-#include "libc/intrin/strace.internal.h"
 #include "libc/calls/struct/stat.h"
 #include "libc/calls/struct/timeval.h"
 #include "libc/dce.h"
@@ -27,6 +26,7 @@
 #include "libc/fmt/fmt.h"
 #include "libc/intrin/bits.h"
 #include "libc/intrin/safemacros.internal.h"
+#include "libc/intrin/strace.internal.h"
 #include "libc/log/internal.h"
 #include "libc/log/log.h"
 #include "libc/math.h"
@@ -131,7 +131,9 @@ void(vflogf)(unsigned level, const char *file, int line, FILE *f,
     __start_fatal(file, line);
     strcpy(buf32, "unknown");
     gethostname(buf32, sizeof(buf32));
-    (dprintf)(STDERR_FILENO, "fatality %s pid %d\n", buf32, getpid());
+    (dprintf)(STDERR_FILENO,
+              "exiting due to aforementioned error (host %s pid %d tid %d)\n",
+              buf32, getpid(), gettid());
     __die();
     unreachable;
   }
diff --git a/libc/mem/internal.h b/libc/mem/internal.h
index d3517779d..250a60607 100644
--- a/libc/mem/internal.h
+++ b/libc/mem/internal.h
@@ -10,7 +10,6 @@ struct CritbitNode {
 };
 
 int PutEnvImpl(char *, bool) hidden;
-void __freeenv(void *) hidden;
 
 COSMOPOLITAN_C_END_
 #endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
diff --git a/libc/mem/sortedints.c b/libc/mem/sortedints.c
new file mode 100644
index 000000000..7301d1d15
--- /dev/null
+++ b/libc/mem/sortedints.c
@@ -0,0 +1,93 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2022 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/assert.h"
+#include "libc/dce.h"
+#include "libc/intrin/midpoint.h"
+#include "libc/mem/mem.h"
+#include "libc/mem/sortedints.internal.h"
+#include "libc/str/str.h"
+
+bool ContainsInt(const struct SortedInts *t, int k) {
+  int l, m, r;
+  l = 0;
+  r = t->n - 1;
+  while (l <= r) {
+    m = _midpoint(l, r);
+    if (t->p[m] < k) {
+      l = m + 1;
+    } else if (t->p[m] > k) {
+      r = m - 1;
+    } else {
+      return true;
+    }
+  }
+  return false;
+}
+
+int LeftmostInt(const struct SortedInts *t, int k) {
+  int l, m, r;
+  l = 0;
+  r = t->n;
+  while (l < r) {
+    m = _midpoint(l, r);
+    if (t->p[m] < k) {
+      l = m + 1;
+    } else {
+      r = m;
+    }
+  }
+  _unassert(l == 0 || k >= t->p[l - 1]);
+  _unassert(l == t->n || k <= t->p[l]);
+  return l;
+}
+
+int CountInt(const struct SortedInts *t, int k) {
+  int i, c;
+  for (c = 0, i = LeftmostInt(t, k); i < t->n; ++i) {
+    if (t->p[i] == k) {
+      ++c;
+    } else {
+      break;
+    }
+  }
+  return c;
+}
+
+bool InsertInt(struct SortedInts *t, int k, bool u) {
+  int l;
+  _unassert(t->n >= 0);
+  _unassert(t->n <= t->c);
+  if (t->n == t->c) {
+    ++t->c;
+    if (!IsModeDbg()) {
+      t->c += t->c >> 1;
+    }
+    t->p = realloc(t->p, t->c * sizeof(*t->p));
+  }
+  l = LeftmostInt(t, k);
+  if (l < t->n) {
+    if (u && t->p[l] == k) {
+      return false;
+    }
+    memmove(t->p + l + 1, t->p + l, (t->n - l) * sizeof(*t->p));
+  }
+  t->p[l] = k;
+  t->n++;
+  return true;
+}
diff --git a/libc/mem/sortedints.internal.h b/libc/mem/sortedints.internal.h
new file mode 100644
index 000000000..a5ce6f6a3
--- /dev/null
+++ b/libc/mem/sortedints.internal.h
@@ -0,0 +1,19 @@
+#ifndef COSMOPOLITAN_LIBC_MEM_SORTEDINTS_INTERNAL_H_
+#define COSMOPOLITAN_LIBC_MEM_SORTEDINTS_INTERNAL_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+struct SortedInts {
+  int n;
+  int c;
+  int *p;
+};
+
+bool ContainsInt(const struct SortedInts *, int);
+bool InsertInt(struct SortedInts *, int, bool);
+int CountInt(const struct SortedInts *, int);
+int LeftmostInt(const struct SortedInts *, int);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#endif /* COSMOPOLITAN_LIBC_MEM_SORTEDINTS_INTERNAL_H_ */
diff --git a/libc/nexgen32e/longjmp.S b/libc/nexgen32e/longjmp.S
index eb96b02fd..4e9de7751 100644
--- a/libc/nexgen32e/longjmp.S
+++ b/libc/nexgen32e/longjmp.S
@@ -23,9 +23,8 @@
 //	@param	rdi points to the jmp_buf
 //	@param	esi is returned by setjmp() invocation (coerced nonzero)
 //	@noreturn
-//	@assume	system five nexgen32e abi conformant
-//	@note	code built w/ microsoft abi compiler can't call this
-//	@see	_gclongjmp() unwinds _gc() destructors
+//	@see	_gclongjmp()
+//	@see	siglongjmp()
 longjmp:
 	mov	%esi,%eax
 	test	%eax,%eax
@@ -41,4 +40,3 @@ longjmp:
 	jmp	*56(%rdi)
 	.endfn	longjmp,globl
 	.alias	longjmp,_longjmp
-	.alias	longjmp,siglongjmp
diff --git a/libc/calls/cfgetospeed.c b/libc/nexgen32e/siglongjmp.S
similarity index 77%
rename from libc/calls/cfgetospeed.c
rename to libc/nexgen32e/siglongjmp.S
index f0e57fc16..b1b9e8dff 100644
--- a/libc/calls/cfgetospeed.c
+++ b/libc/nexgen32e/siglongjmp.S
@@ -1,7 +1,7 @@
-/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
-│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8     -*-│
+│vi: set et ft=asm ts=8 tw=8 fenc=utf-8                                     :vi│
 ╞══════════════════════════════════════════════════════════════════════════════╡
-│ Copyright 2021 Justine Alexandra Roberts Tunney                              │
+│ Copyright 2022 Justine Alexandra Roberts Tunney                              │
 │                                                                              │
 │ Permission to use, copy, modify, and/or distribute this software for         │
 │ any purpose with or without fee is hereby granted, provided that the         │
@@ -16,13 +16,14 @@
 │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
-#include "libc/calls/termios.h"
-#include "libc/sysv/consts/termios.h"
+#include "libc/macros.internal.h"
 
-uint32_t cfgetospeed(const struct termios *t) {
-  if (CBAUD) {
-    return t->c_cflag & CBAUD;
-  } else {
-    return t->c_ospeed;
-  }
-}
+//	Loads previously saved processor state.
+//
+//	@param	rdi points to the jmp_buf
+//	@param	esi is returned by setjmp() invocation (coerced nonzero)
+//	@noreturn
+//	@asyncsignalsafe
+siglongjmp:
+	jmp	longjmp
+	.endfn	siglongjmp,globl
diff --git a/libc/nt/comms.h b/libc/nt/comms.h
new file mode 100644
index 000000000..02b702f08
--- /dev/null
+++ b/libc/nt/comms.h
@@ -0,0 +1,36 @@
+#ifndef COSMOPOLITAN_LIBC_NT_COMMS_H_
+#define COSMOPOLITAN_LIBC_NT_COMMS_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+/*                            ░░░░
+                       ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
+                      ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
+                     ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓░
+                     ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   ▓▓▓▓▓▓▒        ▒▒▒▓▓█
+                    ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                   ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                   ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                  ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒
+                  ▒▒▒▒▓▓      ▓▒▒▓▓▓▓   ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                                   ▒▓  ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓
+                  ░░░░░░░░░░░▒▒▒▒      ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓     ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+               ░▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓░      ░▓███▓
+               ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░  ▒▓▓▓▒▒▒         ░▒▒▒▓   ████████████
+              ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓  ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░           ░███
+              ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓            ███
+             ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒            ▓██
+             ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓           ▓██
+            ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒           ███
+                            ░▒▓  ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓          ▓██
+╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗
+│ cosmopolitan § new technology » communications                           ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+bool32 PurgeComm(int64_t hFile, uint32_t dwFlags);
+bool32 TransmitCommChar(int64_t hFile, char cChar);
+bool32 ClearCommBreak(int64_t hFile);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#endif /* COSMOPOLITAN_LIBC_NT_COMMS_H_ */
diff --git a/libc/nt/kernel32/ClearCommBreak.s b/libc/nt/kernel32/ClearCommBreak.s
index e9dbac01f..af9012f5e 100644
--- a/libc/nt/kernel32/ClearCommBreak.s
+++ b/libc/nt/kernel32/ClearCommBreak.s
@@ -1,2 +1,15 @@
 .include "o/libc/nt/codegen.inc"
 .imp	kernel32,__imp_ClearCommBreak,ClearCommBreak,0
+
+	.text.windows
+ClearCommBreak:
+	push	%rbp
+	mov	%rsp,%rbp
+	.profilable
+	mov	%rdi,%rcx
+	sub	$32,%rsp
+	call	*__imp_ClearCommBreak(%rip)
+	leave
+	ret
+	.endfn	ClearCommBreak,globl
+	.previous
diff --git a/libc/nt/kernel32/PurgeComm.s b/libc/nt/kernel32/PurgeComm.s
index fa7496653..d1d3a441d 100644
--- a/libc/nt/kernel32/PurgeComm.s
+++ b/libc/nt/kernel32/PurgeComm.s
@@ -1,2 +1,12 @@
 .include "o/libc/nt/codegen.inc"
 .imp	kernel32,__imp_PurgeComm,PurgeComm,0
+
+	.text.windows
+PurgeComm:
+	push	%rbp
+	mov	%rsp,%rbp
+	.profilable
+	mov	__imp_PurgeComm(%rip),%rax
+	jmp	__sysv2nt
+	.endfn	PurgeComm,globl
+	.previous
diff --git a/libc/nt/kernel32/TransmitCommChar.s b/libc/nt/kernel32/TransmitCommChar.s
index 4c594a188..45756320d 100644
--- a/libc/nt/kernel32/TransmitCommChar.s
+++ b/libc/nt/kernel32/TransmitCommChar.s
@@ -1,2 +1,12 @@
 .include "o/libc/nt/codegen.inc"
 .imp	kernel32,__imp_TransmitCommChar,TransmitCommChar,0
+
+	.text.windows
+TransmitCommChar:
+	push	%rbp
+	mov	%rsp,%rbp
+	.profilable
+	mov	__imp_TransmitCommChar(%rip),%rax
+	jmp	__sysv2nt
+	.endfn	TransmitCommChar,globl
+	.previous
diff --git a/libc/nt/master.sh b/libc/nt/master.sh
index ac463d4b5..439ef2ae1 100755
--- a/libc/nt/master.sh
+++ b/libc/nt/master.sh
@@ -112,7 +112,7 @@ imp	'CheckNameLegalDOS8Dot3'				CheckNameLegalDOS8Dot3W					kernel32	128
 imp	'CheckRemoteDebuggerPresent'				CheckRemoteDebuggerPresent				kernel32	0	2
 imp	'CheckTokenCapability'					CheckTokenCapability					kernel32	0
 imp	'CheckTokenMembershipEx'				CheckTokenMembershipEx					kernel32	0
-imp	'ClearCommBreak'					ClearCommBreak						kernel32	0
+imp	'ClearCommBreak'					ClearCommBreak						kernel32	0	1
 imp	'ClearCommError'					ClearCommError						kernel32	0
 imp	'CloseConsoleHandle'					CloseConsoleHandle					kernel32	134
 imp	'ClosePackageInfo'					ClosePackageInfo					kernel32	0
@@ -764,7 +764,7 @@ imp	'PssWalkMarkerSetPosition'				PssWalkMarkerSetPosition				kernel32	0
 imp	'PssWalkMarkerTell'					PssWalkMarkerTell					kernel32	1080
 imp	'PssWalkSnapshot'					PssWalkSnapshot						kernel32	0
 imp	'PulseEvent'						PulseEvent						kernel32	0	1
-imp	'PurgeComm'						PurgeComm						kernel32	0
+imp	'PurgeComm'						PurgeComm						kernel32	0	2
 imp	'QueryActCtx'						QueryActCtxW						kernel32	0
 imp	'QueryActCtxSettings'					QueryActCtxSettingsW					kernel32	0
 imp	'QueryActCtxSettingsWWorker'				QueryActCtxSettingsWWorker				kernel32	1085
@@ -1011,7 +1011,7 @@ imp	'TlsGetValue'						TlsGetValue						kernel32	0	1
 imp	'TlsSetValue'						TlsSetValue						kernel32	0	2
 imp	'Toolhelp32ReadProcessMemory'				Toolhelp32ReadProcessMemory				kernel32	1449
 imp	'TransactNamedPipe'					TransactNamedPipe					kernel32	0	7
-imp	'TransmitCommChar'					TransmitCommChar					kernel32	0
+imp	'TransmitCommChar'					TransmitCommChar					kernel32	0	2
 imp	'TryAcquireSRWLockExclusive'				TryAcquireSRWLockExclusive				kernel32	0	1
 imp	'TryAcquireSRWLockShared'				TryAcquireSRWLockShared					kernel32	0	1
 imp	'TryEnterCriticalSection'				TryEnterCriticalSection					kernel32	0	1
diff --git a/libc/runtime/cocmd.c b/libc/runtime/cocmd.c
index 6c63a53af..3100fff88 100644
--- a/libc/runtime/cocmd.c
+++ b/libc/runtime/cocmd.c
@@ -25,6 +25,7 @@
 #include "libc/fmt/conv.h"
 #include "libc/fmt/itoa.h"
 #include "libc/fmt/magnumstrs.internal.h"
+#include "libc/intrin/_getenv.internal.h"
 #include "libc/intrin/bits.h"
 #include "libc/intrin/weaken.h"
 #include "libc/macros.internal.h"
@@ -55,11 +56,6 @@
 #define TOMBSTONE ((char *)-1)
 #define READ24(s) READ32LE(s "\0")
 
-struct Env {
-  char *s;
-  int i;
-};
-
 static char *p;
 static char *q;
 static char *r;
@@ -71,7 +67,7 @@ static char *assign;
 static char var[32];
 static int lastchild;
 static int exitstatus;
-static char *envs[3000];
+static char *envs[500];
 static char *args[3000];
 static const char *prog;
 static char errbuf[512];
@@ -148,27 +144,9 @@ static int GetSignalByName(const char *s) {
   return 0;
 }
 
-static struct Env GetEnv(char **p, const char *k) {
-  int i, j;
-  for (i = 0; p[i]; ++i) {
-    for (j = 0;; ++j) {
-      if (!k[j] || k[j] == '=') {
-        if (p[i][j] == '=') {
-          return (struct Env){p[i] + j + 1, i};
-        }
-        break;
-      }
-      if (toupper(k[j] & 255) != toupper(p[i][j] & 255)) {
-        break;
-      }
-    }
-  }
-  return (struct Env){0, i};
-}
-
 static void PutEnv(char **p, const char *kv) {
   struct Env e;
-  e = GetEnv(p, kv);
+  e = _getenv(p, kv);
   p[e.i] = kv;
   if (!e.s) p[e.i + 1] = 0;
 }
@@ -271,7 +249,7 @@ static int Read(void) {
 
 static int Cd(void) {
   const char *s;
-  if ((s = n > 1 ? args[1] : GetEnv(envs, "HOME").s)) {
+  if ((s = n > 1 ? args[1] : _getenv(envs, "HOME").s)) {
     if (!chdir(s)) {
       return 0;
     } else {
@@ -489,14 +467,27 @@ static const char *IntToStr(int x) {
 }
 
 static const char *GetVar(const char *key) {
+  static char vbuf[PATH_MAX];
   if (key[0] == '$' && !key[1]) {
     return IntToStr(getpid());
   } else if (key[0] == '!' && !key[1]) {
     return IntToStr(lastchild);
   } else if (key[0] == '?' && !key[1]) {
     return IntToStr(exitstatus);
+  } else if (!strcmp(key, "PWD")) {
+    _npassert(getcwd(vbuf, sizeof(vbuf)));
+    return vbuf;
+  } else if (!strcmp(key, "UID")) {
+    FormatInt32(vbuf, getuid());
+    return vbuf;
+  } else if (!strcmp(key, "GID")) {
+    FormatInt32(vbuf, getgid());
+    return vbuf;
+  } else if (!strcmp(key, "EUID")) {
+    FormatInt32(vbuf, geteuid());
+    return vbuf;
   } else {
-    return GetEnv(envs, key).s;
+    return _getenv(envs, key).s;
   }
 }
 
diff --git a/libc/runtime/enable_threads.c b/libc/runtime/enable_threads.c
index 21f0176d6..72211596b 100644
--- a/libc/runtime/enable_threads.c
+++ b/libc/runtime/enable_threads.c
@@ -19,8 +19,10 @@
 #include "ape/sections.internal.h"
 #include "libc/assert.h"
 #include "libc/calls/calls.h"
+#include "libc/calls/struct/sigset.h"
 #include "libc/calls/syscall-sysv.internal.h"
 #include "libc/intrin/strace.internal.h"
+#include "libc/runtime/morph.h"
 #include "libc/runtime/runtime.h"
 #include "libc/thread/tls.h"
 
@@ -30,7 +32,8 @@ extern int __threadcalls_start[];
 #pragma weak __threadcalls_end
 
 static privileged dontinline void FixupLockNops(void) {
-  __morph_begin();
+  sigset_t mask;
+  __morph_begin(&mask);
   /*
    * _NOPL("__threadcalls", func)
    *
@@ -54,7 +57,7 @@ static privileged dontinline void FixupLockNops(void) {
     _base[*p + 1] = 0x67;
     _base[*p + 2] = 0xe8;
   }
-  __morph_end();
+  __morph_end(&mask);
 }
 
 void __enable_threads(void) {
diff --git a/libc/runtime/enable_tls.c b/libc/runtime/enable_tls.c
index 2a5117234..419b6bd8c 100644
--- a/libc/runtime/enable_tls.c
+++ b/libc/runtime/enable_tls.c
@@ -19,6 +19,7 @@
 #include "ape/sections.internal.h"
 #include "libc/assert.h"
 #include "libc/calls/calls.h"
+#include "libc/calls/struct/sigset.h"
 #include "libc/calls/syscall-sysv.internal.h"
 #include "libc/dce.h"
 #include "libc/errno.h"
@@ -32,6 +33,7 @@
 #include "libc/nexgen32e/msr.h"
 #include "libc/nt/thread.h"
 #include "libc/runtime/internal.h"
+#include "libc/runtime/morph.h"
 #include "libc/runtime/runtime.h"
 #include "libc/stdalign.internal.h"
 #include "libc/str/str.h"
@@ -196,9 +198,10 @@ privileged void __enable_tls(void) {
   if ((intptr_t)_tls_content && (IsWindows() || IsXnu())) {
     int n;
     uint64_t w;
+    sigset_t mask;
     unsigned m, dis;
     unsigned char *p;
-    __morph_begin();
+    __morph_begin(&mask);
 
     if (IsXnu()) {
       // Apple is quite straightforward to patch. We basically
@@ -262,7 +265,7 @@ privileged void __enable_tls(void) {
       }
     }
 
-    __morph_end();
+    __morph_end(&mask);
   }
 
   // we are now allowed to use tls
diff --git a/libc/runtime/fork-nt.c b/libc/runtime/fork-nt.c
index 0f59649ab..ffc24b366 100644
--- a/libc/runtime/fork-nt.c
+++ b/libc/runtime/fork-nt.c
@@ -224,9 +224,6 @@ textwindows void WinMainForked(void) {
     AbortFork("CloseHandle");
   }
 
-  // turn tls back on
-  __enable_tls();
-
   // rewrap the stdin named pipe hack
   // since the handles closed on fork
   struct Fds *fds = VEIL("r", &g_fds);
@@ -267,11 +264,14 @@ textwindows int sys_fork_nt(uint32_t dwCreationFlags) {
   uint32_t oldprot;
   char **args, **args2;
   char16_t pipename[64];
+  bool needtls, threaded;
   int64_t reader, writer;
   struct NtStartupInfo startinfo;
   int i, n, pid, untrackpid, rc = -1;
   char *p, forkvar[6 + 21 + 1 + 21 + 1];
   struct NtProcessInformation procinfo;
+  threaded = __threaded;
+  needtls = __tls_enabled;
   if (!setjmp(jb)) {
     pid = untrackpid = __reservefd_unlocked(-1);
     reader = CreateNamedPipe(CreatePipeName(pipename),
@@ -345,9 +345,15 @@ textwindows int sys_fork_nt(uint32_t dwCreationFlags) {
     }
   } else {
     rc = 0;
+    if (needtls) {
+      __enable_tls();
+    }
+    if (threaded && !__threaded && _weaken(__enable_threads)) {
+      _weaken(__enable_threads)();
+    }
   }
   if (untrackpid != -1) {
-    __releasefd_unlocked(untrackpid);
+    __releasefd(untrackpid);
   }
   return rc;
 }
diff --git a/libc/calls/cfgetispeed.c b/libc/runtime/fork-sysv.c
similarity index 82%
rename from libc/calls/cfgetispeed.c
rename to libc/runtime/fork-sysv.c
index 51fefc120..9a7aba589 100644
--- a/libc/calls/cfgetispeed.c
+++ b/libc/runtime/fork-sysv.c
@@ -1,7 +1,7 @@
 /*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
 │vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
 ╞══════════════════════════════════════════════════════════════════════════════╡
-│ Copyright 2021 Justine Alexandra Roberts Tunney                              │
+│ Copyright 2022 Justine Alexandra Roberts Tunney                              │
 │                                                                              │
 │ Permission to use, copy, modify, and/or distribute this software for         │
 │ any purpose with or without fee is hereby granted, provided that the         │
@@ -16,13 +16,19 @@
 │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
-#include "libc/calls/termios.h"
-#include "libc/sysv/consts/termios.h"
+#include "libc/calls/syscall-sysv.internal.h"
+#include "libc/dce.h"
 
-uint32_t cfgetispeed(const struct termios *t) {
-  if (CBAUD) {
-    return t->c_cflag & CBAUD;
-  } else {
-    return t->c_ispeed;
+int sys_fork(void) {
+  axdx_t ad;
+  int ax, dx;
+  ad = __sys_fork();
+  ax = ad.ax;
+  dx = ad.dx;
+  if (IsXnu() && ax != -1) {
+    // eax always returned with childs pid
+    // edx is 0 for parent and 1 for child
+    ax &= dx - 1;
   }
+  return ax;
 }
diff --git a/libc/runtime/fork.c b/libc/runtime/fork.c
index 4c5fec362..48da63f7a 100644
--- a/libc/runtime/fork.c
+++ b/libc/runtime/fork.c
@@ -17,6 +17,7 @@
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
 #include "libc/assert.h"
+#include "libc/calls/blocksigs.internal.h"
 #include "libc/calls/calls.h"
 #include "libc/calls/struct/sigset.h"
 #include "libc/calls/struct/sigset.internal.h"
@@ -33,30 +34,15 @@
 #include "libc/thread/tls.h"
 
 int _fork(uint32_t dwCreationFlags) {
-  axdx_t ad;
-  bool threaded;
-  sigset_t old, all;
   int ax, dx, parent;
-  sigfillset(&all);
-  _unassert(!sigprocmask(SIG_BLOCK, &all, &old));
+  BLOCK_SIGNALS;
   if (__threaded && _weaken(_pthread_onfork_prepare)) {
     _weaken(_pthread_onfork_prepare)();
   }
   if (!IsWindows()) {
-    ad = sys_fork();
-    ax = ad.ax;
-    dx = ad.dx;
-    if (IsXnu() && ax != -1) {
-      // eax always returned with childs pid
-      // edx is 0 for parent and 1 for child
-      ax &= dx - 1;
-    }
+    ax = sys_fork();
   } else {
-    threaded = __threaded;
     ax = sys_fork_nt(dwCreationFlags);
-    if (threaded && !__threaded && _weaken(__enable_threads)) {
-      _weaken(__enable_threads)();
-    }
   }
   if (!ax) {
     if (!IsWindows()) {
@@ -81,7 +67,7 @@ int _fork(uint32_t dwCreationFlags) {
     }
     STRACE("fork() → %d% m", ax);
   }
-  _unassert(!sigprocmask(SIG_SETMASK, &old, 0));
+  ALLOW_SIGNALS;
   return ax;
 }
 
@@ -92,6 +78,7 @@ int _fork(uint32_t dwCreationFlags) {
  * @raise EAGAIN if `RLIMIT_NPROC` was exceeded or system lacked resources
  * @raise ENOMEM if we require more vespene gas
  * @asyncsignalsafe
+ * @threadsafe
  */
 int fork(void) {
   return _fork(0);
diff --git a/libc/runtime/hook.greg.c b/libc/runtime/hook.greg.c
index 7f8ac9456..04145bfbb 100644
--- a/libc/runtime/hook.greg.c
+++ b/libc/runtime/hook.greg.c
@@ -18,6 +18,7 @@
 ╚─────────────────────────────────────────────────────────────────────────────*/
 #include "ape/sections.internal.h"
 #include "libc/calls/struct/sigset.h"
+#include "libc/runtime/morph.h"
 #include "libc/runtime/runtime.h"
 #include "libc/runtime/symbols.internal.h"
 
@@ -45,13 +46,13 @@ privileged noinstrument noasan int __hook(void *ifunc,
   size_t i;
   char *p, *pe;
   intptr_t addr;
+  sigset_t mask;
   uint64_t code, mcode;
-  sigset_t mask, oldmask;
   intptr_t kMcount = (intptr_t)&mcount;
   intptr_t kProgramCodeStart = (intptr_t)_ereal;
   intptr_t kPrivilegedStart = (intptr_t)__privileged_addr;
   if (!symbols) return -1;
-  __morph_begin();
+  __morph_begin(&mask);
   for (i = 0; i < symbols->count; ++i) {
     if (symbols->addr_base + symbols->symbols[i].x < kProgramCodeStart) {
       continue;
@@ -112,6 +113,6 @@ privileged noinstrument noasan int __hook(void *ifunc,
       }
     }
   }
-  __morph_end();
+  __morph_end(&mask);
   return 0;
 }
diff --git a/libc/runtime/memtrack.internal.h b/libc/runtime/memtrack.internal.h
index 80454f27f..1235e36a3 100644
--- a/libc/runtime/memtrack.internal.h
+++ b/libc/runtime/memtrack.internal.h
@@ -135,39 +135,39 @@ forceinline pureconst bool IsFixedFrame(int x) {
 }
 
 forceinline pureconst bool OverlapsImageSpace(const void *p, size_t n) {
-  const unsigned char *start, *ender;
+  const unsigned char *BegA, *EndA, *BegB, *EndB;
   if (n) {
-    start = p;
-    ender = start + (n - 1);
-    return ((_base <= start && start < _end) ||
-            (_base <= ender && ender < _end) ||
-            (start < _base && _end <= ender));
+    BegA = p;
+    EndA = BegA + (n - 1);
+    BegB = _base;
+    EndB = _end - 1;
+    return MAX(BegA, BegB) < MIN(EndA, EndB);
   } else {
     return 0;
   }
 }
 
 forceinline pureconst bool OverlapsArenaSpace(const void *p, size_t n) {
-  intptr_t x, y;
+  intptr_t BegA, EndA, BegB, EndB;
   if (n) {
-    x = (intptr_t)p;
-    y = x + (n - 1);
-    return ((0x50000000 <= x && x <= 0x7ffdffff) ||
-            (0x50000000 <= y && y <= 0x7ffdffff) ||
-            (x < 0x50000000 && 0x7ffdffff < y));
+    BegA = (intptr_t)p;
+    EndA = BegA + (n - 1);
+    BegB = 0x50000000;
+    EndB = 0x7ffdffff;
+    return MAX(BegA, BegB) < MIN(EndA, EndB);
   } else {
     return 0;
   }
 }
 
 forceinline pureconst bool OverlapsShadowSpace(const void *p, size_t n) {
-  intptr_t x, y;
+  intptr_t BegA, EndA, BegB, EndB;
   if (n) {
-    x = (intptr_t)p;
-    y = x + (n - 1);
-    return ((0x7fff0000 <= x && x <= 0x10007fffffff) ||
-            (0x7fff0000 <= y && y <= 0x10007fffffff) ||
-            (x < 0x7fff0000 && 0x10007fffffff < y));
+    BegA = (intptr_t)p;
+    EndA = BegA + (n - 1);
+    BegB = 0x7fff0000;
+    EndB = 0x10007fffffff;
+    return MAX(BegA, BegB) < MIN(EndA, EndB);
   } else {
     return 0;
   }
diff --git a/libc/runtime/morph.greg.c b/libc/runtime/morph.greg.c
index 27fcf7930..5d86e4e55 100644
--- a/libc/runtime/morph.greg.c
+++ b/libc/runtime/morph.greg.c
@@ -18,6 +18,7 @@
 ╚─────────────────────────────────────────────────────────────────────────────*/
 #define ShouldUseMsabiAttribute() 1
 #include "ape/sections.internal.h"
+#include "libc/assert.h"
 #include "libc/calls/internal.h"
 #include "libc/calls/struct/sigset.h"
 #include "libc/dce.h"
@@ -37,9 +38,6 @@
 
 __msabi extern typeof(VirtualProtect) *const __imp_VirtualProtect;
 
-static int64_t vector;
-static sigset_t oldss;
-
 static privileged void __morph_mprotect(void *addr, size_t size, int prot,
                                         int ntprot) {
   bool cf;
@@ -58,7 +56,7 @@ static privileged void __morph_mprotect(void *addr, size_t size, int prot,
       _Exit(26);
     }
 #endif
-    if (ax) notpossible;
+    _npassert(!ax);
   } else {
     __imp_VirtualProtect(addr, size, ntprot, &op);
   }
@@ -69,29 +67,26 @@ static privileged void __morph_mprotect(void *addr, size_t size, int prot,
  *
  * @return 0 on success, or -1 w/ errno
  */
-privileged void __morph_begin(void) {
+privileged void __morph_begin(sigset_t *save) {
   int ax;
   bool cf;
   intptr_t dx;
   sigset_t ss = {{-1, -1}};
   STRACE("__morph_begin()");
-  if (!IsWindows()) {
-    if (!IsOpenbsd()) {
-      asm volatile("mov\t$8,%%r10d\n\t"
-                   "syscall"
-                   : "=a"(ax), "=d"(dx)
-                   : "0"(__NR_sigprocmask), "D"(SIG_BLOCK), "S"(&ss),
-                     "1"(&oldss)
-                   : "rcx", "r8", "r9", "r10", "r11", "memory", "cc");
-      if (ax) notpossible;
-    } else {
-      asm volatile(CFLAG_ASM("syscall")
-                   : CFLAG_CONSTRAINT(cf), "=a"(ax), "=d"(dx)
-                   : "1"(__NR_sigprocmask), "D"(SIG_BLOCK), "S"(-1u)
-                   : "rcx", "r8", "r9", "r10", "r11", "memory");
-      oldss.__bits[0] = ax & 0xffffffff;
-      if (cf) notpossible;
-    }
+  if (IsOpenbsd()) {
+    asm volatile(CFLAG_ASM("syscall")
+                 : CFLAG_CONSTRAINT(cf), "=a"(ax), "=d"(dx)
+                 : "1"(__NR_sigprocmask), "D"(SIG_BLOCK), "S"(-1u)
+                 : "rcx", "r8", "r9", "r10", "r11", "memory");
+    save->__bits[0] = ax & 0xffffffff;
+    _npassert(!cf);
+  } else if (!IsWindows() && !IsMetal()) {
+    asm volatile("mov\t$8,%%r10d\n\t"
+                 "syscall"
+                 : "=a"(ax), "=d"(dx)
+                 : "0"(__NR_sigprocmask), "D"(SIG_BLOCK), "S"(&ss), "1"(save)
+                 : "rcx", "r8", "r9", "r10", "r11", "memory", "cc");
+    _npassert(!ax);
   }
   __morph_mprotect(_base, __privileged_addr - _base, PROT_READ | PROT_WRITE,
                    kNtPageWritecopy);
@@ -100,29 +95,25 @@ privileged void __morph_begin(void) {
 /**
  * Begins code morphing executable.
  */
-privileged void __morph_end(void) {
+privileged void __morph_end(sigset_t *save) {
   int ax;
   long dx;
   bool cf;
   __morph_mprotect(_base, __privileged_addr - _base, PROT_READ | PROT_EXEC,
                    kNtPageExecuteRead);
-  if (!IsWindows()) {
-    if (!IsOpenbsd()) {
-      asm volatile("mov\t$8,%%r10d\n\t"
-                   "syscall"
-                   : "=a"(ax), "=d"(dx)
-                   : "0"(__NR_sigprocmask), "D"(SIG_SETMASK), "S"(&oldss),
-                     "1"(0)
-                   : "rcx", "r8", "r9", "r10", "r11", "memory", "cc");
-      if (ax) notpossible;
-    } else {
-      asm volatile(CFLAG_ASM("syscall")
-                   : CFLAG_CONSTRAINT(cf), "=a"(ax), "=d"(dx)
-                   : "1"(__NR_sigprocmask), "D"(SIG_SETMASK),
-                     "S"(oldss.__bits[0])
-                   : "rcx", "r8", "r9", "r10", "r11", "memory");
-      if (cf) notpossible;
-    }
+  if (IsOpenbsd()) {
+    asm volatile(CFLAG_ASM("syscall")
+                 : CFLAG_CONSTRAINT(cf), "=a"(ax), "=d"(dx)
+                 : "1"(__NR_sigprocmask), "D"(SIG_SETMASK), "S"(save->__bits[0])
+                 : "rcx", "r8", "r9", "r10", "r11", "memory");
+    _npassert(!cf);
+  } else if (!IsWindows() && !IsMetal()) {
+    asm volatile("mov\t$8,%%r10d\n\t"
+                 "syscall"
+                 : "=a"(ax), "=d"(dx)
+                 : "0"(__NR_sigprocmask), "D"(SIG_SETMASK), "S"(save), "1"(0)
+                 : "rcx", "r8", "r9", "r10", "r11", "memory", "cc");
+    _npassert(!ax);
   }
   STRACE("__morph_end()");
 }
diff --git a/libc/runtime/morph.h b/libc/runtime/morph.h
new file mode 100644
index 000000000..813140317
--- /dev/null
+++ b/libc/runtime/morph.h
@@ -0,0 +1,12 @@
+#ifndef COSMOPOLITAN_LIBC_RUNTIME_MORPH_H_
+#define COSMOPOLITAN_LIBC_RUNTIME_MORPH_H_
+#include "libc/calls/struct/sigset.h"
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void __morph_begin(sigset_t *);
+void __morph_end(sigset_t *);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#endif /* COSMOPOLITAN_LIBC_RUNTIME_MORPH_H_ */
diff --git a/libc/runtime/runtime.h b/libc/runtime/runtime.h
index 954556c1b..b6e59d0a5 100644
--- a/libc/runtime/runtime.h
+++ b/libc/runtime/runtime.h
@@ -57,7 +57,7 @@ int atfork(void *, void *) libcesque;
 int atexit(void (*)(void)) libcesque;
 char *getenv(const char *) nosideeffect libcesque;
 int putenv(char *) paramsnonnull();
-int setenv(const char *, const char *, int) paramsnonnull();
+int setenv(const char *, const char *, int);
 int unsetenv(const char *);
 int clearenv(void);
 void fpreset(void);
@@ -100,8 +100,6 @@ char *GetInterpreterExecutableName(char *, size_t);
 void __printargs(const char *);
 void __paginate(int, const char *);
 int __arg_max(void);
-void __morph_begin(void);
-void __morph_end(void);
 void __print_maps(void);
 void __warn_if_powersave(void);
 const char *__describe_os(void);
diff --git a/libc/runtime/straceinit.greg.c b/libc/runtime/straceinit.greg.c
index e47bede51..8eeff8ef3 100644
--- a/libc/runtime/straceinit.greg.c
+++ b/libc/runtime/straceinit.greg.c
@@ -16,6 +16,8 @@
 │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/dce.h"
+#include "libc/intrin/atomic.h"
 #include "libc/intrin/safemacros.internal.h"
 #include "libc/intrin/strace.internal.h"
 #include "libc/log/libfatal.internal.h"
@@ -29,7 +31,7 @@ textstartup int __strace_init(int argc, char **argv, char **envp, long *auxv) {
   /* asan isn't initialized yet at runlevel 300 */
   if (__intercept_flag(&argc, argv, "--strace") ||
       __atoul(nulltoempty(__getenv(envp, "STRACE")))) {
-    ++__strace;
+    atomic_store_explicit(&__strace, 1, memory_order_relaxed);
   }
   return (__argc = argc);
 }
diff --git a/libc/runtime/vfork.S b/libc/runtime/vfork.S
index 7bb00df25..c6febc9a1 100644
--- a/libc/runtime/vfork.S
+++ b/libc/runtime/vfork.S
@@ -20,7 +20,6 @@
 #include "libc/intrin/strace.internal.h"
 #include "libc/thread/tls.h"
 #include "libc/macros.internal.h"
-.privileged
 
 //	Forks process without copying page tables.
 //
@@ -32,37 +31,55 @@
 //	do anything in a vfork()'d child process. TLS memory must not
 //	be disabled (it's enabled by default) since vfork() needs it.
 //
+//	What makes vfork() dangerous is that any changes to memory in
+//	the child process can happen in the parent too. The exception
+//	to this rule is `errno` which is saved/restored in a register
+//	by this implementation. However, despite its dangers, vfork's
+//	performance is irresistible and wonderous to behold. If safer
+//	code is desired, consider posix_spawn() which uses vfork().
+//
 //	Do not make the assumption that the parent is suspended until
-//	the child terminates since this impl calls fork() on Windows,
-//	OpenBSD, and MacOS.
+//	the child terminates since this uses the raw fork system call
+//	on Windows, OpenBSD, and MacOS. In that case the process will
+//	proceed without blocking the parent; however, the `__vforked`
+//	variable is still set to true in the child, so lock functions
+//	won't do anything, and other functions shall change behavior.
+//	This ensures that, even if the operating system does not give
+//	us the performance of vfork(), we'll still be able to cut out
+//	the libc overhead, e.g. pthread_atfork().
 //
 //	@return	pid of child process or 0 if forked process
 //	@returnstwice
 //	@threadsafe
 //	@vforksafe
-vfork:	call	__require_tls
-	xor	%edi,%edi		# dwCreationFlags
-#ifdef __SANITIZE_ADDRESS__
-	jmp	fork			# TODO: asan and vfork don't mix?
-	.endfn	vfork,globl
-#else
-#if SupportsWindows()
-	testb	IsWindows()
-	jnz	sys_fork_nt		# and we're lucky to have that
-#endif
-#if SupportsXnu()
-	testb	IsXnu()
-	jnz	fork
-#endif
-#if SupportsOpenbsd()
-	testb	IsOpenbsd()
-	jnz	fork			# fake vfork plus msyscall issues
-#endif
+vfork:
+#if !IsTiny()
+	push	%rbp
+	mov	%rsp,%rbp
+	.profilable
+	call	__require_tls
 #ifdef SYSDEBUG
 	ezlea	.Llog,di
 	call	__stracef
-#endif /* SYSDEBUG */
+#endif
+	pop	%rbp
+#endif
 	mov	%fs:0,%r9		# get thread information block
+#if SupportsWindows()
+	testb	IsWindows()
+	jnz	6f			# and we're lucky to have that
+#endif
+#ifdef __SANITIZE_ADDRESS__
+	jmp	5f			# TODO: asan and vfork don't mix?
+#endif
+#if SupportsXnu()
+	testb	IsXnu()
+	jnz	5f
+#endif
+#if SupportsOpenbsd()
+	testb	IsOpenbsd()
+	jnz	5f			# fake vfork plus msyscall issues
+#endif
 	mov	0x3c(%r9),%r8d		# avoid question of @vforksafe errno
 	pop	%rsi			# saves return address in a register
 	mov	__NR_vfork(%rip),%eax
@@ -79,12 +96,35 @@ vfork:	call	__require_tls
 	cmp	$-4095,%eax
 	jae	systemfive_error
 	mov	%r8d,0x3c(%r9)		# restore errno
-	test	%eax,%eax
-	jnz	.Lprnt
-.Lchld:	orb	$TIB_FLAG_VFORKED,0x40(%r9)
+1:	test	%eax,%eax
+	jnz	.Lpar
+.Lchi:	orb	$TIB_FLAG_VFORKED,0x40(%r9)
 	ret
-.Lprnt:	andb	$~TIB_FLAG_VFORKED,0x40(%r9)
+.Lpar:	andb	$~TIB_FLAG_VFORKED,0x40(%r9)
 	ret
+#if SupportsXnu() || SupportsOpenbsd() || defined(__SANITIZE_ADDRESS__)
+5:	push	%rbp
+	mov	%rsp,%rbp
+	push	%r9
+	push	%r9
+	call	sys_fork
+	pop	%r9
+	pop	%r9
+	pop	%rbp
+	jmp	1b
+#endif
+#if SupportsWindows()
+6:	push	%rbp
+	mov	%rsp,%rbp
+	push	%r9
+	push	%r9
+	xor	%edi,%edi		# dwCreationFlags
+	call	sys_fork_nt
+	pop	%r9
+	pop	%r9
+	pop	%rbp
+	jmp	1b
+#endif
 	.endfn	vfork,globl
 
 #ifdef SYSDEBUG
@@ -93,5 +133,3 @@ vfork:	call	__require_tls
 	.asciz	"vfork()\n"
 	.previous
 #endif /* DEBUGSYS */
-
-#endif /* __SANITIZE_ADDRESS__ */
diff --git a/libc/sock/socketpair-nt.c b/libc/sock/socketpair-nt.c
index e4ad00122..8ec12a741 100644
--- a/libc/sock/socketpair-nt.c
+++ b/libc/sock/socketpair-nt.c
@@ -95,8 +95,8 @@ textwindows int sys_socketpair_nt(int family, int type, int proto, int sv[2]) {
     rc = 0;
   } else {
     CloseHandle(hpipe);
-    __releasefd_unlocked(writer);
-    __releasefd_unlocked(reader);
+    __releasefd(writer);
+    __releasefd(reader);
     rc = -1;
   }
 
diff --git a/libc/stdio/getrandom.c b/libc/stdio/getrandom.c
index 7f1a8e6a6..9df21814a 100644
--- a/libc/stdio/getrandom.c
+++ b/libc/stdio/getrandom.c
@@ -129,8 +129,9 @@ ssize_t getrandom(void *p, size_t n, unsigned f) {
 
 static textstartup void getrandom_init(void) {
   int e, rc;
-  e = errno;
   struct sigaction sa, oldsa;
+  if (IsWindows()) return;
+  e = errno;
   if (IsBsd()) {
     sa.sa_flags = 0;
     sa.sa_handler = SIG_IGN;
diff --git a/libc/str/str.h b/libc/str/str.h
index 0ee028e81..ef1e03b14 100644
--- a/libc/str/str.h
+++ b/libc/str/str.h
@@ -3,6 +3,9 @@
 
 #define INVALID_CODEPOINT 0xfffd
 
+#define _tolower(u) (0040 | (u))
+#define _toupper(u) (0137 & (u))
+
 #if !(__ASSEMBLER__ + __LINKER__ + 0)
 COSMOPOLITAN_C_START_
 
diff --git a/libc/sysv/calls/__sys_fork.s b/libc/sysv/calls/__sys_fork.s
new file mode 100644
index 000000000..3a39a32f5
--- /dev/null
+++ b/libc/sysv/calls/__sys_fork.s
@@ -0,0 +1,2 @@
+.include "o/libc/sysv/macros.internal.inc"
+.scall __sys_fork,0x0020020022002039,globl,hidden
diff --git a/libc/sysv/calls/sys_fork.s b/libc/sysv/calls/sys_fork.s
deleted file mode 100644
index 17643ee98..000000000
--- a/libc/sysv/calls/sys_fork.s
+++ /dev/null
@@ -1,2 +0,0 @@
-.include "o/libc/sysv/macros.internal.inc"
-.scall sys_fork,0x0020020022002039,globl,hidden
diff --git a/libc/sysv/consts.sh b/libc/sysv/consts.sh
index 68ce27681..813784629 100755
--- a/libc/sysv/consts.sh
+++ b/libc/sysv/consts.sh
@@ -385,9 +385,9 @@ syscon	fcntl	FWRITE					0			2			2			2			2			0			# wut is it
 syscon	fcntl	F_SETLK					6			8			12			8			8			6			# polyfilled nt
 syscon	fcntl	F_SETLKW				7			9			13			9			9			7			# polyfilled nt
 syscon	fcntl	F_GETLK					5			7			11			7			7			5			# polyfilled nt
-syscon	fcntl	F_OFD_SETLK				37			90			-1			-1			-1			6
-syscon	fcntl	F_OFD_SETLKW				38			91			-1			-1			-1			7
-syscon	fcntl	F_OFD_GETLK				36			92			-1			-1			-1			5
+syscon	fcntl	F_OFD_SETLK				37			-1			-1			-1			-1			-1			# listed in xnu source code but marked private
+syscon	fcntl	F_OFD_SETLKW				38			-1			-1			-1			-1			-1			# listed in xnu source code but marked private
+syscon	fcntl	F_OFD_GETLK				36			-1			-1			-1			-1			-1			# listed in xnu source code but marked private
 syscon	fcntl	F_RDLCK					0			1			1			1			1			0			# polyfilled nt; bsd consensus
 syscon	fcntl	F_WRLCK					1			3			3			3			3			1			# polyfilled nt; bsd consensus
 syscon	fcntl	F_UNLCK					2			2			2			2			2			2			# polyfilled nt; unix consensus
@@ -1340,8 +1340,8 @@ syscon	compat	TIOCSETAF				0x5404			0x80487416		0x802c7416		0x802c7416		0x802c74
 syscon	termios	TIOCGWINSZ				0x5413			1074295912		1074295912		1074295912		1074295912		0x5413			# ioctl(tty, TIOCGWINSZ, struct winsize *argp); polyfilled NT
 syscon	termios	TIOCSWINSZ				0x5414			0x80087467		0x80087467		0x80087467		0x80087467		0x5414			# ioctl(tty, TIOCSWINSZ, const struct winsize *argp) (faked NT)
 syscon	termios	TIOCOUTQ				0x5411			0x40047473		0x40047473		0x40047473		0x40047473		0			# get # bytes queued in TTY's output buffer ioctl(tty, TIOCSWINSZ, const struct winsize *argp)
-syscon	termios	TIOCGPGRP				0x540f			0x40047477		0x40047477		0x40047477		0x40047477		0			# get pgrp of tty
-syscon	termios	TIOCSPGRP				0x5410			0x80047476		0x80047476		0x80047476		0x80047476		0			# set pgrp of tty
+syscon	termios	TIOCGPGRP				0x540f			0x40047477		0x40047477		0x40047477		0x40047477		0			# tcgetpgrp(): get pgrp of tty
+syscon	termios	TIOCSPGRP				0x5410			0x80047476		0x80047476		0x80047476		0x80047476		0			# tcsetpgrp(): set pgrp of tty
 syscon	termios	TIOCSBRK				0x5427			0x2000747b		0x2000747b		0x2000747b		0x2000747b		0			# set break bit
 syscon	termios	TIOCCBRK				0x5428			0x2000747a		0x2000747a		0x2000747a		0x2000747a		0			# boop
 syscon	termios	TIOCCONS				0x541d			0x80047462		0x80047462		0x80047462		0x80047462		0			# boop
@@ -1356,8 +1356,7 @@ syscon	termios	TIOCGSID				0x5429			0x40047463		0x40047463		0x40047463		0x400474
 syscon	termios	TABLDISC				0			0x3			0			0x3			0x3			0			# boop
 syscon	termios	SLIPDISC				0			0x4			0x4			0x4			0x4			0			# boop
 syscon	termios	PPPDISC					0			0x5			0x5			0x5			0x5			0			# boop
-syscon	termios	TCSBRK					0x5409			0x2000745e		0x2000745e		0x2000745e		0x2000745e		0			# TIOCDRAIN on BSD
-syscon	termios	TIOCDRAIN				0x5409			0x2000745e		0x2000745e		0x2000745e		0x2000745e		0			# TCSBRK on Linux
+syscon	termios	TCSBRK					0x5409			0x2000745e		0x2000745e		0x2000745e		0x2000745e		0			# TIOCDRAIN on BSD; TIOCDRAIN on BSD
 syscon	termios	TIOCSTAT				0			0x20007465		0x20007465		0x20007465		0x20007465		0			# boop
 syscon	termios	TIOCSTART				0			0x2000746e		0x2000746e		0x2000746e		0x2000746e		0			# boop
 syscon	termios	TIOCCDTR				0			0x20007478		0x20007478		0x20007478		0x20007478		0			# clear data terminal ready
@@ -2308,35 +2307,38 @@ syscon	misc	AIO_ALLDONE				2			1			3			0			0			0
 syscon	misc	AIO_NOTCANCELED				1			4			2			0			0			0
 syscon	misc	AIO_CANCELED				0			2			1			0			0			0
 
-syscon	baud	B0					0			0			0			0			0			0			# consensus
-syscon	baud	B50					1			50			50			50			50			0			# bsd consensus
-syscon	baud	B75					2			75			75			75			75			0			# bsd consensus
-syscon	baud	B110					3			110			110			110			110			0			# bsd consensus
-syscon	baud	B134					4			134			134			134			134			0			# bsd consensus
-syscon	baud	B150					5			150			150			150			150			0			# bsd consensus
-syscon	baud	B200					6			200			200			200			200			0			# bsd consensus
-syscon	baud	B300					7			300			300			300			300			0			# bsd consensus
-syscon	baud	B600					8			600			600			600			600			0			# bsd consensus
-syscon	baud	B1200					9			0x04b0			0x04b0			0x04b0			0x04b0			0			# bsd consensus
-syscon	baud	B1800					10			0x0708			0x0708			0x0708			0x0708			0			# bsd consensus
-syscon	baud	B2400					11			0x0960			0x0960			0x0960			0x0960			0			# bsd consensus
-syscon	baud	B4800					12			0x12c0			0x12c0			0x12c0			0x12c0			0			# bsd consensus
-syscon	baud	B9600					13			0x2580			0x2580			0x2580			0x2580			0			# bsd consensus
-syscon	baud	B19200					14			0x4b00			0x4b00			0x4b00			0x4b00			0			# bsd consensus
-syscon	baud	B38400					15			0x9600			0x9600			0x9600			0x9600			0			# bsd consensus
-syscon	baud	B57600					0x1001			0xe100			0xe100			0xe100			0xe100			0			# bsd consensus
-syscon	baud	B115200					0x1002			0x01c200		0x01c200		0x01c200		0x01c200		0			# bsd consensus
-syscon	baud	B230400					0x1003			0x038400		0x038400		0x038400		0x038400		0			# bsd consensus
-syscon	baud	B500000					0x1005			0			0			0			0			0
-syscon	baud	B576000					0x1006			0			0			0			0			0
-syscon	baud	B1000000				0x1008			0			0			0			0			0
-syscon	baud	B1152000				0x1009			0			0			0			0			0
-syscon	baud	B1500000				0x100a			0			0			0			0			0
-syscon	baud	B2000000				0x100b			0			0			0			0			0
-syscon	baud	B2500000				0x100c			0			0			0			0			0
-syscon	baud	B3000000				0x100d			0			0			0			0			0
-syscon	baud	B3500000				0x100e			0			0			0			0			0
-syscon	baud	B4000000				0x100f			0			0			0			0			0
+#	baud rates
+#
+#	group	name					GNU/Systemd		XNU's Not UNIX!		FreeBSD			OpenBSD			NetBSD			The New Technology	Commentary
+syscon	baud	B0					0			0			0			0			0			0
+syscon	baud	B50					1			50			50			50			50			50
+syscon	baud	B75					2			75			75			75			75			75
+syscon	baud	B110					3			110			110			110			110			110
+syscon	baud	B134					4			134			134			134			134			134
+syscon	baud	B150					5			150			150			150			150			150
+syscon	baud	B200					6			200			200			200			200			200
+syscon	baud	B300					7			300			300			300			300			300
+syscon	baud	B600					8			600			600			600			600			600
+syscon	baud	B1200					9			1200			1200			1200			1200			1200
+syscon	baud	B1800					10			1800			1800			1800			1800			1800
+syscon	baud	B2400					11			2400			2400			2400			2400			2400
+syscon	baud	B4800					12			4800			4800			4800			4800			4800
+syscon	baud	B9600					13			9600			9600			9600			9600			9600
+syscon	baud	B19200					14			19200			19200			19200			19200			19200
+syscon	baud	B38400					15			38400			38400			38400			38400			38400
+syscon	baud	B57600					0x1001			57600			57600			57600			57600			57600
+syscon	baud	B115200					0x1002			115200			115200			115200			115200			115200
+syscon	baud	B230400					0x1003			230400			230400			230400			230400			230400
+syscon	baud	B500000					0x1005			500000			500000			500000			500000			500000
+syscon	baud	B576000					0x1006			576000			576000			576000			576000			576000
+syscon	baud	B1000000				0x1008			1000000			1000000			1000000			1000000			1000000
+syscon	baud	B1152000				0x1009			1152000			1152000			1152000			1152000			1152000
+syscon	baud	B1500000				0x100a			1500000			1500000			1500000			1500000			1500000
+syscon	baud	B2000000				0x100b			2000000			2000000			2000000			2000000			2000000
+syscon	baud	B2500000				0x100c			2500000			2500000			2500000			2500000			2500000
+syscon	baud	B3000000				0x100d			3000000			3000000			3000000			3000000			3000000
+syscon	baud	B3500000				0x100e			3500000			3500000			3500000			3500000			3500000
+syscon	baud	B4000000				0x100f			4000000			4000000			4000000			4000000			4000000
 
 syscon	misc	WEOF					0xffffffff		-1			-1			-1			-1			-1			# bsd consensus (win fake)
 syscon	misc	_LINUX_QUOTA_VERSION			2			0			0			0			0			0
diff --git a/libc/sysv/consts/B1000000.s b/libc/sysv/consts/B1000000.s
index 6474b8cf8..c6c8ae9ac 100644
--- a/libc/sysv/consts/B1000000.s
+++ b/libc/sysv/consts/B1000000.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon baud,B1000000,0x1008,0,0,0,0,0
+.syscon baud,B1000000,0x1008,1000000,1000000,1000000,1000000,1000000
diff --git a/libc/sysv/consts/B110.s b/libc/sysv/consts/B110.s
index 9f5767b2c..a49b1ede3 100644
--- a/libc/sysv/consts/B110.s
+++ b/libc/sysv/consts/B110.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon baud,B110,3,110,110,110,110,0
+.syscon baud,B110,3,110,110,110,110,110
diff --git a/libc/sysv/consts/B115200.s b/libc/sysv/consts/B115200.s
index 3eec71805..1cd70186d 100644
--- a/libc/sysv/consts/B115200.s
+++ b/libc/sysv/consts/B115200.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon baud,B115200,0x1002,0x01c200,0x01c200,0x01c200,0x01c200,0
+.syscon baud,B115200,0x1002,115200,115200,115200,115200,115200
diff --git a/libc/sysv/consts/B1152000.s b/libc/sysv/consts/B1152000.s
index e55931ba0..21b17045d 100644
--- a/libc/sysv/consts/B1152000.s
+++ b/libc/sysv/consts/B1152000.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon baud,B1152000,0x1009,0,0,0,0,0
+.syscon baud,B1152000,0x1009,1152000,1152000,1152000,1152000,1152000
diff --git a/libc/sysv/consts/B1200.s b/libc/sysv/consts/B1200.s
index e8cc5bc4a..c4ae5e9db 100644
--- a/libc/sysv/consts/B1200.s
+++ b/libc/sysv/consts/B1200.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon baud,B1200,9,0x04b0,0x04b0,0x04b0,0x04b0,0
+.syscon baud,B1200,9,1200,1200,1200,1200,1200
diff --git a/libc/sysv/consts/B134.s b/libc/sysv/consts/B134.s
index dd93e5564..3150b1fc3 100644
--- a/libc/sysv/consts/B134.s
+++ b/libc/sysv/consts/B134.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon baud,B134,4,134,134,134,134,0
+.syscon baud,B134,4,134,134,134,134,134
diff --git a/libc/sysv/consts/B150.s b/libc/sysv/consts/B150.s
index 88b9db955..5468176ab 100644
--- a/libc/sysv/consts/B150.s
+++ b/libc/sysv/consts/B150.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon baud,B150,5,150,150,150,150,0
+.syscon baud,B150,5,150,150,150,150,150
diff --git a/libc/sysv/consts/B1500000.s b/libc/sysv/consts/B1500000.s
index 462d2321f..9bb71dc25 100644
--- a/libc/sysv/consts/B1500000.s
+++ b/libc/sysv/consts/B1500000.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon baud,B1500000,0x100a,0,0,0,0,0
+.syscon baud,B1500000,0x100a,1500000,1500000,1500000,1500000,1500000
diff --git a/libc/sysv/consts/B1800.s b/libc/sysv/consts/B1800.s
index 297dfdb3f..6b17873f6 100644
--- a/libc/sysv/consts/B1800.s
+++ b/libc/sysv/consts/B1800.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon baud,B1800,10,0x0708,0x0708,0x0708,0x0708,0
+.syscon baud,B1800,10,1800,1800,1800,1800,1800
diff --git a/libc/sysv/consts/B19200.s b/libc/sysv/consts/B19200.s
index 3768ccb53..2be3aa9ea 100644
--- a/libc/sysv/consts/B19200.s
+++ b/libc/sysv/consts/B19200.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon baud,B19200,14,0x4b00,0x4b00,0x4b00,0x4b00,0
+.syscon baud,B19200,14,19200,19200,19200,19200,19200
diff --git a/libc/sysv/consts/B200.s b/libc/sysv/consts/B200.s
index 6254fac46..942b23f81 100644
--- a/libc/sysv/consts/B200.s
+++ b/libc/sysv/consts/B200.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon baud,B200,6,200,200,200,200,0
+.syscon baud,B200,6,200,200,200,200,200
diff --git a/libc/sysv/consts/B2000000.s b/libc/sysv/consts/B2000000.s
index 67a3bd0a8..9a2266176 100644
--- a/libc/sysv/consts/B2000000.s
+++ b/libc/sysv/consts/B2000000.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon baud,B2000000,0x100b,0,0,0,0,0
+.syscon baud,B2000000,0x100b,2000000,2000000,2000000,2000000,2000000
diff --git a/libc/sysv/consts/B230400.s b/libc/sysv/consts/B230400.s
index 5a78ac7dd..e1d0a7756 100644
--- a/libc/sysv/consts/B230400.s
+++ b/libc/sysv/consts/B230400.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon baud,B230400,0x1003,0x038400,0x038400,0x038400,0x038400,0
+.syscon baud,B230400,0x1003,230400,230400,230400,230400,230400
diff --git a/libc/sysv/consts/B2400.s b/libc/sysv/consts/B2400.s
index a426d7adf..b5e704ddc 100644
--- a/libc/sysv/consts/B2400.s
+++ b/libc/sysv/consts/B2400.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon baud,B2400,11,0x0960,0x0960,0x0960,0x0960,0
+.syscon baud,B2400,11,2400,2400,2400,2400,2400
diff --git a/libc/sysv/consts/B2500000.s b/libc/sysv/consts/B2500000.s
index 95adf3939..1acb797b4 100644
--- a/libc/sysv/consts/B2500000.s
+++ b/libc/sysv/consts/B2500000.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon baud,B2500000,0x100c,0,0,0,0,0
+.syscon baud,B2500000,0x100c,2500000,2500000,2500000,2500000,2500000
diff --git a/libc/sysv/consts/B300.s b/libc/sysv/consts/B300.s
index 99e550c2b..296d10fe4 100644
--- a/libc/sysv/consts/B300.s
+++ b/libc/sysv/consts/B300.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon baud,B300,7,300,300,300,300,0
+.syscon baud,B300,7,300,300,300,300,300
diff --git a/libc/sysv/consts/B3000000.s b/libc/sysv/consts/B3000000.s
index 47cb70c5f..6d4f71572 100644
--- a/libc/sysv/consts/B3000000.s
+++ b/libc/sysv/consts/B3000000.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon baud,B3000000,0x100d,0,0,0,0,0
+.syscon baud,B3000000,0x100d,3000000,3000000,3000000,3000000,3000000
diff --git a/libc/sysv/consts/B3500000.s b/libc/sysv/consts/B3500000.s
index 4a8dc2cb4..a86415186 100644
--- a/libc/sysv/consts/B3500000.s
+++ b/libc/sysv/consts/B3500000.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon baud,B3500000,0x100e,0,0,0,0,0
+.syscon baud,B3500000,0x100e,3500000,3500000,3500000,3500000,3500000
diff --git a/libc/sysv/consts/B38400.s b/libc/sysv/consts/B38400.s
index 739187e9e..0d10b17ea 100644
--- a/libc/sysv/consts/B38400.s
+++ b/libc/sysv/consts/B38400.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon baud,B38400,15,0x9600,0x9600,0x9600,0x9600,0
+.syscon baud,B38400,15,38400,38400,38400,38400,38400
diff --git a/libc/sysv/consts/B4000000.s b/libc/sysv/consts/B4000000.s
index 009a89244..f83baaba0 100644
--- a/libc/sysv/consts/B4000000.s
+++ b/libc/sysv/consts/B4000000.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon baud,B4000000,0x100f,0,0,0,0,0
+.syscon baud,B4000000,0x100f,4000000,4000000,4000000,4000000,4000000
diff --git a/libc/sysv/consts/B4800.s b/libc/sysv/consts/B4800.s
index 495c51443..99134b6b1 100644
--- a/libc/sysv/consts/B4800.s
+++ b/libc/sysv/consts/B4800.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon baud,B4800,12,0x12c0,0x12c0,0x12c0,0x12c0,0
+.syscon baud,B4800,12,4800,4800,4800,4800,4800
diff --git a/libc/sysv/consts/B50.s b/libc/sysv/consts/B50.s
index d0d3f6cd2..c010ae819 100644
--- a/libc/sysv/consts/B50.s
+++ b/libc/sysv/consts/B50.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon baud,B50,1,50,50,50,50,0
+.syscon baud,B50,1,50,50,50,50,50
diff --git a/libc/sysv/consts/B500000.s b/libc/sysv/consts/B500000.s
index 21a399ebe..d5c0dba10 100644
--- a/libc/sysv/consts/B500000.s
+++ b/libc/sysv/consts/B500000.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon baud,B500000,0x1005,0,0,0,0,0
+.syscon baud,B500000,0x1005,500000,500000,500000,500000,500000
diff --git a/libc/sysv/consts/B57600.s b/libc/sysv/consts/B57600.s
index e72b66f6b..77306126a 100644
--- a/libc/sysv/consts/B57600.s
+++ b/libc/sysv/consts/B57600.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon baud,B57600,0x1001,0xe100,0xe100,0xe100,0xe100,0
+.syscon baud,B57600,0x1001,57600,57600,57600,57600,57600
diff --git a/libc/sysv/consts/B576000.s b/libc/sysv/consts/B576000.s
index 125379cf8..5b46b3c65 100644
--- a/libc/sysv/consts/B576000.s
+++ b/libc/sysv/consts/B576000.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon baud,B576000,0x1006,0,0,0,0,0
+.syscon baud,B576000,0x1006,576000,576000,576000,576000,576000
diff --git a/libc/sysv/consts/B600.s b/libc/sysv/consts/B600.s
index e7ba226d7..9443aeb53 100644
--- a/libc/sysv/consts/B600.s
+++ b/libc/sysv/consts/B600.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon baud,B600,8,600,600,600,600,0
+.syscon baud,B600,8,600,600,600,600,600
diff --git a/libc/sysv/consts/B75.s b/libc/sysv/consts/B75.s
index c5c2a1f0e..61f34b2cf 100644
--- a/libc/sysv/consts/B75.s
+++ b/libc/sysv/consts/B75.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon baud,B75,2,75,75,75,75,0
+.syscon baud,B75,2,75,75,75,75,75
diff --git a/libc/sysv/consts/B9600.s b/libc/sysv/consts/B9600.s
index c981da0bc..adacf6629 100644
--- a/libc/sysv/consts/B9600.s
+++ b/libc/sysv/consts/B9600.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon baud,B9600,13,0x2580,0x2580,0x2580,0x2580,0
+.syscon baud,B9600,13,9600,9600,9600,9600,9600
diff --git a/libc/sysv/consts/F_OFD_GETLK.s b/libc/sysv/consts/F_OFD_GETLK.s
index 61ac76389..592a7b9e1 100644
--- a/libc/sysv/consts/F_OFD_GETLK.s
+++ b/libc/sysv/consts/F_OFD_GETLK.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon fcntl,F_OFD_GETLK,36,92,-1,-1,-1,5
+.syscon fcntl,F_OFD_GETLK,36,-1,-1,-1,-1,-1
diff --git a/libc/sysv/consts/F_OFD_SETLK.s b/libc/sysv/consts/F_OFD_SETLK.s
index 8330b673d..d9b807b95 100644
--- a/libc/sysv/consts/F_OFD_SETLK.s
+++ b/libc/sysv/consts/F_OFD_SETLK.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon fcntl,F_OFD_SETLK,37,90,-1,-1,-1,6
+.syscon fcntl,F_OFD_SETLK,37,-1,-1,-1,-1,-1
diff --git a/libc/sysv/consts/F_OFD_SETLKW.s b/libc/sysv/consts/F_OFD_SETLKW.s
index c59ff381e..c4a6d7a70 100644
--- a/libc/sysv/consts/F_OFD_SETLKW.s
+++ b/libc/sysv/consts/F_OFD_SETLKW.s
@@ -1,2 +1,2 @@
 .include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon fcntl,F_OFD_SETLKW,38,91,-1,-1,-1,7
+.syscon fcntl,F_OFD_SETLKW,38,-1,-1,-1,-1,-1
diff --git a/libc/sysv/consts/TIOCDRAIN.s b/libc/sysv/consts/TIOCDRAIN.s
deleted file mode 100644
index 21f9cd93c..000000000
--- a/libc/sysv/consts/TIOCDRAIN.s
+++ /dev/null
@@ -1,2 +0,0 @@
-.include "o/libc/sysv/consts/syscon.internal.inc"
-.syscon termios,TIOCDRAIN,0x5409,0x2000745e,0x2000745e,0x2000745e,0x2000745e,0
diff --git a/libc/sysv/consts/clone.h b/libc/sysv/consts/clone.h
index f88c712ff..d70e15e0e 100644
--- a/libc/sysv/consts/clone.h
+++ b/libc/sysv/consts/clone.h
@@ -1,10 +1,12 @@
 #ifndef COSMOPOLITAN_LIBC_SYSV_CONSTS_CLONE_H_
 #define COSMOPOLITAN_LIBC_SYSV_CONSTS_CLONE_H_
 
+#define CSIGNAL              0x000000ff
 #define CLONE_VM             0x00000100
 #define CLONE_FS             0x00000200
 #define CLONE_FILES          0x00000400
 #define CLONE_SIGHAND        0x00000800
+#define CLONE_PIDFD          0x00001000
 #define CLONE_PTRACE         0x00002000
 #define CLONE_VFORK          0x00004000
 #define CLONE_PARENT         0x00008000
@@ -17,6 +19,12 @@
 #define CLONE_DETACHED       0x00400000
 #define CLONE_UNTRACED       0x00800000
 #define CLONE_CHILD_SETTID   0x01000000
-#define CLONE_STOPPED        0x02000000
+#define CLONE_NEWCGROUP      0x02000000
+#define CLONE_NEWUTS         0x04000000
+#define CLONE_NEWIPC         0x08000000
+#define CLONE_NEWUSER        0x10000000
+#define CLONE_NEWPID         0x20000000
+#define CLONE_NEWNET         0x40000000
+#define CLONE_IO             0x80000000
 
 #endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_CLONE_H_ */
diff --git a/libc/sysv/consts/f.h b/libc/sysv/consts/f.h
index f5a48e19b..53ea7bddf 100644
--- a/libc/sysv/consts/f.h
+++ b/libc/sysv/consts/f.h
@@ -76,7 +76,7 @@ COSMOPOLITAN_C_END_
 #define F_UNLCK         SYMBOLIC(F_UNLCK)
 #define F_WRLCK         SYMBOLIC(F_WRLCK)
 
-/* avoid leading #ifdef astray */
+/* avoid leading #ifdef configurations astray */
 /* #define F_FULLFSYNC SYMBOLIC(F_FULLFSYNC) */
 /* #define F_BARRIERFSYNC SYMBOLIC(F_BARRIERFSYNC) */
 /* #define F_OFD_GETLK     SYMBOLIC(F_OFD_GETLK) */
diff --git a/libc/sysv/consts/termios.h b/libc/sysv/consts/termios.h
index 7d3fe9d5d..b7cbd2080 100644
--- a/libc/sysv/consts/termios.h
+++ b/libc/sysv/consts/termios.h
@@ -111,7 +111,6 @@ extern const uint64_t TIOCCBRK;
 extern const uint64_t TIOCCDTR;
 extern const uint64_t TIOCCHKVERAUTH;
 extern const uint64_t TIOCCONS;
-extern const uint64_t TIOCDRAIN;
 extern const uint64_t TIOCEXT;
 extern const uint64_t TIOCFLAG_CLOCAL;
 extern const uint64_t TIOCFLAG_MDMBUF;
@@ -300,7 +299,6 @@ COSMOPOLITAN_C_END_
 #define TIOCCDTR         SYMBOLIC(TIOCCDTR)
 #define TIOCCHKVERAUTH   SYMBOLIC(TIOCCHKVERAUTH)
 #define TIOCCONS         SYMBOLIC(TIOCCONS)
-#define TIOCDRAIN        SYMBOLIC(TIOCDRAIN)
 #define TIOCEXT          SYMBOLIC(TIOCEXT)
 #define TIOCFLAG_CLOCAL  SYMBOLIC(TIOCFLAG_CLOCAL)
 #define TIOCFLAG_MDMBUF  SYMBOLIC(TIOCFLAG_MDMBUF)
diff --git a/libc/sysv/syscalls.sh b/libc/sysv/syscalls.sh
index 39ae8d635..5db4784ca 100755
--- a/libc/sysv/syscalls.sh
+++ b/libc/sysv/syscalls.sh
@@ -92,7 +92,7 @@ scall	__sys_getpeername	0x01f01f08d201f034	globl hidden
 scall	__sys_socketpair	0x0870870872087035	globl hidden
 scall	sys_setsockopt		0x0690690692069036	globl hidden
 scall	sys_getsockopt		0x0760760762076037	globl hidden
-scall	sys_fork		0x0020020022002039	globl hidden # xnu needs eax&=~-edx bc eax always holds pid and edx is 0 for parent and 1 for child
+scall	__sys_fork		0x0020020022002039	globl hidden # xnu needs eax&=~-edx bc eax always holds pid and edx is 0 for parent and 1 for child
 #scall	vfork			0x042042042204203a	globl        # this syscall is from the moon so we implement it by hand in libc/runtime/vfork.S; probably removed from XNU in 12.5
 scall	sys_posix_spawn		0x1daffffff20f4fff	globl hidden # good luck figuring out how xnu defines this
 scall	__sys_execve		0x03b03b03b203b03b	globl hidden
diff --git a/libc/thread/freebsd.internal.h b/libc/thread/freebsd.internal.h
index 53addff10..5134a108d 100644
--- a/libc/thread/freebsd.internal.h
+++ b/libc/thread/freebsd.internal.h
@@ -11,6 +11,9 @@
  *     maximum legal range is PID_MAX + 2 (100001) through INT_MAX
  */
 
+#define THR_SUSPENDED    1
+#define THR_SYSTEM_SCOPE 2
+
 #define UMTX_OP_WAIT              2
 #define UMTX_OP_WAIT_UINT         11
 #define UMTX_OP_WAIT_UINT_PRIVATE 15
diff --git a/libc/thread/posixthread.internal.h b/libc/thread/posixthread.internal.h
index 95ed0400d..e4129c819 100644
--- a/libc/thread/posixthread.internal.h
+++ b/libc/thread/posixthread.internal.h
@@ -16,8 +16,6 @@ COSMOPOLITAN_C_START_
  * @fileoverview Cosmopolitan POSIX Thread Internals
  */
 
-typedef void (*atfork_f)(void);
-
 // LEGAL TRANSITIONS             ┌──> TERMINATED
 // pthread_create ─┬─> JOINABLE ─┴┬─> DETACHED ──> ZOMBIE
 //                 └──────────────┘
@@ -80,6 +78,8 @@ struct PosixThread {
   struct _pthread_cleanup_buffer *cleanup;
 };
 
+typedef void (*atfork_f)(void);
+
 extern struct PosixThread _pthread_main;
 hidden extern pthread_spinlock_t _pthread_keys_lock;
 hidden extern uint64_t _pthread_key_usage[(PTHREAD_KEYS_MAX + 63) / 64];
diff --git a/libc/thread/pthread_attr_getscope.c b/libc/thread/pthread_attr_getscope.c
index ed264edf6..2556481fe 100644
--- a/libc/thread/pthread_attr_getscope.c
+++ b/libc/thread/pthread_attr_getscope.c
@@ -18,7 +18,12 @@
 ╚─────────────────────────────────────────────────────────────────────────────*/
 #include "libc/thread/thread.h"
 
-int pthread_attr_getscope(const pthread_attr_t *a, int *x) {
-  *x = a->__scope;
+/**
+ * Gets contention scope attribute.
+ *
+ * @return 0 on success, or errno on error
+ */
+int pthread_attr_getscope(const pthread_attr_t *attr, int *contentionscope) {
+  *contentionscope = attr->__contentionscope;
   return 0;
 }
diff --git a/libc/thread/pthread_attr_setscope.c b/libc/thread/pthread_attr_setscope.c
index e4aaaf856..648198523 100644
--- a/libc/thread/pthread_attr_setscope.c
+++ b/libc/thread/pthread_attr_setscope.c
@@ -16,9 +16,34 @@
 │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/dce.h"
+#include "libc/errno.h"
 #include "libc/thread/thread.h"
 
-int pthread_attr_setscope(pthread_attr_t *a, int x) {
-  a->__scope = x;
-  return 0;
+/**
+ * Sets contention scope attribute.
+ *
+ * @param contentionscope may be one of:
+ *     - `PTHREAD_SCOPE_SYSTEM` to fight the system for resources
+ *     - `PTHREAD_SCOPE_PROCESS` to fight familiar threads for resources
+ * @return 0 on success, or errno on error
+ * @raise ENOTSUP if `contentionscope` isn't supported on host OS
+ * @raise EINVAL if `contentionscope` was invalid
+ */
+int pthread_attr_setscope(pthread_attr_t *attr, int contentionscope) {
+  switch (contentionscope) {
+    case PTHREAD_SCOPE_SYSTEM:
+      attr->__contentionscope = contentionscope;
+      return 0;
+    case PTHREAD_SCOPE_PROCESS:
+      // Linux almost certainly doesn't support thread scoping
+      // FreeBSD has THR_SYSTEM_SCOPE but it's not implemented
+      // OpenBSD pthreads claims support but really ignores it
+      // NetBSD pthreads claims support, but really ignores it
+      // XNU sources appear to make no mention of thread scope
+      // WIN32 documentation says nothing about thread scoping
+      return ENOTSUP;
+    default:
+      return EINVAL;
+  }
 }
diff --git a/libc/thread/pthread_cleanup_pop.c b/libc/thread/pthread_cleanup_pop.c
index b9efb902e..f8bb41e0f 100644
--- a/libc/thread/pthread_cleanup_pop.c
+++ b/libc/thread/pthread_cleanup_pop.c
@@ -19,10 +19,11 @@
 #include "libc/assert.h"
 #include "libc/thread/posixthread.internal.h"
 #include "libc/thread/thread.h"
+#include "libc/thread/tls.h"
 
 void _pthread_cleanup_pop(struct _pthread_cleanup_buffer *cb, int execute) {
-  struct PosixThread *pt = (struct PosixThread *)pthread_self();
-  _npassert(cb == pt->cleanup);
+  struct PosixThread *pt = (struct PosixThread *)__get_tls()->tib_pthread;
+  _unassert(cb == pt->cleanup);
   pt->cleanup = cb->__prev;
   if (execute) {
     cb->__routine(cb->__arg);
diff --git a/libc/thread/pthread_cleanup_push.c b/libc/thread/pthread_cleanup_push.c
index 125d30c18..dd5428968 100644
--- a/libc/thread/pthread_cleanup_push.c
+++ b/libc/thread/pthread_cleanup_push.c
@@ -21,7 +21,7 @@
 
 void _pthread_cleanup_push(struct _pthread_cleanup_buffer *cb,
                            void (*routine)(void *), void *arg) {
-  struct PosixThread *pt = (struct PosixThread *)pthread_self();
+  struct PosixThread *pt = (struct PosixThread *)__get_tls()->tib_pthread;
   cb->__routine = routine;
   cb->__arg = arg;
   cb->__prev = pt->cleanup;
diff --git a/libc/thread/pthread_create.c b/libc/thread/pthread_create.c
index 27429b8f9..84df4dde6 100644
--- a/libc/thread/pthread_create.c
+++ b/libc/thread/pthread_create.c
@@ -17,6 +17,7 @@
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
 #include "libc/assert.h"
+#include "libc/calls/blocksigs.internal.h"
 #include "libc/calls/calls.h"
 #include "libc/calls/sched-sysv.internal.h"
 #include "libc/calls/state.internal.h"
@@ -97,7 +98,7 @@ static int PosixThread(void *arg, int tid) {
   // set long jump handler so pthread_exit can bring control back here
   if (!setjmp(pt->exiter)) {
     __get_tls()->tib_pthread = (pthread_t)pt;
-    sigprocmask(SIG_SETMASK, &pt->sigmask, 0);
+    _sigsetmask(pt->sigmask);
     pt->rc = pt->start_routine(pt->arg);
     // ensure pthread_cleanup_pop(), and pthread_exit() popped cleanup
     _npassert(!pt->cleanup);
@@ -325,12 +326,10 @@ static errno_t pthread_create_impl(pthread_t *thread,
 errno_t pthread_create(pthread_t *thread, const pthread_attr_t *attr,
                        void *(*start_routine)(void *), void *arg) {
   errno_t rc;
-  sigset_t blocksigs, oldsigs;
   __require_tls();
   _pthread_zombies_decimate();
-  sigfillset(&blocksigs);
-  _npassert(!sigprocmask(SIG_SETMASK, &blocksigs, &oldsigs));
-  rc = pthread_create_impl(thread, attr, start_routine, arg, oldsigs);
-  _npassert(!sigprocmask(SIG_SETMASK, &oldsigs, 0));
+  BLOCK_SIGNALS;
+  rc = pthread_create_impl(thread, attr, start_routine, arg, _SigMask);
+  ALLOW_SIGNALS;
   return rc;
 }
diff --git a/libc/thread/pthread_kill.c b/libc/thread/pthread_kill.c
index e6f0ca18a..61e39716d 100644
--- a/libc/thread/pthread_kill.c
+++ b/libc/thread/pthread_kill.c
@@ -29,6 +29,7 @@
  * @raise EAGAIN if `RLIMIT_SIGPENDING` was exceeded
  * @raise EINVAL if `tid` or `sig` was invalid
  * @raise EPERM if permission was denied
+ * @asyncsignalsafe
  */
 int pthread_kill(pthread_t thread, int sig) {
   int rc, e = errno;
diff --git a/libc/thread/pthread_mutexattr_gettype.c b/libc/thread/pthread_mutexattr_gettype.c
index 6138568e9..5d1e9a8d7 100644
--- a/libc/thread/pthread_mutexattr_gettype.c
+++ b/libc/thread/pthread_mutexattr_gettype.c
@@ -23,7 +23,6 @@
  *
  * @param type will be set to one of these on success
  *     - `PTHREAD_MUTEX_NORMAL`
- *     - `PTHREAD_MUTEX_DEFAULT`
  *     - `PTHREAD_MUTEX_RECURSIVE`
  *     - `PTHREAD_MUTEX_ERRORCHECK`
  * @return 0 on success, or error on failure
diff --git a/libc/thread/pthread_self.c b/libc/thread/pthread_self.c
index 2152a3482..250cc0391 100644
--- a/libc/thread/pthread_self.c
+++ b/libc/thread/pthread_self.c
@@ -22,6 +22,7 @@
 
 /**
  * Returns current POSIX thread.
+ * @asyncsignalsafe
  */
 pthread_t pthread_self(void) {
   pthread_t t;
diff --git a/libc/thread/pthread_sigmask.c b/libc/thread/pthread_sigmask.c
index 78a1dd185..03093c8dc 100644
--- a/libc/thread/pthread_sigmask.c
+++ b/libc/thread/pthread_sigmask.c
@@ -23,6 +23,7 @@
  * Examines and/or changes blocked signals on current thread.
  *
  * @return 0 on success, or errno on error
+ * @asyncsignalsafe
  */
 int pthread_sigmask(int how, const sigset_t *set, sigset_t *old) {
   int rc, e = errno;
diff --git a/libc/thread/thread.h b/libc/thread/thread.h
index 6f2d5eda9..b38171bbc 100644
--- a/libc/thread/thread.h
+++ b/libc/thread/thread.h
@@ -31,6 +31,9 @@
 #define PTHREAD_CANCEL_DEFERRED     0
 #define PTHREAD_CANCEL_ASYNCHRONOUS 1
 
+#define PTHREAD_SCOPE_SYSTEM  0
+#define PTHREAD_SCOPE_PROCESS 1
+
 #if !(__ASSEMBLER__ + __LINKER__ + 0)
 COSMOPOLITAN_C_START_
 
@@ -89,7 +92,7 @@ typedef struct pthread_attr_s {
   char __inheritsched;
   int __schedparam;
   int __schedpolicy;
-  int __scope;
+  int __contentionscope;
   unsigned __guardsize;
   unsigned __stacksize;
   char *__stackaddr;
diff --git a/libc/time/iso8601.c b/libc/time/iso8601.c
index 8a9b40d60..ad1113a95 100644
--- a/libc/time/iso8601.c
+++ b/libc/time/iso8601.c
@@ -16,37 +16,78 @@
 │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/assert.h"
 #include "libc/time/struct/tm.h"
 #include "libc/time/time.h"
 
 /**
  * Converts timestamp to ISO-8601 formatted string.
+ *
+ * For example:
+ *
+ *     char *GetZuluTime(void) {
+ *       char *p;
+ *       struct tm tm;
+ *       struct timespec ts;
+ *       static _Thread_local int64_t last;
+ *       static _Thread_local char str[21];
+ *       clock_gettime(0, &ts);
+ *       if (ts.tv_sec != last) {
+ *         gmtime_r(&ts.tv_sec, &tm);
+ *         last = ts.tv_sec;
+ *         stpcpy(iso8601(str, &tm), "Z");
+ *       }
+ *       return str;
+ *     }
+ *
+ * Will return timestamps that look like:
+ *
+ *     2020-01-01T13:14:15Z
+ *
+ * The generated timestamp is always exactly 19 characters long. It is
+ * also always nul terminated too.
+ *
+ * This function defines no failure conditions. The results of passing
+ * timestamp values outside of the appropriate intervals is undefined.
+ *
+ * @param p is buffer with at least 20 bytes
+ * @param tm has valid gmtime_r() or localtime_r() output
+ * @return pointer to nul terminator within `p`, cf. stpcpy()
+ * @see iso8601us() for microsecond timestamps
+ * @asyncsignalsafe
+ * @threadsafe
  */
 char *iso8601(char p[hasatleast 20], struct tm *tm) {
   int x;
   x = tm->tm_year + 1900;
+  _unassert(0 <= x && x <= 9999);
   *p++ = '0' + x / 1000;
   *p++ = '0' + x / 100 % 10;
   *p++ = '0' + x / 10 % 10;
   *p++ = '0' + x % 10;
   *p++ = '-';
   x = tm->tm_mon + 1;
+  _unassert(1 <= x && x <= 12);
   *p++ = '0' + x / 10;
   *p++ = '0' + x % 10;
   *p++ = '-';
   x = tm->tm_mday;
+  _unassert(1 <= x && x <= 31);
   *p++ = '0' + x / 10;
   *p++ = '0' + x % 10;
   *p++ = 'T';
   x = tm->tm_hour;
+  _unassert(0 <= x && x <= 23);
   *p++ = '0' + x / 10;
   *p++ = '0' + x % 10;
   *p++ = ':';
   x = tm->tm_min;
+  _unassert(0 <= x && x <= 59);
   *p++ = '0' + x / 10;
   *p++ = '0' + x % 10;
   *p++ = ':';
   x = tm->tm_sec;
+  _unassert(0 <= x && x <= 60);
   *p++ = '0' + x / 10;
   *p++ = '0' + x % 10;
   *p = 0;
diff --git a/libc/time/iso8601us.c b/libc/time/iso8601us.c
new file mode 100644
index 000000000..e993be55b
--- /dev/null
+++ b/libc/time/iso8601us.c
@@ -0,0 +1,80 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2022 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/assert.h"
+#include "libc/time/struct/tm.h"
+#include "libc/time/time.h"
+
+/**
+ * Converts timestamp to ISO-8601 formatted string.
+ *
+ * For example:
+ *
+ *     char *GetTimestamp(void) {
+ *       struct timespec ts;
+ *       static _Thread_local struct tm tm;
+ *       static _Thread_local int64_t last;
+ *       static _Thread_local char str[27];
+ *       clock_gettime(0, &ts);
+ *       if (ts.tv_sec != last) {
+ *         localtime_r(&ts.tv_sec, &tm);
+ *         last = ts.tv_sec;
+ *       }
+ *       iso8601us(str, &tm, ts.tv_nsec);
+ *       return str;
+ *     }
+ *
+ * Will return timestamps that look like:
+ *
+ *     2020-01-01T13:14:15.123456
+ *
+ * The generated timestamp is always exactly 26 characters long. It is
+ * also always nul terminated too.
+ *
+ * This function defines no failure conditions. The results of passing
+ * timestamp, or nanosecond values outside their appropriate intervals
+ * is undefined.
+ *
+ * This goes 19x faster than strftime().
+ *
+ *     iso8601             l:        21c         7ns
+ *     iso8601us           l:        39c        13ns
+ *     strftime            l:       779c       252ns
+ *
+ * @param p is buffer with at least 20 bytes
+ * @param tm has valid gmtime_r() or localtime_r() output
+ * @param ns is nanosecond value associated with timestamp
+ * @return pointer to nul terminator within `p`, cf. stpcpy()
+ * @see iso8601() if microsecond resolution isn't desirable
+ * @asyncsignalsafe
+ * @threadsafe
+ */
+char *iso8601us(char p[hasatleast 27], struct tm *tm, long ns) {
+  int x;
+  p = iso8601(p, tm);
+  _unassert(0 <= ns && ns < 1000000000);
+  *p++ = '.';
+  *p++ = '0' + ns / 100000000;
+  *p++ = '0' + ns / 10000000 % 10;
+  *p++ = '0' + ns / 1000000 % 10;
+  *p++ = '0' + ns / 100000 % 10;
+  *p++ = '0' + ns / 10000 % 10;
+  *p++ = '0' + ns / 1000 % 10;
+  *p = 0;
+  return p;
+}
diff --git a/libc/time/struct/tm.h b/libc/time/struct/tm.h
index b8e411132..c682aec01 100644
--- a/libc/time/struct/tm.h
+++ b/libc/time/struct/tm.h
@@ -20,6 +20,7 @@ struct tm {
 char *asctime(const struct tm *);
 char *asctime_r(const struct tm *, char[hasatleast 26]);
 char *iso8601(char[hasatleast 20], struct tm *);
+char *iso8601us(char[hasatleast 27], struct tm *, long);
 char *strptime(const char *, const char *, struct tm *);
 int64_t mktime(struct tm *);
 int64_t timegm(struct tm *);
diff --git a/libc/time/time.mk b/libc/time/time.mk
index 840d3a4ca..dec94b996 100644
--- a/libc/time/time.mk
+++ b/libc/time/time.mk
@@ -62,7 +62,10 @@ o/$(MODE)/libc/time/localtime.o: private	\
 			-fdata-sections		\
 			-ffunction-sections
 
-o/$(MODE)/libc/time/now.o: private		\
+# we need -O3 because:
+#   we're dividing by constants
+o/$(MODE)/libc/time/iso8601.o			\
+o/$(MODE)/libc/time/iso8601us.o: private	\
 		OVERRIDE_CFLAGS +=		\
 			-O3
 
diff --git a/libc/time/xiso8601.c b/libc/time/xiso8601.c
index 3b748de9b..f8b05d14f 100644
--- a/libc/time/xiso8601.c
+++ b/libc/time/xiso8601.c
@@ -27,9 +27,7 @@
 #include "libc/time/time.h"
 #include "libc/x/x.h"
 
-/**
- * @fileoverview Timestamps in One True Format w/o toil.
- */
+// TODO(jart): DELETE
 
 static char *xiso8601_impl(struct timespec *opt_ts, int sswidth) {
   char *p;
diff --git a/libc/intrin/intrin.h b/libc/zipos/.cosmo
old mode 100755
new mode 100644
similarity index 100%
rename from libc/intrin/intrin.h
rename to libc/zipos/.cosmo
diff --git a/libc/zipos/open.c b/libc/zipos/open.c
index 333fe9814..943fda568 100644
--- a/libc/zipos/open.c
+++ b/libc/zipos/open.c
@@ -17,6 +17,7 @@
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
 #include "libc/assert.h"
+#include "libc/calls/blocksigs.internal.h"
 #include "libc/calls/calls.h"
 #include "libc/calls/internal.h"
 #include "libc/calls/state.internal.h"
@@ -188,13 +189,14 @@ static int __zipos_load(struct Zipos *zipos, size_t cf, unsigned flags,
  * Loads compressed file from αcτµαlly pδrταblε εxεcµταblε object store.
  *
  * @param uri is obtained via __zipos_parseuri()
- * @asyncsignalsafe (todo)
+ * @asyncsignalsafe
  * @threadsafe
  */
 int __zipos_open(const struct ZiposUri *name, unsigned flags, int mode) {
   int rc;
   ssize_t cf;
   struct Zipos *zipos;
+  BLOCK_SIGNALS;
   if ((flags & O_ACCMODE) == O_RDONLY) {
     if ((zipos = __zipos_get())) {
       if ((cf = __zipos_find(zipos, name)) != -1) {
@@ -208,5 +210,6 @@ int __zipos_open(const struct ZiposUri *name, unsigned flags, int mode) {
   } else {
     rc = einval();
   }
+  ALLOW_SIGNALS;
   return rc;
 }
diff --git a/libc/zipos/zipos.S b/libc/zipos/zipos.S
index acb603e11..71cb51978 100644
--- a/libc/zipos/zipos.S
+++ b/libc/zipos/zipos.S
@@ -19,8 +19,8 @@
 #include "libc/macros.internal.h"
 
 //	static_yoink this symbol for open(/zip/...) support.
-	zip_uri_support = 0
-	.globl	zip_uri_support
+	zipos = 0
+	.globl	zipos
 
 	.yoink	__zip_end
 	.yoink	__zip_start
@@ -34,3 +34,10 @@
 	.yoink	__zipos_read
 	.yoink	__zipos_stat
 	.yoink	__zipos_notat
+
+//	TODO(jart): why does corruption happen when zip has no assets?
+	.yoink	.cosmo
+
+//	deprecated: use STATIC_YOINK("zipos")
+	zip_uri_support = 0
+	.globl	zip_uri_support
diff --git a/libc/zipos/zipos.mk b/libc/zipos/zipos.mk
index a7d234281..0632b4a0d 100644
--- a/libc/zipos/zipos.mk
+++ b/libc/zipos/zipos.mk
@@ -20,7 +20,8 @@ LIBC_ZIPOS_A_SRCS =					\
 
 LIBC_ZIPOS_A_OBJS =					\
 	$(LIBC_ZIPOS_A_SRCS_S:%.S=o/$(MODE)/%.o)	\
-	$(LIBC_ZIPOS_A_SRCS_C:%.c=o/$(MODE)/%.o)
+	$(LIBC_ZIPOS_A_SRCS_C:%.c=o/$(MODE)/%.o)	\
+	o/$(MODE)/libc/zipos/.cosmo.zip.o
 
 LIBC_ZIPOS_A_CHECKS =					\
 	$(LIBC_ZIPOS_A).pkg				\
@@ -51,6 +52,10 @@ $(LIBC_ZIPOS_A).pkg:					\
 		$(LIBC_ZIPOS_A_OBJS)			\
 		$(foreach zipos,$(LIBC_ZIPOS_A_DIRECTDEPS),$($(zipos)_A).pkg)
 
+o/$(MODE)/libc/zipos/.cosmo.zip.o: private		\
+		ZIPOBJ_FLAGS +=				\
+			-B
+
 LIBC_ZIPOS_LIBS = $(foreach zipos,$(LIBC_ZIPOS_ARTIFACTS),$($(zipos)))
 LIBC_ZIPOS_SRCS = $(foreach zipos,$(LIBC_ZIPOS_ARTIFACTS),$($(zipos)_SRCS))
 LIBC_ZIPOS_HDRS = $(foreach zipos,$(LIBC_ZIPOS_ARTIFACTS),$($(zipos)_HDRS))
diff --git a/net/http/http.h b/net/http/http.h
index eb5e8d9d0..de3ab7e09 100644
--- a/net/http/http.h
+++ b/net/http/http.h
@@ -214,6 +214,7 @@ int ParseForwarded(const char *, size_t, uint32_t *, uint16_t *);
 bool IsMimeType(const char *, size_t, const char *);
 ssize_t Unchunk(struct HttpUnchunker *, char *, size_t, size_t *);
 const char *FindContentType(const char *, size_t);
+bool IsNoCompressExt(const char *, size_t);
 char *FoldHeader(struct HttpMessage *, char *, int, size_t *);
 
 COSMOPOLITAN_C_END_
diff --git a/net/http/http.mk b/net/http/http.mk
index 470883106..fbe09425c 100644
--- a/net/http/http.mk
+++ b/net/http/http.mk
@@ -57,6 +57,8 @@ o/$(MODE)/net/http/istestnetip.o: private	\
 		OVERRIDE_CFLAGS +=		\
 			-Os
 
+# we need -O3 because:
+#   we're dividing by constants
 o/$(MODE)/net/http/formathttpdatetime.o: private\
 		OVERRIDE_CFLAGS +=		\
 			-O3
diff --git a/tool/build/lib/isnocompressext.c b/net/http/isnocompressext.c
similarity index 94%
rename from tool/build/lib/isnocompressext.c
rename to net/http/isnocompressext.c
index 3f1b60be8..12d49b19d 100644
--- a/tool/build/lib/isnocompressext.c
+++ b/net/http/isnocompressext.c
@@ -1,7 +1,7 @@
 /*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
 │vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
 ╞══════════════════════════════════════════════════════════════════════════════╡
-│ Copyright 2021 Justine Alexandra Roberts Tunney                              │
+│ Copyright 2022 Justine Alexandra Roberts Tunney                              │
 │                                                                              │
 │ Permission to use, copy, modify, and/or distribute this software for         │
 │ any purpose with or without fee is hereby granted, provided that the         │
@@ -21,7 +21,7 @@
 #include "libc/macros.internal.h"
 #include "libc/str/str.h"
 #include "libc/str/tab.internal.h"
-#include "tool/build/lib/isnocompressext.h"
+#include "net/http/http.h"
 
 static const char kNoCompressExts[][8] = {
     "bz2",   //
@@ -56,13 +56,14 @@ static bool BisectNoCompressExts(uint64_t ext) {
 }
 
 bool IsNoCompressExt(const char *p, size_t n) {
-  int c;
+  int c, i;
   uint64_t w;
   if (n == -1) n = p ? strlen(p) : 0;
   if (n) {
-    for (w = 0; n--;) {
+    for (i = w = 0; n--;) {
       c = p[n] & 255;
       if (c == '.') break;
+      if (++i > 8) return false;
       w <<= 8;
       w |= kToLower[c];
     }
diff --git a/net/turfwar/.init.lua b/net/turfwar/.init.lua
new file mode 100644
index 000000000..deef6b15a
--- /dev/null
+++ b/net/turfwar/.init.lua
@@ -0,0 +1,46 @@
+-- reverse proxy for turfwar
+
+ProgramPort(443)
+ProgramTokenBucket()
+
+RELAY_HEADERS_TO_CLIENT = {
+    'Access-Control-Allow-Origin',
+    'Cache-Control',
+    'Connection',
+    'Content-Encoding',
+    'Content-Type',
+    'Last-Modified',
+    'Referrer-Policy',
+    'Vary',
+}
+
+function OnWorkerStart()
+    assert(unix.unveil(nil, nil))
+    assert(unix.pledge("stdio inet", nil, unix.PLEDGE_PENALTY_RETURN_EPERM))
+end
+
+function OnHttpRequest()
+    local status, headers, body =
+        Fetch('http://127.0.0.1' .. EscapePath(GetPath()),
+              {method = GetMethod(),
+               headers = {
+                   ['Accept'] = GetHeader('Accept'),
+                   ['Accept-Encoding'] = GetHeader('Accept-Encoding'),
+                   ['CF-IPCountry'] = GetHeader('CF-IPCountry'),
+                   ['If-Modified-Since'] = GetHeader('If-Modified-Since'),
+                   ['Referer'] = GetHeader('Referer'),
+                   ['Sec-CH-UA-Platform'] = GetHeader('Sec-CH-UA-Platform'),
+                   ['User-Agent'] = GetHeader('User-Agent'),
+                   ['X-Forwarded-For'] = FormatIp(GetClientAddr())}})
+    if status then
+        SetStatus(status)
+        for k,v in pairs(RELAY_HEADERS_TO_CLIENT) do
+            SetHeader(v, headers[v])
+        end
+        Write(body)
+    else
+        err = headers
+        Log(kLogError, "proxy failed %s" % {err})
+        ServeError(503)
+    end
+end
diff --git a/libc/intrin/getenv.greg.c b/net/turfwar/blackhole.c
similarity index 59%
rename from libc/intrin/getenv.greg.c
rename to net/turfwar/blackhole.c
index b552280c4..9f38ca0d1 100644
--- a/libc/intrin/getenv.greg.c
+++ b/net/turfwar/blackhole.c
@@ -1,7 +1,7 @@
 /*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
 │vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
 ╞══════════════════════════════════════════════════════════════════════════════╡
-│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│ Copyright 2022 Justine Alexandra Roberts Tunney                              │
 │                                                                              │
 │ Permission to use, copy, modify, and/or distribute this software for         │
 │ any purpose with or without fee is hereby granted, provided that the         │
@@ -16,62 +16,55 @@
 │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
-#include "libc/assert.h"
-#include "libc/intrin/strace.internal.h"
-#include "libc/dce.h"
+#include "libc/calls/calls.h"
 #include "libc/errno.h"
-#include "libc/log/libfatal.internal.h"
+#include "libc/intrin/bits.h"
+#include "libc/intrin/kprintf.h"
 #include "libc/runtime/runtime.h"
+#include "libc/sock/sock.h"
+#include "libc/sock/struct/sockaddr.h"
+#include "libc/str/str.h"
+#include "libc/sysv/consts/af.h"
+#include "libc/sysv/consts/ex.h"
+#include "libc/sysv/consts/sock.h"
+#include "net/http/http.h"
 
-forceinline int Identity(int c) {
-  return c;
-}
+int main(int argc, char *argv[]) {
 
-forceinline int ToUpper(int c) {
-  return 'a' <= c && c <= 'z' ? c - ('a' - 'A') : c;
-}
+  if (argc < 2) {
+    kprintf("usage: blackhole IP...\n");
+    return EX_USAGE;
+  }
 
-forceinline char *GetEnv(const char *s, int xlat(int)) {
-  char **p;
-  size_t i, j;
-  if ((p = environ)) {
-    for (i = 0; p[i]; ++i) {
-      for (j = 0;; ++j) {
-        if (!s[j]) {
-          if (p[i][j] == '=') {
-            return p[i] + j + 1;
-          }
-          break;
-        }
-        if (xlat(s[j]) != xlat(p[i][j])) {
-          break;
-        }
+  int fd;
+  struct sockaddr_un addr = {
+      AF_UNIX,
+      "/var/run/blackhole.sock",
+  };
+  if ((fd = socket(AF_UNIX, SOCK_DGRAM, 0)) == -1) {
+    kprintf("error: socket(AF_UNIX) failed: %s\n", strerror(errno));
+    return 3;
+  }
+  if (connect(fd, (struct sockaddr *)&addr, sizeof(addr)) == -1) {
+    kprintf("error: connect(%#s) failed: %s\n", addr.sun_path, strerror(errno));
+    return 4;
+  }
+
+  int rc = 0;
+  for (int i = 1; i < argc; ++i) {
+    int64_t ip;
+    char buf[4];
+    if ((ip = ParseIp(argv[i], -1)) != -1) {
+      WRITE32BE(buf, ip);
+      if (write(fd, buf, 4) == -1) {
+        kprintf("error: write() failed: %s\n", strerror(errno));
+        rc |= 2;
       }
+    } else {
+      kprintf("error: bad ipv4 address: %s\n", argv[i]);
+      rc |= 1;
     }
   }
-  return 0;
-}
 
-/**
- * Returns value of environment variable, or NULL if not found.
- *
- * Environment variables can store empty string on Unix but not Windows.
- *
- * @note should not be used after __cxa_finalize() is called
- */
-char *getenv(const char *s) {
-  char *r;
-  if (!s) return 0;
-  if (!IsWindows()) {
-    r = GetEnv(s, Identity);
-  } else {
-    r = GetEnv(s, ToUpper);
-  }
-#if SYSDEBUG
-  if (!(s[0] == 'T' && s[1] == 'Z' && !s[2])) {
-    // TODO(jart): memoize TZ or something
-    STRACE("getenv(%#s) → %#s", s, r);
-  }
-#endif
-  return r;
+  return rc;
 }
diff --git a/net/turfwar/blackholed.c b/net/turfwar/blackholed.c
new file mode 100644
index 000000000..7a3e09fda
--- /dev/null
+++ b/net/turfwar/blackholed.c
@@ -0,0 +1,448 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2022 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/assert.h"
+#include "libc/calls/blocksigs.internal.h"
+#include "libc/calls/calls.h"
+#include "libc/calls/struct/sigaction.h"
+#include "libc/calls/struct/sigset.h"
+#include "libc/calls/struct/timespec.h"
+#include "libc/dce.h"
+#include "libc/errno.h"
+#include "libc/fmt/conv.h"
+#include "libc/fmt/itoa.h"
+#include "libc/intrin/bits.h"
+#include "libc/intrin/kprintf.h"
+#include "libc/intrin/midpoint.h"
+#include "libc/intrin/safemacros.internal.h"
+#include "libc/mem/mem.h"
+#include "libc/mem/sortedints.internal.h"
+#include "libc/runtime/runtime.h"
+#include "libc/sock/sock.h"
+#include "libc/sock/struct/sockaddr.h"
+#include "libc/str/str.h"
+#include "libc/sysv/consts/af.h"
+#include "libc/sysv/consts/clock.h"
+#include "libc/sysv/consts/o.h"
+#include "libc/sysv/consts/ok.h"
+#include "libc/sysv/consts/sa.h"
+#include "libc/sysv/consts/sig.h"
+#include "libc/sysv/consts/sock.h"
+#include "libc/sysv/consts/timer.h"
+#include "libc/time/struct/tm.h"
+#include "third_party/getopt/getopt.h"
+#include "third_party/musl/passwd.h"
+
+#define LOG(FMT, ...)                                                \
+  kprintf("%s %s:%d] " FMT "\n", GetTimestamp(), __FILE__, __LINE__, \
+          ##__VA_ARGS__)
+
+#define DEFAULT_LOGNAME  "/var/log/blackhole.log"
+#define DEFAULT_PIDNAME  "/var/run/blackhole.pid"
+#define DEFAULT_SOCKNAME "/var/run/blackhole.sock"
+#define GETOPTS          "L:S:P:M:G:dh"
+#define USAGE \
+  "\
+Usage: blackholed [-hdLPSMG]\n\
+  -h            help\n\
+  -d            daemonize\n\
+  -L PATH       log file name (default: " DEFAULT_LOGNAME ")\n\
+  -P PATH       pid file name (default: " DEFAULT_PIDNAME ")\n\
+  -S PATH       socket file name (default: " DEFAULT_SOCKNAME ")\n\
+  -M MODE       socket mode bits (default: 0777)\n\
+  -G GROUP      socket group name or gid (default: n/a)\n\
+  --assimilate  change executable header to native format\n\
+  --ftrace      function call tracing\n\
+  --strace      system call tracing\n\
+\n\
+Usage:\n\
+  sudo blackholed -d   # run daemon\n\
+  blackhole 1.2.3.4    # anyone can securely ban ips\n\
+\n\
+Protocol:\n\
+  Send a 4 byte datagram to the unix socket file containing\n\
+  the IPv4 address you want banned encoded using big endian\n\
+  a.k.a. network byte order. We ignore these ips: 0.0.0.0/8\n\
+  and 127.0.0.0/8 so sending 0 to the socket is a good test\n"
+
+#define LINUX_DOCS \
+  "\n\
+Linux Requirements:\n\
+  sudo modprobe ip_tables\n\
+  sudo echo ip_tables >>/etc/modules\n\
+\n\
+Administration Notes:\n\
+  This program inserts IP bans into iptables raw prerouting, so\n\
+  the kernel won't track the TCP connections of threat actors.\n\
+  If you restart this program, then you should run\n\
+    sudo iptables -t raw -F\n\
+  to clear the IP blocks. It's a good idea to have a cron job\n\
+  restart this daemon and clear the raw table daily. Use the\n\
+    sudo iptables -t raw -L -vn\n\
+  command to list the IP addresses that have been blocked.\n\
+\n"
+
+#define BSD_DOCS \
+  "\n\
+BSD Requirements:\n\
+  kldload pf\n\
+  echo 'table <badhosts> persist' >>/etc/pf.conf\n\
+  echo 'block on em0 from <badhosts> to any' >>/etc/pf.conf\n\
+  echo 'pf_enable=\"YES\"' >>/etc/rc.conf\n\
+  echo 'pf_rules=\"/etc/pf.conf\"' >>/etc/rc.conf\n\
+  /etc/rc.d/pf start\n\
+  pfctl -t badhosts -T add 1.2.3.4\n\
+  pfctl -t badhosts -T show\n\
+\n\
+Administration Notes:\n\
+  If you restart this program, then you should run\n\
+    pfctl -t badhosts -T flush\n\
+  to clear the IP blocks. It's a good idea to have a cron job\n\
+  restart this daemon and clear the raw table daily. Use the\n\
+    pfctl -t badhosts -T show\n\
+  command to list the IP addresses that have been blocked.\n\
+\n\
+"
+
+int g_logfd;
+int g_sockmode;
+bool g_daemonize;
+uint32_t *g_myips;
+const char *g_group;
+const char *g_pfctl;
+const char *g_logname;
+const char *g_pidname;
+const char *g_sockname;
+const char *g_iptables;
+sig_atomic_t g_shutdown;
+struct SortedInts g_blocked;
+
+static wontreturn void ShowUsage(int fd, int rc) {
+  write(fd, USAGE, sizeof(USAGE) - 1);
+  if (IsLinux()) write(fd, LINUX_DOCS, sizeof(LINUX_DOCS) - 1);
+  if (IsBsd()) write(fd, BSD_DOCS, sizeof(BSD_DOCS) - 1);
+  _Exit(rc);
+}
+
+static void GetOpts(int argc, char *argv[]) {
+  int opt;
+  g_sockmode = 0777;
+  g_pidname = DEFAULT_PIDNAME;
+  g_logname = DEFAULT_LOGNAME;
+  g_sockname = DEFAULT_SOCKNAME;
+  while ((opt = getopt(argc, argv, GETOPTS)) != -1) {
+    switch (opt) {
+      case 'd':
+        g_daemonize = true;
+        break;
+      case 'S':
+        g_sockname = optarg;
+        break;
+      case 'L':
+        g_logname = emptytonull(optarg);
+        break;
+      case 'P':
+        g_pidname = emptytonull(optarg);
+        break;
+      case 'G':
+        g_group = emptytonull(optarg);
+        break;
+      case 'M':
+        g_sockmode = strtol(optarg, 0, 8) & 0777;
+        break;
+      case 'h':
+        ShowUsage(1, 0);
+      default:
+        ShowUsage(2, 64);
+    }
+  }
+}
+
+char *GetTimestamp(void) {
+  struct timespec ts;
+  static struct tm tm;
+  static int64_t last;
+  static char str[27];
+  clock_gettime(0, &ts);
+  if (ts.tv_sec != last) {
+    localtime_r(&ts.tv_sec, &tm);
+    last = ts.tv_sec;
+  }
+  iso8601us(str, &tm, ts.tv_nsec);
+  return str;
+}
+
+void OnTerm(int sig) {
+  char tmp[15];
+  LOG("got %s", strsignal_r(sig, tmp));
+  g_shutdown = sig;
+}
+
+char *FormatIp(uint32_t ip) {
+  static char ipbuf[16];
+  ksnprintf(ipbuf, sizeof(ipbuf), "%hhu.%hhu.%hhu.%hhu", ip >> 24, ip >> 16,
+            ip >> 8, ip);
+  return ipbuf;
+}
+
+void BlockIp(uint32_t ip) {
+  if (!vfork()) {
+    if (g_iptables) {
+      execve(g_iptables,
+             (char *const[]){
+                 "iptables",          //
+                 "-t", "raw",         //
+                 "-I", "PREROUTING",  //
+                 "-s", FormatIp(ip),  //
+                 "-j", "DROP",        //
+                 0,                   //
+             },
+             (char *const[]){0});
+    } else if (g_pfctl) {
+      execve(g_pfctl,
+             (char *const[]){
+                 "pfctl",           //
+                 "-t", "badhosts",  //
+                 "-T", "add",       //
+                 FormatIp(ip),      //
+                 0,                 //
+             },
+             (char *const[]){0});
+    }
+    _Exit(127);
+  }
+}
+
+void RequireRoot(void) {
+  if (geteuid()) {
+    kprintf("error: need root privileges\n");
+    ShowUsage(2, 2);
+  }
+}
+
+void ListenForTerm(void) {
+  struct sigaction sa = {.sa_handler = OnTerm};
+  _npassert(!sigaction(SIGTERM, &sa, 0));
+  _npassert(!sigaction(SIGHUP, &sa, 0));
+  _npassert(!sigaction(SIGINT, &sa, 0));
+}
+
+void AutomaticallyHarvestZombies(void) {
+  struct sigaction sa = {.sa_handler = SIG_IGN, .sa_flags = SA_NOCLDWAIT};
+  _npassert(!sigaction(SIGCHLD, &sa, 0));
+}
+
+void FindFirewall(void) {
+  if (!access("/sbin/iptables", X_OK)) {
+    g_iptables = "/sbin/iptables";
+  } else if (!access("/usr/sbin/iptables", X_OK)) {
+    g_iptables = "/usr/sbin/iptables";
+  } else if (!access("/sbin/pfctl", X_OK)) {
+    g_pfctl = "/sbin/pfctl";
+  } else {
+    kprintf("error: could not find `iptables` or `pfctl` command\n");
+    ShowUsage(2, 3);
+  }
+  errno = 0;
+}
+
+void OpenLog(void) {
+  if (!g_logname) return;
+  if (!g_daemonize) return;
+  if ((g_logfd = open(g_logname, O_WRONLY | O_APPEND | O_CREAT, 0644)) == -1) {
+    kprintf("error: open(%#s) failed: %s\n", g_logname, strerror(errno));
+    ShowUsage(2, 5);
+  }
+}
+
+void Daemonize(void) {
+  if (g_daemonize && daemon(false, false)) {
+    kprintf("error: daemon() failed: %s\n", strerror(errno));
+    ShowUsage(2, 4);
+  }
+}
+
+void UseLog(void) {
+  _npassert(dup2(g_logfd, 2) == 2);
+  if (g_logfd != 2) {
+    _npassert(!close(g_logfd));
+  }
+}
+
+void UninterruptibleSleep(int ms) {
+  struct timespec ts =
+      _timespec_add(_timespec_real(), _timespec_frommillis(ms));
+  while (clock_nanosleep(CLOCK_REALTIME, TIMER_ABSTIME, &ts, 0)) errno = 0;
+}
+
+void Unlink(const char *path) {
+  if (!path) return;
+  if (!unlink(path)) {
+    LOG("deleted %s", path);
+  } else {
+    if (errno != ENOENT) {
+      LOG("error: unlink(%#s) failed: %s", path, strerror(errno));
+    }
+    errno = 0;
+  }
+}
+
+void WritePid(void) {
+  ssize_t rc;
+  int fd, pid;
+  char buf[12] = {0};
+  if (!g_pidname) return;
+  if ((fd = open(g_pidname, O_RDWR | O_CREAT, 0644)) == -1) {
+    LOG("error: open(%#s) failed: %s", g_pidname, strerror(errno));
+    _Exit(4);
+  }
+  _npassert((rc = pread(fd, buf, 11, 0)) != -1);
+  if (rc) {
+    pid = atoi(buf);
+    LOG("killing old blackholed process %d", pid);
+    if (!kill(pid, SIGTERM)) {
+      UninterruptibleSleep(100);
+      if (kill(pid, SIGKILL)) {
+        if (errno != ESRCH) {
+          LOG("kill -KILL %s failed: %s", pid, strerror(errno));
+        }
+        errno = 0;
+      }
+    } else {
+      if (errno != ESRCH) {
+        LOG("kill -TERM %d failed: %s", pid, strerror(errno));
+      }
+      errno = 0;
+    }
+  }
+  FormatInt32(buf, getpid());
+  _npassert(!ftruncate(fd, 0));
+  _npassert((rc = pwrite(fd, buf, strlen(buf), 0)) == strlen(buf));
+  _npassert(!close(fd));
+}
+
+bool IsMyIp(uint32_t ip) {
+  uint32_t *p;
+  for (p = g_myips; *p; ++p) {
+    if (ip == *p) {
+      return true;
+    }
+  }
+  return false;
+}
+
+int main(int argc, char *argv[]) {
+
+  if (closefrom(3))
+    for (int i = 3; i < 256; ++i)  //
+      close(i);
+
+  GetOpts(argc, argv);
+  RequireRoot();
+  FindFirewall();
+  OpenLog();
+  Daemonize();
+  UseLog();
+  WritePid();
+  Unlink(g_sockname);
+
+  if (!(g_myips = GetHostIps())) {
+    LOG("failed to get host network interface addresses: %s", strerror(errno));
+  }
+
+  int server;
+  struct sockaddr_un addr = {AF_UNIX};
+  strlcpy(addr.sun_path, g_sockname, sizeof(addr.sun_path));
+  if ((server = socket(AF_UNIX, SOCK_DGRAM, 0)) == -1) {
+    LOG("error: socket(AF_UNIX) failed: %s", strerror(errno));
+    _Exit(3);
+  }
+  if (bind(server, (struct sockaddr *)&addr, sizeof(addr))) {
+    LOG("error: bind(%s) failed: %s", g_sockname, strerror(errno));
+    _Exit(4);
+  }
+  if (chmod(g_sockname, g_sockmode)) {
+    LOG("error: chmod(%s, %o) failed: %s", g_sockname, g_sockmode,
+        strerror(errno));
+    _Exit(5);
+  }
+  if (g_group) {
+    int gid;
+    struct group *g;
+    if (isdigit(*g_group)) {
+      gid = atoi(g_group);
+    } else if ((g = getgrnam(g_group))) {
+      gid = g->gr_gid;
+    } else {
+      LOG("error: group %s not found: %s", g_group, strerror(errno));
+      _Exit(6);
+    }
+    if (chown(g_sockname, -1, gid)) {
+      LOG("error: chmod(%s, -1, %o) failed: %s", g_sockname, g_sockmode,
+          strerror(errno));
+      _Exit(7);
+    }
+  }
+
+  AutomaticallyHarvestZombies();
+  ListenForTerm();
+
+  while (!g_shutdown) {
+    ssize_t rc;
+    uint32_t ip;
+    char msg[16];
+
+    if (!(rc = read(server, msg, sizeof(msg)))) {
+      LOG("error: impossible eof", strerror(errno));
+      _Exit(6);
+    } else if (rc == -1) {
+      if (errno == EINTR) {
+        errno = 0;
+        continue;
+      }
+      LOG("error: read failed: %s", strerror(errno));
+      continue;
+    } else if (rc != 4) {
+      LOG("error: read unexpected size of %ld: %s", rc, strerror(errno));
+      continue;
+    }
+
+    BLOCK_SIGNALS;
+
+    if ((ip = READ32BE(msg))) {
+      if (IsMyIp(ip) ||                       // nics
+          (ip & 0xff000000) == 0x00000000 ||  // 0.0.0.0/8
+          (ip & 0xff000000) == 0x7f000000) {  // 127.0.0.0/8
+        LOG("won't block %s", FormatIp(ip));
+      } else if (InsertInt(&g_blocked, ip, true)) {
+        BlockIp(ip);
+        LOG("blocked %s", FormatIp(ip));
+      } else {
+        LOG("already blocked %s", FormatIp(ip));
+      }
+    }
+
+    ALLOW_SIGNALS;
+  }
+
+  if (g_shutdown == SIGINT ||  //
+      g_shutdown == SIGHUP) {
+    Unlink(g_sockname);
+    Unlink(g_pidname);
+  }
+}
diff --git a/net/turfwar/blackholed.sh b/net/turfwar/blackholed.sh
new file mode 100755
index 000000000..053defc1a
--- /dev/null
+++ b/net/turfwar/blackholed.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+make -j16 o//net/turfwar/blackholed.elf &&
+sudo chown root o//net/turfwar/blackholed.elf &&
+sudo chmod 06755 o//net/turfwar/blackholed.elf &&
+exec o//net/turfwar/blackholed.elf
diff --git a/net/turfwar/turfwar.c b/net/turfwar/turfwar.c
index 70f87c5fa..43a71df8c 100644
--- a/net/turfwar/turfwar.c
+++ b/net/turfwar/turfwar.c
@@ -90,7 +90,7 @@
 
 #define PORT               8080   // default server listening port
 #define CPUS               64     // number of cpus to actually use
-#define WORKERS            100    // size of http client thread pool
+#define WORKERS            500    // size of http client thread pool
 #define SUPERVISE_MS       1000   // how often to stat() asset files
 #define KEEPALIVE_MS       60000  // max time to keep idle conn open
 #define MELTALIVE_MS       2000   // panic keepalive under heavy load
@@ -108,7 +108,7 @@
 #define BATCH_MAX          64     // max claims to insert per transaction
 #define NICK_MAX           40     // max length of user nickname string
 #define TB_INTERVAL        1000   // millis between token replenishes
-#define TB_CIDR            22     // token bucket cidr specificity
+#define TB_CIDR            24     // token bucket cidr specificity
 #define SOCK_MAX           100    // max length of socket queue
 #define MSG_BUF            512    // small response lookaside
 
@@ -233,6 +233,14 @@ struct Asset {
   char lastmodified[32];
 };
 
+struct Blackhole {
+  struct sockaddr_un addr;
+  int fd;
+} g_blackhole = {{
+    AF_UNIX,
+    "/var/run/blackhole.sock",
+}};
+
 // cli flags
 bool g_integrity;
 bool g_daemonize;
@@ -248,6 +256,7 @@ atomic_int g_connections;
 nsync_note g_shutdown[3];
 
 // whitebox metrics
+atomic_long g_banned;
 atomic_long g_accepts;
 atomic_long g_dbfails;
 atomic_long g_proxied;
@@ -401,6 +410,19 @@ int DbPrepare(sqlite3 *db, sqlite3_stmt **stmt, const char *sql) {
   return sqlite3_prepare_v2(db, sql, -1, stmt, 0);
 }
 
+bool Blackhole(uint32_t ip) {
+  char buf[4];
+  WRITE32BE(buf, ip);
+  if (sendto(g_blackhole.fd, buf, 4, 0, (struct sockaddr *)&g_blackhole.addr,
+             sizeof(g_blackhole.addr)) == 4) {
+    return true;
+  } else {
+    kprintf("error: sendto(/var/run/blackhole.sock) failed: %s\n",
+            strerror(errno));
+    return false;
+  }
+}
+
 // validates name registration validity
 bool IsValidNick(const char *s, size_t n) {
   size_t i;
@@ -674,10 +696,11 @@ void ServeStatusz(int client, char *outbuf) {
               g_messages / MAX(1, _timespec_sub(now, g_started).tv_sec));
   p = Statusz(p, "started", g_started.tv_sec);
   p = Statusz(p, "now", now.tv_sec);
+  p = Statusz(p, "messages", g_messages);
   p = Statusz(p, "connections", g_connections);
+  p = Statusz(p, "banned", g_banned);
   p = Statusz(p, "workers", g_workers);
   p = Statusz(p, "accepts", g_accepts);
-  p = Statusz(p, "messages", g_messages);
   p = Statusz(p, "dbfails", g_dbfails);
   p = Statusz(p, "proxied", g_proxied);
   p = Statusz(p, "memfails", g_memfails);
@@ -759,8 +782,8 @@ void *ListenWorker(void *arg) {
     }
     if (!AddClient(&g_clients, &client, WaitFor(ACCEPT_DEADLINE_MS))) {
       ++g_rejected;
-      LOG("502 Accept Queue Full\n");
-      Write(client.sock, "HTTP/1.1 502 Accept Queue Full\r\n"
+      LOG("503 Accept Queue Full\n");
+      Write(client.sock, "HTTP/1.1 503 Accept Queue Full\r\n"
                          "Content-Type: text/plain\r\n"
                          "Connection: close\r\n"
                          "\r\n"
@@ -834,6 +857,9 @@ void *HttpWorker(void *arg) {
       ++g_messages;
       ++g_worker[id].msgcount;
 
+      ipv6 = false;
+      ip = clientip;
+
       // get client address from frontend
       if (HasHeader(kHttpXForwardedFor)) {
         if (!IsLoopbackIp(clientip) &&  //
@@ -861,17 +887,21 @@ void *HttpWorker(void *arg) {
         ip = clientip;
         ++g_unproxied;
       }
+
       ksnprintf(ipbuf, sizeof(ipbuf), "%hhu.%hhu.%hhu.%hhu", ip >> 24, ip >> 16,
                 ip >> 8, ip);
 
-      if ((tok = AcquireToken(g_tok.b, ip, TB_CIDR)) < 64) {
-        if (tok > 8) {
+      if (!ipv6 && (tok = AcquireToken(g_tok.b, ip, TB_CIDR)) < 32) {
+        if (tok > 4) {
           LOG("%s rate limiting client\n", ipbuf, msg->version);
           Write(client.sock, "HTTP/1.1 429 Too Many Requests\r\n"
                              "Content-Type: text/plain\r\n"
                              "Connection: close\r\n"
                              "\r\n"
                              "429 Too Many Requests\n");
+        } else {
+          Blackhole(ip);
+          ++g_banned;
         }
         ++g_ratelimits;
         break;
@@ -1113,8 +1143,8 @@ void *HttpWorker(void *arg) {
             sent = write(client.sock, outbuf, p - outbuf);
             break;
           } else {
-            LOG("%s: 502 Claims Queue Full\n", ipbuf);
-            Write(client.sock, "HTTP/1.1 502 Claims Queue Full\r\n"
+            LOG("%s: 503 Claims Queue Full\n", ipbuf);
+            Write(client.sock, "HTTP/1.1 503 Claims Queue Full\r\n"
                                "Content-Type: text/plain\r\n"
                                "Connection: close\r\n"
                                "\r\n"
@@ -1793,6 +1823,15 @@ int main(int argc, char *argv[]) {
   CHECK_EQ(0, chdir("/opt/turfwar"));
   putenv("TMPDIR=/opt/turfwar/tmp");
 
+  if ((g_blackhole.fd = socket(AF_UNIX, SOCK_DGRAM | SOCK_NONBLOCK, 0)) == -1) {
+    kprintf("error: socket(AF_UNIX) failed: %s\n", strerror(errno));
+    _Exit(3);
+  }
+  if (!Blackhole(0)) {
+    kprintf("redbean isn't able to protect your kernel from level 4 ddos\n");
+    kprintf("please run the blackholed program, see https://justine.lol/\n");
+  }
+
   // the power to serve
   if (g_daemonize) {
     if (fork() > 0) _Exit(0);
diff --git a/net/turfwar/turfwar.mk b/net/turfwar/turfwar.mk
index 30aa0130b..b6e6a6e71 100644
--- a/net/turfwar/turfwar.mk
+++ b/net/turfwar/turfwar.mk
@@ -9,7 +9,8 @@ NET_TURFWAR_OBJS =					\
 	$(NET_TURFWAR_SRCS:%.c=o/$(MODE)/%.o)
 
 NET_TURFWAR_COMS =					\
-	$(NET_TURFWAR_SRCS:%.c=o/$(MODE)/%.com)
+	$(NET_TURFWAR_SRCS:%.c=o/$(MODE)/%.com)		\
+	o/$(MODE)/net/turfwar/turfbean.com
 
 NET_TURFWAR_BINS =					\
 	$(NET_TURFWAR_COMS)				\
@@ -33,6 +34,7 @@ NET_TURFWAR_DIRECTDEPS =				\
 	LIBC_X						\
 	NET_HTTP					\
 	THIRD_PARTY_GETOPT				\
+	THIRD_PARTY_MUSL				\
 	THIRD_PARTY_NSYNC				\
 	THIRD_PARTY_NSYNC_MEM				\
 	THIRD_PARTY_SQLITE3				\
@@ -53,6 +55,30 @@ o/$(MODE)/net/turfwar/%.com.dbg:			\
 		$(APE_NO_MODIFY_SELF)
 	@$(APELINK)
 
+o/$(MODE)/net/turfwar/turfbean.com.dbg:			\
+		$(TOOL_NET_DEPS)			\
+		o/$(MODE)/tool/net/redbean.o		\
+		$(TOOL_NET_REDBEAN_LUA_MODULES)		\
+		o/$(MODE)/tool/net/net.pkg		\
+		o/$(MODE)/net/turfwar/.init.lua.zip.o	\
+		o/$(MODE)/tool/net/redbean.png.zip.o	\
+		o/$(MODE)/tool/net/favicon.ico.zip.o	\
+		$(CRT)					\
+		$(APE_NO_MODIFY_SELF)
+	@$(APELINK)
+
+o/$(MODE)/net/turfwar/turfbean.com:			\
+		o/$(MODE)/net/turfwar/turfbean.com.dbg	\
+		o/$(MODE)/third_party/zip/zip.com	\
+		o/$(MODE)/tool/build/symtab.com
+	@$(MAKE_OBJCOPY)
+	@$(MAKE_SYMTAB_CREATE)
+	@$(MAKE_SYMTAB_ZIP)
+
+o/$(MODE)/net/turfwar/.init.lua.zip.o: private		\
+		ZIPOBJ_FLAGS +=				\
+			-B
+
 $(NET_TURFWAR_OBJS):					\
 		$(BUILD_FILES)				\
 		net/turfwar/turfwar.mk
diff --git a/test/libc/calls/access_test.c b/test/libc/calls/access_test.c
index be795f213..fe110c374 100644
--- a/test/libc/calls/access_test.c
+++ b/test/libc/calls/access_test.c
@@ -36,7 +36,7 @@ void SetUpOnce(void) {
 
 TEST(access, efault) {
   ASSERT_SYS(EFAULT, -1, access(0, F_OK));
-  if (IsWindows() && !IsAsan()) return;  // not possible
+  if (IsWindows() || !IsAsan()) return;  // not possible
   ASSERT_SYS(EFAULT, -1, access((void *)77, F_OK));
 }
 
diff --git a/test/libc/calls/chdir_test.c b/test/libc/calls/chdir_test.c
index 9fb7f5043..d02f73bec 100644
--- a/test/libc/calls/chdir_test.c
+++ b/test/libc/calls/chdir_test.c
@@ -30,7 +30,7 @@ void SetUpOnce(void) {
 
 TEST(chdir, efault) {
   ASSERT_SYS(EFAULT, -1, chdir(0));
-  if (IsWindows() && !IsAsan()) return;  // not possible
+  if (IsWindows() || !IsAsan()) return;  // not possible
   ASSERT_SYS(EFAULT, -1, chdir((void *)77));
 }
 
diff --git a/test/libc/calls/lock2_test.c b/test/libc/calls/lock2_test.c
new file mode 100644
index 000000000..a472513d3
--- /dev/null
+++ b/test/libc/calls/lock2_test.c
@@ -0,0 +1,168 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2022 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/calls/calls.h"
+#include "libc/calls/struct/flock.h"
+#include "libc/calls/struct/sigaction.h"
+#include "libc/calls/struct/sigset.h"
+#include "libc/errno.h"
+#include "libc/sysv/consts/at.h"
+#include "libc/sysv/consts/f.h"
+#include "libc/sysv/consts/o.h"
+#include "libc/sysv/consts/sig.h"
+#include "libc/testlib/subprocess.h"
+#include "libc/testlib/testlib.h"
+
+char testlib_enable_tmp_setup_teardown;
+
+TEST(lock, wholeFile) {
+  char buf[512];
+  ASSERT_SYS(0, 3, open("db", O_RDWR | O_CREAT | O_EXCL, 0644));
+  ASSERT_SYS(0, 0, fcntl(3, F_SETLK, &(struct flock){.l_type = F_RDLCK}));
+  ASSERT_SYS(0, 0, fcntl(3, F_SETLK, &(struct flock){.l_type = F_UNLCK}));
+  ASSERT_SYS(0, 0, close(3));
+}
+
+TEST(lock, testUpgradeFromReadToWriteLock) {
+  char buf[512];
+  ASSERT_SYS(0, 3, open("db", O_RDWR | O_CREAT | O_EXCL, 0644));
+  ASSERT_SYS(0, 0,
+             fcntl(3, F_SETLK,
+                   &(struct flock){
+                       .l_type = F_RDLCK,
+                       .l_start = 0x40000000,
+                       .l_len = 1,
+                   }));
+  ASSERT_SYS(0, 0,
+             fcntl(3, F_SETLK,
+                   &(struct flock){
+                       .l_type = F_WRLCK,
+                       .l_start = 0x40000000,
+                       .l_len = 1,
+                   }));
+  ASSERT_SYS(0, 0, close(3));
+}
+
+TEST(lock, testUpgradeWriteToWriteLock) {
+  char buf[512];
+  ASSERT_SYS(0, 3, open("db", O_RDWR | O_CREAT | O_EXCL, 0644));
+  ASSERT_SYS(0, 0,
+             fcntl(3, F_SETLK,
+                   &(struct flock){
+                       .l_type = F_WRLCK,
+                       .l_start = 0x40000000,
+                       .l_len = 1,
+                   }));
+  ASSERT_SYS(0, 0,
+             fcntl(3, F_SETLK,
+                   &(struct flock){
+                       .l_type = F_WRLCK,
+                       .l_start = 0x40000000,
+                       .l_len = 1,
+                   }));
+  ASSERT_SYS(0, 0, close(3));
+}
+
+TEST(lock, unlockEverything_unlocksSmallerRanges) {
+  int fd, pi[2];
+  char buf[8] = {0};
+  ASSERT_SYS(0, 3, creat("db", 0644));
+  ASSERT_SYS(0, 0, close(3));
+  ASSERT_SYS(0, 0, pipe(pi));
+  SPAWN(fork);
+  ASSERT_SYS(0, 5, open("db", O_RDWR));
+  ASSERT_SYS(0, 0, close(4));
+  ASSERT_SYS(0, 8, read(3, buf, 8));
+  ASSERT_SYS(0, 0, close(3));
+  ASSERT_SYS(0, 0,
+             fcntl(5, F_SETLK,
+                   &(struct flock){
+                       .l_type = F_WRLCK,
+                       .l_start = 0x40000000,
+                       .l_len = 1,
+                   }));
+  ASSERT_SYS(0, 0,
+             fcntl(5, F_SETLK,
+                   &(struct flock){
+                       .l_type = F_WRLCK,
+                       .l_start = 0x40000005,
+                       .l_len = 1,
+                   }));
+  ASSERT_SYS(0, 0, close(5));
+  PARENT();
+  ASSERT_SYS(0, 0, close(3));
+  ASSERT_NE(-1, (fd = open("db", O_RDWR)));
+  ASSERT_SYS(0, 0,
+             fcntl(fd, F_SETLK,
+                   &(struct flock){
+                       .l_type = F_WRLCK,
+                       .l_start = 0x40000000,
+                       .l_len = 1,
+                   }));
+  ASSERT_SYS(0, 0,
+             fcntl(fd, F_SETLK,
+                   &(struct flock){
+                       .l_type = F_WRLCK,
+                       .l_start = 0x40000005,
+                       .l_len = 1,
+                   }));
+  ASSERT_SYS(0, 0,
+             fcntl(fd, F_SETLK,
+                   &(struct flock){
+                       .l_type = F_UNLCK,
+                   }));
+  ASSERT_SYS(0, 8, write(4, buf, 8));
+  ASSERT_SYS(0, 0, close(4));
+  WAIT(exit, 0);
+  ASSERT_SYS(0, 0, close(fd));
+}
+
+TEST(lock, close_releasesLocks) {
+  int fd, pi[2];
+  char buf[8] = {0};
+  ASSERT_SYS(0, 3, creat("db", 0644));
+  ASSERT_SYS(0, 0, close(3));
+  ASSERT_SYS(0, 0, pipe(pi));
+  SPAWN(fork);
+  ASSERT_SYS(0, 5, open("db", O_RDWR));
+  ASSERT_SYS(0, 0, close(4));
+  ASSERT_SYS(0, 8, read(3, buf, 8));
+  ASSERT_SYS(0, 0, close(3));
+  ASSERT_SYS(0, 0,
+             fcntl(5, F_SETLK,
+                   &(struct flock){
+                       .l_type = F_WRLCK,
+                       .l_start = 0x40000000,
+                       .l_len = 1,
+                   }));
+  ASSERT_SYS(0, 0, close(5));
+  PARENT();
+  ASSERT_SYS(0, 0, close(3));
+  ASSERT_NE(-1, (fd = open("db", O_RDWR)));
+  ASSERT_SYS(0, 0,
+             fcntl(fd, F_SETLK,
+                   &(struct flock){
+                       .l_type = F_WRLCK,
+                       .l_start = 0x40000000,
+                       .l_len = 1,
+                   }));
+  ASSERT_SYS(0, 0, close(fd));
+  ASSERT_SYS(0, 8, write(4, buf, 8));
+  ASSERT_SYS(0, 0, close(4));
+  WAIT(exit, 0);
+}
diff --git a/test/libc/calls/lock_ofd_test.c b/test/libc/calls/lock_ofd_test.c
new file mode 100644
index 000000000..05eda094b
--- /dev/null
+++ b/test/libc/calls/lock_ofd_test.c
@@ -0,0 +1,207 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2022 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/calls/calls.h"
+#include "libc/calls/struct/flock.h"
+#include "libc/calls/syscall-sysv.internal.h"
+#include "libc/dce.h"
+#include "libc/errno.h"
+#include "libc/intrin/kprintf.h"
+#include "libc/macros.internal.h"
+#include "libc/runtime/runtime.h"
+#include "libc/sysv/consts/f.h"
+#include "libc/sysv/consts/o.h"
+#include "libc/testlib/testlib.h"
+#include "libc/thread/thread.h"
+
+/**
+ * @fileoverview Better Advisory Locks Test
+ */
+
+#define PROCESSES  8
+#define THREADS    8  // <-- THIS
+#define RATIO      3
+#define ITERATIONS 10
+
+char testlib_enable_tmp_setup_teardown;
+
+_Thread_local const char *kind;
+
+bool SupportsOfdLocks(void) {
+  int e;
+  bool r;
+  if (!IsLinux()) return false;
+  // F_OFD_* was introduced in linux 3.15
+  // getrandom() was introduced in linux 3.17
+  // testing for getrandom() should be a sure thing w/o creating an fd
+  e = errno;
+  r = !sys_getrandom(0, 0, 0);
+  errno = e;
+  return r;
+}
+
+void SetUp(void) {
+  if (!SupportsOfdLocks()) {
+    kprintf("ofd locks not supported on this system\n");
+    exit(0);
+  }
+}
+
+void Log(const char *fmt, ...) {
+#if 0
+  va_list va;
+  char b[512];
+  int i, n = sizeof(b);
+  va_start(va, fmt);
+  i = ksnprintf(b, n, "%s pid=%d tid=%d ", kind, getpid(), gettid());
+  i += kvsnprintf(b + i, MAX(0, n - i), fmt, va);
+  i += ksnprintf(b + i, MAX(0, n - i), "\n");
+  write(2, b, MIN(i, n));
+  va_end(va);
+#endif
+}
+
+void Lock(int fd, int type, long start, long len) {
+  int e;
+  struct flock lock = {
+      .l_type = type,
+      .l_whence = SEEK_SET,
+      .l_start = start,
+      .l_len = len,
+  };
+  e = errno;
+  while (fcntl(fd, F_OFD_SETLK, &lock)) {
+    ASSERT_TRUE(errno == EAGAIN || errno == EACCES);
+    errno = e;
+    Log("flock spinning on %d", fd);
+  }
+}
+
+void WriteLock(int fd, long start, long len) {
+  Lock(fd, F_WRLCK, start, len);
+  Log("acquired write lock on %d", fd);
+}
+
+void ReadLock(int fd, long start, long len) {
+  Lock(fd, F_RDLCK, start, len);
+  Log("acquired read lock on %d", fd);
+}
+
+void Unlock(int fd, long start, long len) {
+  Lock(fd, F_UNLCK, start, len);
+  Log("released lock on %d", fd);
+}
+
+void *Reader(void *arg) {
+  int i, j, fd;
+  char buf[10];
+  kind = arg;
+  ASSERT_NE(-1, (fd = open("db", O_RDONLY)));
+  for (j = 0; j < ITERATIONS; ++j) {
+    ReadLock(fd, 10, 10);
+    for (i = 0; i < 10; ++i) {
+      ASSERT_SYS(0, 1, pread(fd, buf + i, 1, 10 + i));
+      ASSERT_EQ(buf[0], buf[i]);
+    }
+    Unlock(fd, 10, 10);
+    sched_yield();
+  }
+  ASSERT_SYS(0, 0, close(fd));
+  return 0;
+}
+
+void *Writer(void *arg) {
+  int i, j, fd;
+  char buf[10];
+  kind = arg;
+  ASSERT_NE(-1, (fd = open("db", O_RDWR)));
+  for (j = 0; j < ITERATIONS; ++j) {
+    WriteLock(fd, 10, 10);
+    for (i = 0; i < 10; ++i) {
+      ASSERT_SYS(0, 1, pread(fd, buf + i, 1, 10 + i));
+      ASSERT_EQ(buf[0], buf[i]);
+    }
+    for (i = 0; i < 10; ++i) {
+      buf[i]++;
+    }
+    for (i = 0; i < 10; ++i) {
+      ASSERT_SYS(0, 1, pwrite(fd, buf + i, 1, 10 + i));
+    }
+    Unlock(fd, 10, 10);
+    sched_yield();
+  }
+  ASSERT_SYS(0, 0, close(fd));
+  return 0;
+}
+
+TEST(posixAdvisoryLocks, threadsAndProcessesFightingForLock) {
+  int i, rc, pid, fd, ws;
+  pthread_t th[THREADS + 1];
+
+  ASSERT_SYS(0, 3, creat("db", 0644));
+  ASSERT_SYS(0, 0, ftruncate(3, 30));
+  ASSERT_SYS(0, 0, close(3));
+
+  for (i = 0; i < THREADS; ++i) {
+    if (i % RATIO == 0) {
+      ASSERT_EQ(0, pthread_create(th + i, 0, Reader, "reader thread"));
+    } else {
+      ASSERT_EQ(0, pthread_create(th + i, 0, Writer, "writer thread"));
+    }
+  }
+
+  for (i = 0; i < PROCESSES; ++i) {
+    ASSERT_NE(-1, (rc = fork()));
+    if (!rc) {
+      if (i % RATIO == 0) {
+        Writer("writer process");
+      } else {
+        Reader("reader process");
+      }
+      _Exit(0);
+    }
+  }
+
+  ASSERT_NE(-1, (fd = open("db", O_RDWR)));
+  Lock(fd, F_WRLCK, 0, 10);
+  Lock(fd, F_WRLCK, 20, 10);
+
+  for (i = 0; i < THREADS; ++i) {
+    ASSERT_EQ(0, pthread_join(th[i], 0));
+  }
+
+  kind = "main process";
+  for (;;) {
+    int e = errno;
+    if ((pid = waitpid(0, &ws, 0)) != -1) {
+      if (WIFSIGNALED(ws)) {
+        Log("process %d terminated with %G", pid, WTERMSIG(ws));
+        testlib_incrementfailed();
+      } else if (WEXITSTATUS(ws)) {
+        Log("process %d exited with %d", pid, WEXITSTATUS(ws));
+        testlib_incrementfailed();
+      }
+    } else {
+      ASSERT_EQ(ECHILD, errno);
+      errno = e;
+      break;
+    }
+  }
+
+  ASSERT_SYS(0, 0, close(fd));
+}
diff --git a/test/libc/calls/lock_test.c b/test/libc/calls/lock_test.c
index c9f454a82..6b59c2f0e 100644
--- a/test/libc/calls/lock_test.c
+++ b/test/libc/calls/lock_test.c
@@ -33,7 +33,7 @@
  */
 
 #define PROCESSES  8
-#define THREADS    (IsWindows() ? 8 : 0)
+#define THREADS    0  // <-- consider F_OFD_* locks
 #define RATIO      3
 #define ITERATIONS 10
 
diff --git a/test/libc/calls/open_test.c b/test/libc/calls/open_test.c
index b04c54f3c..30e49a227 100644
--- a/test/libc/calls/open_test.c
+++ b/test/libc/calls/open_test.c
@@ -35,7 +35,7 @@ void SetUpOnce(void) {
 
 TEST(open, efault) {
   ASSERT_SYS(EFAULT, -1, open(0, O_RDONLY));
-  if (IsWindows() && !IsAsan()) return;  // not possible
+  if (IsWindows() || !IsAsan()) return;  // not possible
   ASSERT_SYS(EFAULT, -1, open((void *)77, O_RDONLY));
 }
 
diff --git a/test/libc/calls/sigaction_test.c b/test/libc/calls/sigaction_test.c
index b5d4f79db..6a78cc085 100644
--- a/test/libc/calls/sigaction_test.c
+++ b/test/libc/calls/sigaction_test.c
@@ -20,6 +20,7 @@
 #include "libc/calls/struct/rusage.h"
 #include "libc/calls/struct/sigaction.h"
 #include "libc/calls/struct/siginfo.h"
+#include "libc/calls/struct/sigset.h"
 #include "libc/calls/ucontext.h"
 #include "libc/dce.h"
 #include "libc/errno.h"
@@ -175,3 +176,27 @@ TEST(sigaction, ignoringSignalDiscardsSignal) {
   ASSERT_EQ(0, sigprocmask(SIG_UNBLOCK, &blocked, NULL));
   EXPECT_EQ(0, OnSignalCnt);
 }
+
+TEST(sigaction, autoZombieSlayer) {
+  if (IsWindows()) return;
+  int pid;
+  struct sigaction sa;
+  // make sure we're starting in expected state
+  ASSERT_SYS(0, 0, sigaction(SIGCHLD, 0, &sa));
+  ASSERT_EQ(SIG_DFL, sa.sa_handler);
+  // verify child becomes zombie
+  ASSERT_NE(-1, (pid = fork()));
+  if (!pid) _Exit(0);
+  ASSERT_SYS(0, pid, wait(0));
+  // enable automatic zombie slayer
+  sa.sa_handler = SIG_IGN;
+  sa.sa_flags = SA_NOCLDWAIT;  // seems to be optional
+  sigemptyset(&sa.sa_mask);
+  ASSERT_SYS(0, 0, sigaction(SIGCHLD, &sa, &sa));
+  // verify it works
+  ASSERT_NE(-1, (pid = fork()));
+  if (!pid) _Exit(0);
+  ASSERT_SYS(ECHILD, -1, wait(0));
+  // clean up
+  ASSERT_SYS(0, 0, sigaction(SIGCHLD, &sa, 0));
+}
diff --git a/test/libc/calls/test.mk b/test/libc/calls/test.mk
index 47cfc25f8..61ea7438d 100644
--- a/test/libc/calls/test.mk
+++ b/test/libc/calls/test.mk
@@ -117,6 +117,12 @@ o/$(MODE)/test/libc/calls/fcntl_test.com.runs:				\
 o/$(MODE)/test/libc/calls/lock_test.com.runs:				\
 		private .PLEDGE = stdio rpath wpath cpath fattr proc flock
 
+o/$(MODE)/test/libc/calls/lock2_test.com.runs:				\
+		private .PLEDGE = stdio rpath wpath cpath fattr proc flock
+
+o/$(MODE)/test/libc/calls/lock_ofd_test.com.runs:			\
+		private .PLEDGE = stdio rpath wpath cpath fattr proc flock
+
 o/$(MODE)/test/libc/calls/openbsd_test.com.runs:			\
 		private .PLEDGE = stdio rpath wpath cpath fattr proc unveil
 
diff --git a/test/libc/calls/unlinkat_test.c b/test/libc/calls/unlinkat_test.c
index d19facdaf..f194b3a05 100644
--- a/test/libc/calls/unlinkat_test.c
+++ b/test/libc/calls/unlinkat_test.c
@@ -30,7 +30,7 @@ void SetUpOnce(void) {
 
 TEST(unlink, efault) {
   ASSERT_SYS(EFAULT, -1, unlink(0));
-  if (IsWindows() && !IsAsan()) return;  // not possible
+  if (IsWindows() || !IsAsan()) return;  // not possible
   ASSERT_SYS(EFAULT, -1, unlink((void *)77));
 }
 
diff --git a/test/libc/intrin/describesigset_test.c b/test/libc/intrin/describesigset_test.c
index 47f1e377c..66c35a302 100644
--- a/test/libc/intrin/describesigset_test.c
+++ b/test/libc/intrin/describesigset_test.c
@@ -18,6 +18,7 @@
 ╚─────────────────────────────────────────────────────────────────────────────*/
 #include "libc/calls/struct/sigset.h"
 #include "libc/calls/struct/sigset.internal.h"
+#include "libc/dce.h"
 #include "libc/intrin/describeflags.internal.h"
 #include "libc/sysv/consts/sig.h"
 #include "libc/testlib/testlib.h"
@@ -25,7 +26,7 @@
 TEST(DescribeSigset, full) {
   sigset_t ss;
   sigfillset(&ss);
-  EXPECT_STREQ("~{}", DescribeSigset(0, &ss));
+  EXPECT_STREQ("~{ABRT,KILL,STOP}", DescribeSigset(0, &ss));
 }
 
 TEST(DescribeSigset, present) {
@@ -41,5 +42,9 @@ TEST(DescribeSigset, absent) {
   sigfillset(&ss);
   sigdelset(&ss, SIGINT);
   sigdelset(&ss, SIGUSR1);
-  EXPECT_STREQ("~{INT,USR1}", DescribeSigset(0, &ss));
+  if (IsBsd()) {
+    EXPECT_STREQ("~{INT,ABRT,KILL,STOP,USR1}", DescribeSigset(0, &ss));
+  } else {
+    EXPECT_STREQ("~{INT,ABRT,KILL,USR1,STOP}", DescribeSigset(0, &ss));
+  }
 }
diff --git a/test/libc/intrin/lockipc_test.c b/test/libc/intrin/lockipc_test.c
index 78402dc0d..daac676ff 100644
--- a/test/libc/intrin/lockipc_test.c
+++ b/test/libc/intrin/lockipc_test.c
@@ -19,7 +19,6 @@
 #include "libc/calls/calls.h"
 #include "libc/errno.h"
 #include "libc/intrin/bits.h"
-#include "libc/intrin/intrin.h"
 #include "libc/intrin/kprintf.h"
 #include "libc/macros.internal.h"
 #include "libc/runtime/runtime.h"
diff --git a/test/libc/intrin/lockscale_test.c b/test/libc/intrin/lockscale_test.c
index e082ad2d1..dbb465c81 100644
--- a/test/libc/intrin/lockscale_test.c
+++ b/test/libc/intrin/lockscale_test.c
@@ -19,7 +19,6 @@
 #include "libc/atomic.h"
 #include "libc/calls/calls.h"
 #include "libc/calls/struct/timespec.h"
-#include "libc/intrin/intrin.h"
 #include "libc/mem/gc.h"
 #include "libc/mem/mem.h"
 #include "libc/stdio/stdio.h"
diff --git a/test/libc/intrin/pthread_atfork_test.c b/test/libc/intrin/pthread_atfork_test.c
index d15292c5e..0d7da5e2e 100644
--- a/test/libc/intrin/pthread_atfork_test.c
+++ b/test/libc/intrin/pthread_atfork_test.c
@@ -18,7 +18,6 @@
 ╚─────────────────────────────────────────────────────────────────────────────*/
 #include "libc/calls/calls.h"
 #include "libc/dce.h"
-#include "libc/intrin/intrin.h"
 #include "libc/mem/gc.h"
 #include "libc/mem/mem.h"
 #include "libc/runtime/internal.h"
diff --git a/test/libc/intrin/putenv_test.c b/test/libc/intrin/putenv_test.c
new file mode 100644
index 000000000..f2a7c7d34
--- /dev/null
+++ b/test/libc/intrin/putenv_test.c
@@ -0,0 +1,69 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2022 Gavin Arthur Hayes                                            │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/mem/mem.h"
+#include "libc/runtime/runtime.h"
+#include "libc/str/str.h"
+#include "libc/testlib/testlib.h"
+
+TEST(putenv, test) {
+  EXPECT_EQ(0, clearenv());
+  EXPECT_EQ(0, putenv("hi=there"));
+  EXPECT_STREQ("there", getenv("hi"));
+  EXPECT_EQ(0, clearenv());
+  EXPECT_EQ(0, putenv("hi=theretwo"));
+  EXPECT_STREQ("theretwo", getenv("hi"));
+  EXPECT_EQ(0, clearenv());
+  EXPECT_EQ(0, setenv("hi", "therethree", 0));
+  EXPECT_STREQ("therethree", getenv("hi"));
+}
+
+TEST(putenv, usesProvidedMemory) {
+  char kv[32] = "hi=hello";
+  EXPECT_EQ(0, putenv(kv));
+  EXPECT_STREQ("hello", getenv("hi"));
+  strcpy(kv, "hi=there");
+  EXPECT_STREQ("there", getenv("hi"));
+  EXPECT_EQ(0, unsetenv("hi"));
+  EXPECT_EQ(0, unsetenv("hi"));
+  EXPECT_EQ(0, getenv("hi"));
+  EXPECT_EQ(0, clearenv());
+}
+
+TEST(putenv, keyonly) {
+  EXPECT_EQ(0, clearenv());
+  EXPECT_EQ(0, putenv("hi"));
+  EXPECT_STREQ("", getenv("hi"));
+  EXPECT_STREQ("hi", environ[0]);
+  EXPECT_EQ(0, environ[1]);
+  EXPECT_EQ(0, unsetenv("hi"));
+  EXPECT_EQ(0, getenv("hi"));
+  EXPECT_EQ(0, environ[0]);
+  EXPECT_EQ(0, environ[1]);
+}
+
+TEST(putenv, environ) {
+  char *s = strdup("hi=there");
+  EXPECT_EQ(0, clearenv());
+  EXPECT_EQ(0, putenv(s));
+  EXPECT_EQ(0, putenv(s));
+  EXPECT_EQ(s, environ[0]);
+  EXPECT_EQ(0, environ[1]);
+  EXPECT_EQ(0, clearenv());
+  free(s);
+}
diff --git a/test/libc/log/backtrace_test.c b/test/libc/log/backtrace_test.c
index d2a3de7a3..aa46bfe62 100644
--- a/test/libc/log/backtrace_test.c
+++ b/test/libc/log/backtrace_test.c
@@ -22,6 +22,7 @@
 #include "libc/errno.h"
 #include "libc/fmt/conv.h"
 #include "libc/intrin/asan.internal.h"
+#include "libc/intrin/kprintf.h"
 #include "libc/limits.h"
 #include "libc/log/libfatal.internal.h"
 #include "libc/log/log.h"
diff --git a/test/libc/mem/sortedints_test.c b/test/libc/mem/sortedints_test.c
new file mode 100644
index 000000000..f77f89543
--- /dev/null
+++ b/test/libc/mem/sortedints_test.c
@@ -0,0 +1,126 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2022 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/limits.h"
+#include "libc/mem/mem.h"
+#include "libc/mem/sortedints.internal.h"
+#include "libc/stdio/rand.h"
+#include "libc/str/str.h"
+#include "libc/testlib/ezbench.h"
+#include "libc/testlib/testlib.h"
+
+struct SortedInts T;
+
+void TearDown(void) {
+  free(T.p);
+  bzero(&T, sizeof(T));
+}
+
+TEST(sortedints, test) {
+  EXPECT_TRUE(InsertInt(&T, 3, false));
+  EXPECT_TRUE(InsertInt(&T, 1, false));
+  EXPECT_TRUE(InsertInt(&T, -1, false));
+  EXPECT_TRUE(InsertInt(&T, 2, false));
+  EXPECT_EQ(4, T.n);
+  EXPECT_EQ(-1, T.p[0]);
+  EXPECT_EQ(+1, T.p[1]);
+  EXPECT_EQ(+2, T.p[2]);
+  EXPECT_EQ(+3, T.p[3]);
+  EXPECT_FALSE(ContainsInt(&T, -2));
+  EXPECT_TRUE(ContainsInt(&T, -1));
+  EXPECT_FALSE(ContainsInt(&T, 0));
+  EXPECT_TRUE(ContainsInt(&T, 1));
+  EXPECT_TRUE(ContainsInt(&T, 2));
+  EXPECT_TRUE(ContainsInt(&T, 3));
+  EXPECT_FALSE(ContainsInt(&T, 4));
+}
+
+TEST(sortedints, unique) {
+  EXPECT_TRUE(InsertInt(&T, INT_MAX, true));
+  EXPECT_TRUE(InsertInt(&T, 1, true));
+  EXPECT_FALSE(InsertInt(&T, INT_MAX, true));
+  EXPECT_TRUE(InsertInt(&T, INT_MIN, true));
+  EXPECT_FALSE(InsertInt(&T, 1, true));
+  EXPECT_TRUE(InsertInt(&T, 2, true));
+  EXPECT_EQ(4, T.n);
+  EXPECT_EQ(INT_MIN, T.p[0]);
+  EXPECT_EQ(+1, T.p[1]);
+  EXPECT_EQ(+2, T.p[2]);
+  EXPECT_EQ(INT_MAX, T.p[3]);
+  EXPECT_FALSE(ContainsInt(&T, -2));
+  EXPECT_TRUE(ContainsInt(&T, INT_MIN));
+  EXPECT_FALSE(ContainsInt(&T, 0));
+  EXPECT_TRUE(ContainsInt(&T, 1));
+  EXPECT_TRUE(ContainsInt(&T, 2));
+  EXPECT_TRUE(ContainsInt(&T, INT_MAX));
+  EXPECT_FALSE(ContainsInt(&T, 4));
+  EXPECT_EQ(1, CountInt(&T, 1));
+  EXPECT_EQ(0, CountInt(&T, -5));
+}
+
+TEST(sortedints, bag) {
+  EXPECT_TRUE(InsertInt(&T, INT_MAX, false));
+  EXPECT_TRUE(InsertInt(&T, 1, false));
+  EXPECT_TRUE(InsertInt(&T, INT_MAX, false));
+  EXPECT_TRUE(InsertInt(&T, INT_MIN, false));
+  EXPECT_TRUE(InsertInt(&T, 1, false));
+  EXPECT_TRUE(InsertInt(&T, 2, false));
+  EXPECT_EQ(6, T.n);
+  EXPECT_EQ(INT_MIN, T.p[0]);
+  EXPECT_EQ(1, T.p[1]);
+  EXPECT_EQ(1, T.p[2]);
+  EXPECT_EQ(2, T.p[3]);
+  EXPECT_EQ(INT_MAX, T.p[4]);
+  EXPECT_EQ(INT_MAX, T.p[5]);
+  EXPECT_FALSE(ContainsInt(&T, -2));
+  EXPECT_TRUE(ContainsInt(&T, INT_MIN));
+  EXPECT_FALSE(ContainsInt(&T, 0));
+  EXPECT_TRUE(ContainsInt(&T, 1));
+  EXPECT_TRUE(ContainsInt(&T, 2));
+  EXPECT_TRUE(ContainsInt(&T, INT_MAX));
+  EXPECT_FALSE(ContainsInt(&T, 4));
+  EXPECT_EQ(1, CountInt(&T, INT_MIN));
+  EXPECT_EQ(2, CountInt(&T, 1));
+  EXPECT_EQ(0, CountInt(&T, -5));
+}
+
+TEST(sortedints, fuzz) {
+  for (int i = 0; i < 10000; ++i) {
+    volatile bool b;
+    volatile int y, x = lemur64();
+    InsertInt(&T, x, x & 1);
+    b = ContainsInt(&T, x);
+    b = ContainsInt(&T, -x);
+    y = CountInt(&T, x);
+  }
+  for (int i = 1; i < T.n; ++i) {
+    ASSERT_GE(T.p[i], T.p[i - 1]);
+  }
+}
+
+BENCH(sortedints, bench) {
+  volatile int x;
+  EZBENCH2("overhead", donothing, x = lemur64());
+  EZBENCH2("insert small", donothing, InsertInt(&T, lemur64(), true));
+  EZBENCH2("contains small", donothing, ContainsInt(&T, lemur64()));
+  for (int i = 0; i < 20000; ++i) {
+    InsertInt(&T, lemur64(), true);
+  }
+  EZBENCH2("insert big", donothing, InsertInt(&T, lemur64(), true));
+  EZBENCH2("contains big", donothing, ContainsInt(&T, lemur64()));
+}
diff --git a/test/libc/stdio/dirstream_test.c b/test/libc/stdio/dirstream_test.c
index bc0dfca18..5b6afc501 100644
--- a/test/libc/stdio/dirstream_test.c
+++ b/test/libc/stdio/dirstream_test.c
@@ -61,6 +61,8 @@ TEST(opendir, enotdir) {
 TEST(opendir, zipTest_fake) {
   ASSERT_NE(NULL, (dir = opendir("/zip")));
   EXPECT_NE(NULL, (ent = readdir(dir)));
+  EXPECT_STREQ(".cosmo", ent->d_name);
+  EXPECT_NE(NULL, (ent = readdir(dir)));
   EXPECT_STREQ("echo", ent->d_name);
   EXPECT_NE(NULL, (ent = readdir(dir)));
   EXPECT_STREQ("usr", ent->d_name);
@@ -68,6 +70,8 @@ TEST(opendir, zipTest_fake) {
   EXPECT_EQ(0, closedir(dir));
   ASSERT_NE(NULL, (dir = opendir("/zip/")));
   EXPECT_NE(NULL, (ent = readdir(dir)));
+  EXPECT_STREQ(".cosmo", ent->d_name);
+  EXPECT_NE(NULL, (ent = readdir(dir)));
   EXPECT_STREQ("echo", ent->d_name);
   EXPECT_NE(NULL, (ent = readdir(dir)));
   EXPECT_STREQ("usr", ent->d_name);
diff --git a/test/libc/thread/pthread_cond_signal_test.c b/test/libc/thread/pthread_cond_signal_test.c
index f72e77abd..c2aca7b4b 100644
--- a/test/libc/thread/pthread_cond_signal_test.c
+++ b/test/libc/thread/pthread_cond_signal_test.c
@@ -22,6 +22,8 @@
 #include "libc/thread/thread.h"
 #include "libc/thread/thread2.h"
 
+// TODO(jart): Can we make this test go faster on NetBSD?
+
 int pos;
 int count;
 int limit;
@@ -77,7 +79,7 @@ long Get(struct timespec *abs_deadline) {
   return v;
 }
 
-#define N 10000
+#define N 1000
 
 void *Producer(void *arg) {
   for (int i = 0; i < N; i++) {
diff --git a/test/libc/thread/pthread_rwlock_rdlock_test.c b/test/libc/thread/pthread_rwlock_rdlock_test.c
index b2e259168..c29dbcfec 100644
--- a/test/libc/thread/pthread_rwlock_rdlock_test.c
+++ b/test/libc/thread/pthread_rwlock_rdlock_test.c
@@ -17,8 +17,8 @@
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
 #include "libc/atomic.h"
-#include "libc/mem/mem.h"
 #include "libc/mem/gc.h"
+#include "libc/mem/mem.h"
 #include "libc/testlib/testlib.h"
 #include "libc/thread/spawn.h"
 #include "libc/thread/thread.h"
diff --git a/test/libc/time/iso8601_test.c b/test/libc/time/iso8601_test.c
new file mode 100644
index 000000000..5c420fa8e
--- /dev/null
+++ b/test/libc/time/iso8601_test.c
@@ -0,0 +1,51 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2022 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/testlib/ezbench.h"
+#include "libc/testlib/testlib.h"
+#include "libc/time/struct/tm.h"
+#include "libc/time/time.h"
+
+TEST(iso8601, test) {
+  char p[20];
+  struct tm tm;
+  int64_t t = 0x62820bcd;
+  gmtime_r(&t, &tm);
+  EXPECT_EQ(p + 19, iso8601(p, &tm));
+  EXPECT_STREQ("2022-05-16T08:31:09", p);
+}
+
+TEST(iso8601us, test) {
+  char p[27];
+  struct tm tm;
+  int64_t t = 0x62820bcd;
+  gmtime_r(&t, &tm);
+  EXPECT_EQ(p + 26, iso8601us(p, &tm, 1234000));
+  EXPECT_STREQ("2022-05-16T08:31:09.001234", p);
+}
+
+BENCH(iso8601, bench) {
+  char p[27];
+  struct tm tm;
+  int64_t t = 0x62820bcd;
+  gmtime_r(&t, &tm);
+  EZBENCH2("iso8601", donothing, iso8601(p, &tm));
+  EZBENCH2("iso8601us", donothing, iso8601us(p, &tm, 123456));
+  EZBENCH2("strftime", donothing,
+           strftime(p, sizeof(p), "%Y-%m-%dT%H:%M:%S", &tm));
+}
diff --git a/test/tool/build/lib/isnocompressext_test.c b/test/net/http/isnocompressext_test.c
similarity index 93%
rename from test/tool/build/lib/isnocompressext_test.c
rename to test/net/http/isnocompressext_test.c
index 7c47741cc..22766c7a9 100644
--- a/test/tool/build/lib/isnocompressext_test.c
+++ b/test/net/http/isnocompressext_test.c
@@ -1,7 +1,7 @@
 /*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
 │vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
 ╞══════════════════════════════════════════════════════════════════════════════╡
-│ Copyright 2021 Justine Alexandra Roberts Tunney                              │
+│ Copyright 2022 Justine Alexandra Roberts Tunney                              │
 │                                                                              │
 │ Permission to use, copy, modify, and/or distribute this software for         │
 │ any purpose with or without fee is hereby granted, provided that the         │
@@ -17,11 +17,12 @@
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
 #include "libc/testlib/testlib.h"
-#include "tool/build/lib/isnocompressext.h"
+#include "net/http/http.h"
 
 TEST(IsNoCompressExt, test) {
   EXPECT_TRUE(IsNoCompressExt("MP4", -1));
   EXPECT_TRUE(IsNoCompressExt("mp4", -1));
   EXPECT_FALSE(IsNoCompressExt("dog", -1));
   EXPECT_TRUE(IsNoCompressExt("dog.mp4", -1));
+  EXPECT_FALSE(IsNoCompressExt("dog.mp4mp4mp4", -1));
 }
diff --git a/test/tool/net/redbean_test.c b/test/tool/net/redbean_test.c
index b5c8c4b97..aa68c07b4 100644
--- a/test/tool/net/redbean_test.c
+++ b/test/tool/net/redbean_test.c
@@ -41,7 +41,7 @@
 #include "third_party/regex/regex.h"
 
 STATIC_YOINK("zip_uri_support");
-STATIC_YOINK("o/" MODE "/tool/net/redbean.com");
+STATIC_YOINK("o/" MODE "/test/tool/net/redbean-tester.com");
 
 char testlib_enable_tmp_setup_teardown_once;
 int port;
@@ -52,9 +52,9 @@ void SetUpOnce(void) {
   char buf[1024];
   int fdin, fdout;
   ASSERT_NE(-1, mkdir("bin", 0755));
-  ASSERT_NE(-1,
-            (fdin = open("/zip/o/" MODE "/tool/net/redbean.com", O_RDONLY)));
-  ASSERT_NE(-1, (fdout = creat("bin/redbean.com", 0755)));
+  ASSERT_NE(-1, (fdin = open("/zip/o/" MODE "/test/tool/net/redbean-tester.com",
+                             O_RDONLY)));
+  ASSERT_NE(-1, (fdout = creat("bin/redbean-tester.com", 0755)));
   for (;;) {
     ASSERT_NE(-1, (n = read(fdin, buf, sizeof(buf))));
     if (!n) break;
@@ -93,6 +93,7 @@ char *SendHttpRequest(const char *s) {
 bool Matches(const char *regex, const char *str) {
   bool r;
   regex_t re;
+  printf("%s\n", str);
   EXPECT_EQ(REG_OK, regcomp(&re, regex, 0));
   r = regexec(&re, str, 0, 0, 0) == REG_OK;
   regfree(&re);
@@ -113,14 +114,12 @@ TEST(redbean, testOptions) {
     close(0);
     open("/dev/null", O_RDWR);
     close(1);
-    dup(0);
-    close(2);
-    open("log", O_CREAT | O_TRUNC | O_WRONLY | O_APPEND, 0644);
     close(pipefds[0]);
     dup2(pipefds[1], 1);
     sigprocmask(SIG_SETMASK, &savemask, NULL);
-    execv("bin/redbean.com",
-          (char *const[]){"bin/redbean.com", "-vvszp0", "-l127.0.0.1", 0});
+    execv("bin/redbean-tester.com",
+          (char *const[]){"bin/redbean-tester.com", "-vvszXp0", "-l127.0.0.1",
+                          __strace > 0 ? "--strace" : 0, 0});
     _exit(127);
   }
   EXPECT_NE(-1, close(pipefds[1]));
@@ -139,7 +138,6 @@ TEST(redbean, testOptions) {
   EXPECT_NE(-1, kill(pid, SIGTERM));
   EXPECT_NE(-1, wait(0));
   EXPECT_NE(-1, sigprocmask(SIG_SETMASK, &savemask, 0));
-  if (g_testlib_failed) fputs(gc(xslurp("log", 0)), stderr);
 }
 
 TEST(redbean, testPipeline) {
@@ -155,13 +153,12 @@ TEST(redbean, testPipeline) {
     setpgrp();
     close(0);
     open("/dev/null", O_RDWR);
-    close(2);
-    open("log", O_CREAT | O_TRUNC | O_WRONLY | O_APPEND, 0644);
     close(pipefds[0]);
     dup2(pipefds[1], 1);
     sigprocmask(SIG_SETMASK, &savemask, NULL);
-    execv("bin/redbean.com",
-          (char *const[]){"bin/redbean.com", "-vvszp0", "-l127.0.0.1", 0});
+    execv("bin/redbean-tester.com",
+          (char *const[]){"bin/redbean-tester.com", "-vvszXp0", "-l127.0.0.1",
+                          __strace > 0 ? "--strace" : 0, 0});
     _exit(127);
   }
   EXPECT_NE(-1, close(pipefds[1]));
@@ -189,5 +186,85 @@ TEST(redbean, testPipeline) {
   EXPECT_NE(-1, kill(pid, SIGTERM));
   EXPECT_NE(-1, wait(0));
   EXPECT_NE(-1, sigprocmask(SIG_SETMASK, &savemask, 0));
-  if (g_testlib_failed) fputs(gc(xslurp("log", 0)), stderr);
+}
+
+TEST(redbean, testContentRange) {
+  if (IsWindows()) return;
+  char portbuf[16];
+  int pid, pipefds[2];
+  sigset_t chldmask, savemask;
+  sigaddset(&chldmask, SIGCHLD);
+  EXPECT_NE(-1, sigprocmask(SIG_BLOCK, &chldmask, &savemask));
+  ASSERT_NE(-1, pipe(pipefds));
+  ASSERT_NE(-1, (pid = fork()));
+  if (!pid) {
+    setpgrp();
+    close(0);
+    open("/dev/null", O_RDWR);
+    close(pipefds[0]);
+    dup2(pipefds[1], 1);
+    sigprocmask(SIG_SETMASK, &savemask, NULL);
+    execv("bin/redbean-tester.com",
+          (char *const[]){"bin/redbean-tester.com", "-vvszXp0", "-l127.0.0.1",
+                          __strace > 0 ? "--strace" : 0, 0});
+    _exit(127);
+  }
+  EXPECT_NE(-1, close(pipefds[1]));
+  EXPECT_NE(-1, read(pipefds[0], portbuf, sizeof(portbuf)));
+  port = atoi(portbuf);
+
+  EXPECT_TRUE(Matches("\
+HTTP/1.1 206 Partial Content\r\n\
+Content-Range: bytes 18-21/52\r\n\
+Content-Type: text/plain; charset=utf-8\r\n\
+Vary: Accept-Encoding\r\n\
+Last-Modified: .*\r\n\
+Accept-Ranges: bytes\r\n\
+X-Content-Type-Options: nosniff\r\n\
+Date: .*\r\n\
+Server: redbean/.*\r\n\
+Content-Length: 4\r\n\
+\r\n\
+J\n\
+K\n",
+                      gc(SendHttpRequest("GET /seekable.txt HTTP/1.1\r\n"
+                                         "Range: bytes=18-21\r\n"
+                                         "\r\n"))));
+
+  EXPECT_TRUE(Matches("\
+HTTP/1.1 416 Range Not Satisfiable\r\n\
+Content-Range: bytes \\*/52\r\n\
+Content-Type: text/plain; charset=utf-8\r\n\
+Vary: Accept-Encoding\r\n\
+Last-Modified: .*\r\n\
+Accept-Ranges: bytes\r\n\
+X-Content-Type-Options: nosniff\r\n\
+Date: .*\r\n\
+Server: redbean/.*\r\n\
+Content-Length: 0\r\n\
+\r\n",
+                      gc(SendHttpRequest("GET /seekable.txt HTTP/1.1\r\n"
+                                         "Range: bytes=-18-21\r\n"
+                                         "\r\n"))));
+
+  EXPECT_TRUE(Matches("\
+HTTP/1.1 416 Range Not Satisfiable\r\n\
+Content-Range: bytes \\*/52\r\n\
+Content-Type: text/plain; charset=utf-8\r\n\
+Vary: Accept-Encoding\r\n\
+Last-Modified: .*\r\n\
+Accept-Ranges: bytes\r\n\
+X-Content-Type-Options: nosniff\r\n\
+Date: .*\r\n\
+Server: redbean/.*\r\n\
+Content-Length: 0\r\n\
+\r\n",
+                      gc(SendHttpRequest("GET /seekable.txt HTTP/1.1\r\n"
+                                         "Range: bytes=18-60\r\n"
+                                         "\r\n"))));
+
+  EXPECT_EQ(0, close(pipefds[0]));
+  EXPECT_NE(-1, kill(pid, SIGTERM));
+  EXPECT_NE(-1, wait(0));
+  EXPECT_NE(-1, sigprocmask(SIG_SETMASK, &savemask, 0));
 }
diff --git a/test/tool/net/sqlite_test.c b/test/tool/net/sqlite_test.c
index 70c5f7255..3a827532c 100644
--- a/test/tool/net/sqlite_test.c
+++ b/test/tool/net/sqlite_test.c
@@ -31,7 +31,6 @@
 char testlib_enable_tmp_setup_teardown;
 
 void SetUpOnce(void) {
-  if (IsWindows()) exit(0);
   sqlite3_initialize();
 }
 
diff --git a/test/tool/net/test.mk b/test/tool/net/test.mk
index 67c430b9a..c4ebc5cfe 100644
--- a/test/tool/net/test.mk
+++ b/test/tool/net/test.mk
@@ -14,7 +14,7 @@ TEST_TOOL_NET_COMS = $(TEST_TOOL_NET_SRCS:%.c=o/$(MODE)/%.com)
 
 TEST_TOOL_NET_OBJS =						\
 	$(TEST_TOOL_NET_SRCS:%.c=o/$(MODE)/%.o)			\
-	o/$(MODE)/tool/net/redbean.com.zip.o
+	o/$(MODE)/test/tool/net/redbean-tester.com.zip.o
 
 TEST_TOOL_NET_BINS =						\
 	$(TEST_TOOL_NET_COMS)					\
@@ -71,6 +71,26 @@ o/$(MODE)/test/tool/net/%.com.dbg:				\
 		$(APE_NO_MODIFY_SELF)
 	@$(APELINK)
 
+o/$(MODE)/test/tool/net/redbean-tester.com.dbg:			\
+		$(TOOL_NET_DEPS)				\
+		o/$(MODE)/tool/net/redbean.o			\
+		$(TOOL_NET_REDBEAN_LUA_MODULES)			\
+		o/$(MODE)/tool/net/demo/seekable.txt.zip.o	\
+		o/$(MODE)/tool/net/net.pkg			\
+		$(CRT)						\
+		$(APE_NO_MODIFY_SELF)
+	@$(APELINK)
+
+o/$(MODE)/test/tool/net/redbean-tester.com:			\
+		o/$(MODE)/test/tool/net/redbean-tester.com.dbg	\
+		o/$(MODE)/third_party/zip/zip.com		\
+		o/$(MODE)/tool/build/symtab.com			\
+		$(TOOL_NET_REDBEAN_STANDARD_ASSETS)
+	@$(MAKE_OBJCOPY)
+	@$(MAKE_SYMTAB_CREATE)
+	@$(MAKE_SYMTAB_ZIP)
+	@$(TOOL_NET_REDBEAN_STANDARD_ASSETS_ZIP)
+
 o/$(MODE)/test/tool/net/redbean_test.com.runs:			\
 		private .PLEDGE = stdio rpath wpath cpath fattr proc inet
 
diff --git a/third_party/python/Python/sysmodule.c b/third_party/python/Python/sysmodule.c
index 9a1355244..625139b99 100644
--- a/third_party/python/Python/sysmodule.c
+++ b/third_party/python/Python/sysmodule.c
@@ -6,10 +6,10 @@
 ╚─────────────────────────────────────────────────────────────────────────────*/
 #include "libc/calls/calls.h"
 #include "libc/dce.h"
+#include "libc/mem/gc.internal.h"
 #include "libc/mem/mem.h"
 #include "libc/nt/dll.h"
 #include "libc/nt/version.h"
-#include "libc/mem/gc.internal.h"
 #include "libc/runtime/runtime.h"
 #include "libc/stdio/stdio.h"
 #include "libc/str/locale.h"
diff --git a/third_party/sqlite3/README.cosmo b/third_party/sqlite3/README.cosmo
index 7f39d179e..df74597f3 100644
--- a/third_party/sqlite3/README.cosmo
+++ b/third_party/sqlite3/README.cosmo
@@ -13,4 +13,8 @@ LICENSE
 
 LOCAL CHANGES
 
-  - Changed the fsync() code to be configured at runtime.
+  - Added `/zip/.args` file support to SQLite shell
+  - Added `--strace` system call tracing flag to SQLite shell
+  - Added `--strace` function call logging flag to SQLite shell
+  - Configured fsync() using runtime magnums rather than ifdefs
+  - Save and restore errno in some places to avoid log pollution
diff --git a/third_party/sqlite3/main.shell.c b/third_party/sqlite3/main.shell.c
index 9c64591ad..681aa77a2 100644
--- a/third_party/sqlite3/main.shell.c
+++ b/third_party/sqlite3/main.shell.c
@@ -1 +1,2 @@
+STATIC_YOINK("zipos");
 #include "third_party/sqlite3/main.c"
diff --git a/third_party/sqlite3/shell.c b/third_party/sqlite3/shell.c
index 0500f35c3..374009089 100644
--- a/third_party/sqlite3/shell.c
+++ b/third_party/sqlite3/shell.c
@@ -60,6 +60,9 @@
 #include "libc/time/time.h"
 #include "libc/runtime/runtime.h"
 #include "libc/errno.h"
+#include "libc/log/log.h"
+#include "libc/runtime/symbols.internal.h"
+
 #if SQLITE_USER_AUTHENTICATION
 #include "third_party/sqlite3/sqlite3userauth.inc"
 #endif
@@ -10728,6 +10731,8 @@ static char *cmdline_option_value(int argc, char **argv, int i){
 #  endif
 #endif
 
+STATIC_YOINK("zipos"); // for symtab
+
 int SQLITE_CDECL main(int argc, char **argv){
   char *zErrMsg = 0;
   ShellState data;
@@ -10740,7 +10745,16 @@ int SQLITE_CDECL main(int argc, char **argv){
   char **azCmd = 0;
   const char *zVfs = 0;           /* Value of -vfs command-line option */
 
+  // [jart] ensure %t symbols in strace log are symbolic
+  if (__strace > 0) {
+    GetSymbolTable();
+  }
+
+  // ShowCrashReports();
+
+  // [jart] support /zip/.args file for white labeling
   LoadZipArgs(&argc, &argv);
+
   setBinaryMode(stdin, 0);
   setvbuf(stderr, 0, _IONBF, 0); /* Make sure stderr is unbuffered */
   setvbuf(stdin, (char *)NULL, _IONBF, BUFSIZ);
diff --git a/third_party/sqlite3/sqlite3.mk b/third_party/sqlite3/sqlite3.mk
index 4d596ca2a..a1c984505 100644
--- a/third_party/sqlite3/sqlite3.mk
+++ b/third_party/sqlite3/sqlite3.mk
@@ -57,6 +57,7 @@ THIRD_PARTY_SQLITE3_A_DIRECTDEPS =					\
 	LIBC_THREAD							\
 	LIBC_TIME							\
 	LIBC_TINYMATH							\
+	LIBC_ZIPOS							\
 	THIRD_PARTY_GDTOA						\
 	THIRD_PARTY_LINENOISE						\
 	THIRD_PARTY_MUSL						\
diff --git a/third_party/zip/fileio.c b/third_party/zip/fileio.c
index 371511eaf..e350503c1 100644
--- a/third_party/zip/fileio.c
+++ b/third_party/zip/fileio.c
@@ -1934,88 +1934,6 @@ int bfcopy(n)
   return ZE_OK;
 }
 
-
-
-#ifdef NO_RENAME
-int rename(from, to)
-ZCONST char *from;
-ZCONST char *to;
-{
-    unlink(to);
-    if (link(from, to) == -1)
-        return -1;
-    if (unlink(from) == -1)
-        return -1;
-    return 0;
-}
-
-#endif /* NO_RENAME */
-
-
-#ifdef ZMEM
-
-/************************/
-/*  Function memset()   */
-/************************/
-
-/*
- * memset - for systems without it
- *  bill davidsen - March 1990
- */
-
-char *
-memset(buf, init, len)
-register char *buf;     /* buffer loc */
-register int init;      /* initializer */
-register unsigned int len;   /* length of the buffer */
-{
-    char *start;
-
-    start = buf;
-    while (len--) *(buf++) = init;
-    return(start);
-}
-
-
-/************************/
-/*  Function memcpy()   */
-/************************/
-
-char *
-memcpy(dst,src,len)             /* v2.0f */
-register char *dst, *src;
-register unsigned int len;
-{
-    char *start;
-
-    start = dst;
-    while (len--)
-        *dst++ = *src++;
-    return(start);
-}
-
-
-/************************/
-/*  Function memcmp()   */
-/************************/
-
-int
-memcmp(b1,b2,len)                     /* jpd@usl.edu -- 11/16/90 */
-register char *b1, *b2;
-register unsigned int len;
-{
-
-    if (len) do {       /* examine each byte (if any) */
-      if (*b1++ != *b2++)
-        return (*((uch *)b1-1) - *((uch *)b2-1));  /* exit when miscompare */
-    } while (--len);
-
-    return(0);          /* no miscompares, yield 0 result */
-}
-
-#endif  /* ZMEM */
-
-
 /*------------------------------------------------------------------
  * Split archives
  */
diff --git a/tool/build/lib/buildlib.mk b/tool/build/lib/buildlib.mk
index 4cdf39fe7..edf860840 100644
--- a/tool/build/lib/buildlib.mk
+++ b/tool/build/lib/buildlib.mk
@@ -49,6 +49,7 @@ TOOL_BUILD_LIB_A_DIRECTDEPS =				\
 	LIBC_TIME					\
 	LIBC_TINYMATH					\
 	LIBC_X						\
+	NET_HTTP					\
 	NET_HTTPS					\
 	THIRD_PARTY_COMPILER_RT				\
 	THIRD_PARTY_MBEDTLS				\
diff --git a/tool/build/lib/elfwriter_zip.c b/tool/build/lib/elfwriter_zip.c
index d86c4ac62..ee9ae1d97 100644
--- a/tool/build/lib/elfwriter_zip.c
+++ b/tool/build/lib/elfwriter_zip.c
@@ -20,9 +20,9 @@
 #include "libc/fmt/conv.h"
 #include "libc/limits.h"
 #include "libc/log/check.h"
+#include "libc/mem/gc.h"
 #include "libc/nexgen32e/crc32.h"
 #include "libc/nt/enum/fileflagandattributes.h"
-#include "libc/mem/gc.h"
 #include "libc/stdio/rand.h"
 #include "libc/str/str.h"
 #include "libc/sysv/consts/s.h"
@@ -30,9 +30,9 @@
 #include "libc/x/x.h"
 #include "libc/x/xasprintf.h"
 #include "libc/zip.h"
+#include "net/http/http.h"
 #include "third_party/zlib/zlib.h"
 #include "tool/build/lib/elfwriter.h"
-#include "tool/build/lib/isnocompressext.h"
 
 #define ZIP_LOCALFILE_SECTION ".zip.2."
 #define ZIP_DIRECTORY_SECTION ".zip.4."
diff --git a/tool/build/lib/isnocompressext.h b/tool/build/lib/isnocompressext.h
deleted file mode 100644
index be7bb4b7f..000000000
--- a/tool/build/lib/isnocompressext.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef COSMOPOLITAN_TOOL_BUILD_LIB_ISNOCOMPRESSEXT_H_
-#define COSMOPOLITAN_TOOL_BUILD_LIB_ISNOCOMPRESSEXT_H_
-#if !(__ASSEMBLER__ + __LINKER__ + 0)
-COSMOPOLITAN_C_START_
-
-bool IsNoCompressExt(const char *, size_t);
-
-COSMOPOLITAN_C_END_
-#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
-#endif /* COSMOPOLITAN_TOOL_BUILD_LIB_ISNOCOMPRESSEXT_H_ */
diff --git a/tool/net/counters.inc b/tool/net/counters.inc
index 4f55e94f8..f0088857d 100644
--- a/tool/net/counters.inc
+++ b/tool/net/counters.inc
@@ -2,10 +2,12 @@ C(accepterrors)
 C(acceptflakes)
 C(acceptinterrupts)
 C(acceptresets)
+C(accepts)
 C(badlengths)
 C(badmessages)
 C(badmethods)
 C(badranges)
+C(bans)
 C(closeerrors)
 C(compressedresponses)
 C(connectionshandled)
@@ -35,6 +37,7 @@ C(http11)
 C(http12)
 C(hugepayloads)
 C(identityresponses)
+C(ignores)
 C(inflates)
 C(listingrequests)
 C(loops)
@@ -57,6 +60,7 @@ C(readresets)
 C(readtimeouts)
 C(redirects)
 C(reindexes)
+C(rejects)
 C(reloads)
 C(rewrites)
 C(serveroptions)
diff --git a/tool/net/demo/.init.lua b/tool/net/demo/.init.lua
index b6dbf1658..1f0c08855 100644
--- a/tool/net/demo/.init.lua
+++ b/tool/net/demo/.init.lua
@@ -1,6 +1,9 @@
 mymodule = require "mymodule"
 sqlite3 = require "lsqlite3"
 
+-- ddos protection
+ProgramTokenBucket()
+
 -- /.init.lua is loaded at startup in redbean's main process
 HidePath('/usr/share/zoneinfo/')
 HidePath('/usr/share/ssl/')
diff --git a/tool/net/fetch.inc b/tool/net/fetch.inc
index cff031720..64b5f55e8 100644
--- a/tool/net/fetch.inc
+++ b/tool/net/fetch.inc
@@ -26,8 +26,8 @@ static int LuaFetch(lua_State *L) {
   char *key, *val, *hdr;
   size_t keylen, vallen;
   size_t urlarglen, requestlen, paylen, bodylen;
-  size_t g, i, n, hdrsize;
-  int numredirects = 0, maxredirects = 5;
+  size_t g, n, hdrsize;
+  int imethod, numredirects = 0, maxredirects = 5;
   bool followredirect = true;
   struct addrinfo hints = {.ai_family = AF_INET,
                            .ai_socktype = SOCK_STREAM,
@@ -44,7 +44,12 @@ static int LuaFetch(lua_State *L) {
     body = luaL_optlstring(L, -1, "", &bodylen);
     lua_getfield(L, 2, "method");
     // use GET by default if no method is provided
-    method = strtoupper(luaL_optstring(L, -1, kHttpMethod[kHttpGet]));
+    method = luaL_optstring(L, -1, kHttpMethod[kHttpGet]);
+    if ((imethod = GetHttpMethod(method, -1))) {
+      method = kHttpMethod[imethod];
+    } else {
+      return LuaNilError(L, "bad method");
+    }
     lua_getfield(L, 2, "followredirect");
     if (lua_isboolean(L, -1)) followredirect = lua_toboolean(L, -1);
     lua_getfield(L, 2, "maxredirects");
diff --git a/tool/net/help.txt b/tool/net/help.txt
index 8f2899fe3..d6e578096 100644
--- a/tool/net/help.txt
+++ b/tool/net/help.txt
@@ -1878,6 +1878,160 @@ FUNCTIONS
     string of unspecified format describing the error. Calls to this
     function may be wrapped in assert() if an exception is desired.
 
+  IsTrustedIp(ip:int)
+      └─→ bool
+
+    Returns true if IP address is trustworthy.
+
+    If the ProgramTrustedIp() function has NOT been called then redbean
+    will consider the networks 127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12,
+    and 192.168.0.0/16 to be trustworthy too. If ProgramTrustedIp() HAS
+    been called at some point earlier in your redbean's lifecycle, then
+    it'll trust the IPs and network subnets you specify instead.
+
+    The network interface addresses used by the host machine are always
+    considered trustworthy, e.g. 127.0.0.1. This may change soon, if we
+    decide to export a GetHostIps() API which queries your NIC devices.
+
+  ProgramTrustedIp(ip:int[, cidr:int])
+
+    Trusts an IP address or network.
+
+    This function may be used to configure the IsTrustedIp() function
+    which is how redbean determines if a client is allowed to send us
+    headers like X-Forwarded-For (cf GetRemoteAddr vs. GetClientAddr)
+    without them being ignored. Trusted IPs is also how redbean turns
+    off token bucket rate limiting selectively, so be careful. Here's
+    an example of how you could trust all of Cloudflare's IPs:
+
+        ProgramTrustedIp(ParseIp("103.21.244.0"), 22);
+        ProgramTrustedIp(ParseIp("103.22.200.0"), 22);
+        ProgramTrustedIp(ParseIp("103.31.4.0"), 22);
+        ProgramTrustedIp(ParseIp("104.16.0.0"), 13);
+        ProgramTrustedIp(ParseIp("104.24.0.0"), 14);
+        ProgramTrustedIp(ParseIp("108.162.192.0"), 18);
+        ProgramTrustedIp(ParseIp("131.0.72.0"), 22);
+        ProgramTrustedIp(ParseIp("141.101.64.0"), 18);
+        ProgramTrustedIp(ParseIp("162.158.0.0"), 15);
+        ProgramTrustedIp(ParseIp("172.64.0.0"), 13);
+        ProgramTrustedIp(ParseIp("173.245.48.0"), 20);
+        ProgramTrustedIp(ParseIp("188.114.96.0"), 20);
+        ProgramTrustedIp(ParseIp("190.93.240.0"), 20);
+        ProgramTrustedIp(ParseIp("197.234.240.0"), 22);
+        ProgramTrustedIp(ParseIp("198.41.128.0"), 17);
+
+    Although you might want consider trusting redbean's open source
+    freedom embracing solution to DDOS protection instead!
+
+  ProgramTokenBucket([replenish:num, cidr:int, reject:int, ignore:int, ban:int])
+
+    Enables DDOS protection.
+
+    Imagine you have 2**32 buckets, one for each IP address. Each bucket
+    can hold about 127 tokens. Every second a background worker puts one
+    token in each bucket. When a TCP client socket is opened, it takes a
+    token from its bucket, and then proceeds. If the bucket holds only a
+    third of its original tokens, then redbean sends them a 429 warning.
+    If the client ignores this warning and keeps sending requests, until
+    there's no tokens left, then the banhammer finally comes down.
+
+    This model of network rate limiting generously lets people "burst" a
+    tiny bit. For example someone might get a strong craving for content
+    and smash the reload button in Chrome 64 times in a fow seconds. But
+    since the client only get 1 new token per second, they'd better cool
+    their heels for a few minutes after doing that. This amount of burst
+    can be altered by choosing the `reject` / `ignore` / `ban` threshold
+    arguments. For example, if the `reject` parameter is set to 126 then
+    no bursting is allowed, which probably isn't a good idea.
+
+    redbean is programmed to acquire a token immediately after accept()
+    is called from the main server process, which is well before fork()
+    or read() or any Lua code happens. redbean then takes action, based
+    on the token count, which can be accept / reject / ignore / ban. If
+    redbean determines a ban is warrented, then 4-byte datagram is sent
+    to the unix domain socket `/var/run/blackhole.sock` which should be
+    operated using the blackholed program we distribute separately.
+
+    The trick redbean uses on Linux for example is insert rules in your
+    raw prerouting table. redbean is very fast at the application layer
+    so the biggest issue we've encountered in production is are kernels
+    themselves, and programming the raw prerouting table dynamically is
+    how we solved that.
+
+    `replenish` is the number of times per second a token should be
+    added to each bucket. The default value is 1 which means one token
+    is granted per second to all buckets. The minimum value is 1/3600
+    which means once per hour. The maximum value for this setting is
+    1e6, which means once every microsecond.
+
+    `cidr` is the specificity of judgement.  Since creating 2^32 buckets
+    would need 4GB of RAM, redbean defaults this value to 24 which means
+    filtering applies to class c network blocks (i.e. x.x.x.*), and your
+    token buckets only take up 2^24 bytes of RAM (16MB). This can be set
+    to any number on the inclusive interval [8,32], where having a lower
+    number means you use less ram/cpu, but splash damage applies more to
+    your clients; whereas higher numbers means more ram/cpu usage, while
+    ensuring rate limiting only applies to specific compromised actors.
+
+    `reject` is the token count or treshold at which redbean should send
+    429 Too Many Request warnings to the client. Permitted values can be
+    anywhere between -1 and 126 inclusively. The default value is 30 and
+    -1 means disable to disable (assuming AcquireToken() will be used).
+
+    `ignore` is the token count or treshold, at which redbean should try
+    simply ignoring clients and close the connection without logging any
+    kind of warning, and without sending any response. The default value
+    for this setting is `MIN(reject / 2, 15)`. This must be less than or
+    equal to the `reject` setting. Allowed values are [-1,126] where you
+    can use -1 as a means of disabling `ignore`.
+
+    `ban` is the token count at which redbean should report IP addresses
+    to the blackhole daemon via a unix-domain socket datagram so they'll
+    get banned in the kernel routing tables. redbean's default value for
+    this setting is `MIN(ignore / 10, 1)`. Permitted values are [-1,126]
+    where -1 may be used as a means of disabling the `ban` feature.
+
+    This function throws an exception if the constraints described above
+    are not the case. Warnings are logged should redbean fail to connect
+    to the blackhole daemon, assuming it hasn't been disabled. It's safe
+    to use load balancing tools when banning is enabled, since you can't
+    accidentally ban your own network interface addresses, loopback ips,
+    or ProgramTrustedIp() addresses where these rate limits don't apply.
+
+    It's assumed will be called from the .init.lua global scope although
+    it could be used in interpreter mode, or from a forked child process
+    in which case the only processes that'll have ability to use it will
+    be that same process, and any descendent processes. This function is
+    only able to be called once.
+
+    This feature is not available in unsecure mode.
+
+  AcquireToken([ip:uint32])
+      └─→ int8
+
+    Atomically acquires token.
+
+    This routine atomically acquires a single token for an `ip` address.
+    The return value is the token count before the subtraction happened.
+    No action is taken based on the count, since the caller will decide.
+
+    `ip` should be an IPv4 address and this defaults to GetClientAddr(),
+    although other interpretations of its meaning are possible.
+
+    Your token buckets are stored in shared memory so this can be called
+    from multiple forked processes. which operate on the same values.
+
+  CountTokens([ip:uint32])
+      └─→ int8
+
+    Counts number of tokens in bucket.
+
+    This function is the same as AcquireToken() except no subtraction is
+    performed, i.e. no token is taken.
+
+    `ip` should be an IPv4 address and this defaults to GetClientAddr(),
+    although other interpretations of its meaning are possible.
+
 
 ────────────────────────────────────────────────────────────────────────────────
 CONSTANTS
diff --git a/tool/net/redbean.c b/tool/net/redbean.c
index 2978cf151..1f5ca6b41 100644
--- a/tool/net/redbean.c
+++ b/tool/net/redbean.c
@@ -16,6 +16,7 @@
 │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
 │ PERFORMANCE OF THIS SOFTWARE.                                                │
 ╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/assert.h"
 #include "libc/atomic.h"
 #include "libc/calls/calls.h"
 #include "libc/calls/ioctl.h"
@@ -25,8 +26,10 @@
 #include "libc/calls/struct/iovec.h"
 #include "libc/calls/struct/rusage.h"
 #include "libc/calls/struct/sigaction.h"
+#include "libc/calls/struct/sigset.h"
 #include "libc/calls/struct/stat.h"
 #include "libc/calls/struct/termios.h"
+#include "libc/calls/struct/timespec.h"
 #include "libc/dce.h"
 #include "libc/dns/dns.h"
 #include "libc/dns/hoststxt.h"
@@ -35,8 +38,8 @@
 #include "libc/fmt/conv.h"
 #include "libc/fmt/itoa.h"
 #include "libc/intrin/atomic.h"
+#include "libc/intrin/bits.h"
 #include "libc/intrin/bsr.h"
-#include "libc/intrin/kprintf.h"
 #include "libc/intrin/likely.h"
 #include "libc/intrin/nomultics.internal.h"
 #include "libc/intrin/safemacros.internal.h"
@@ -62,13 +65,16 @@
 #include "libc/sock/goodsocket.internal.h"
 #include "libc/sock/sock.h"
 #include "libc/sock/struct/pollfd.h"
+#include "libc/sock/struct/sockaddr.h"
 #include "libc/stdio/append.h"
 #include "libc/stdio/hex.internal.h"
 #include "libc/stdio/rand.h"
 #include "libc/stdio/stdio.h"
 #include "libc/str/slice.h"
+#include "libc/str/str.h"
 #include "libc/str/strwidth.h"
 #include "libc/sysv/consts/af.h"
+#include "libc/sysv/consts/clock.h"
 #include "libc/sysv/consts/clone.h"
 #include "libc/sysv/consts/dt.h"
 #include "libc/sysv/consts/ex.h"
@@ -88,6 +94,7 @@
 #include "libc/sysv/consts/sig.h"
 #include "libc/sysv/consts/sock.h"
 #include "libc/sysv/consts/termios.h"
+#include "libc/sysv/consts/timer.h"
 #include "libc/sysv/consts/w.h"
 #include "libc/sysv/errfuns.h"
 #include "libc/thread/spawn.h"
@@ -99,6 +106,7 @@
 #include "net/http/escape.h"
 #include "net/http/http.h"
 #include "net/http/ip.h"
+#include "net/http/tokenbucket.h"
 #include "net/http/url.h"
 #include "net/https/https.h"
 #include "third_party/getopt/getopt.h"
@@ -334,13 +342,30 @@ static struct Assets {
   } * p;
 } assets;
 
-static struct ProxyIps {
+static struct TrustedIps {
   size_t n;
-  struct ProxyIp {
+  struct TrustedIp {
     uint32_t ip;
     uint32_t mask;
   } * p;
-} proxyips;
+} trustedips;
+
+struct TokenBucket {
+  signed char cidr;
+  signed char reject;
+  signed char ignore;
+  signed char ban;
+  struct timespec replenish;
+  union {
+    atomic_schar *b;
+    atomic_uint_fast64_t *w;
+  };
+} tokenbucket;
+
+struct Blackhole {
+  struct sockaddr_un addr;
+  int fd;
+} blackhole;
 
 static struct Shared {
   int workers;
@@ -467,6 +492,7 @@ static char gzip_footer[8];
 static long maxpayloadsize;
 static const char *pidpath;
 static const char *logpath;
+static uint32_t *interfaces;
 static const char *histpath;
 static struct pollfd *polls;
 static size_t payloadlength;
@@ -858,19 +884,27 @@ static void ProgramRedirectArg(int code, const char *s) {
   ProgramRedirect(code, s, p - s, p + 1, n - (p - s + 1));
 }
 
-static void TrustProxy(uint32_t ip, int cidr) {
+static void ProgramTrustedIp(uint32_t ip, int cidr) {
   uint32_t mask;
   mask = 0xffffffffu << (32 - cidr);
-  proxyips.p = xrealloc(proxyips.p, ++proxyips.n * sizeof(*proxyips.p));
-  proxyips.p[proxyips.n - 1].ip = ip;
-  proxyips.p[proxyips.n - 1].mask = mask;
+  trustedips.p = xrealloc(trustedips.p, ++trustedips.n * sizeof(*trustedips.p));
+  trustedips.p[trustedips.n - 1].ip = ip;
+  trustedips.p[trustedips.n - 1].mask = mask;
 }
 
-static bool IsTrustedProxy(uint32_t ip) {
+static bool IsTrustedIp(uint32_t ip) {
   int i;
-  if (proxyips.n) {
-    for (i = 0; i < proxyips.n; ++i) {
-      if ((ip & proxyips.p[i].mask) == proxyips.p[i].ip) {
+  uint32_t *p;
+  if (interfaces) {
+    for (p = interfaces; *p; ++p) {
+      if (ip == *p) {
+        return true;
+      }
+    }
+  }
+  if (trustedips.n) {
+    for (i = 0; i < trustedips.n; ++i) {
+      if ((ip & trustedips.p[i].mask) == trustedips.p[i].ip) {
         return true;
       }
     }
@@ -909,7 +943,7 @@ static inline int GetRemoteAddr(uint32_t *ip, uint16_t *port) {
   char str[40];
   GetClientAddr(ip, port);
   if (HasHeader(kHttpXForwardedFor)) {
-    if (IsTrustedProxy(*ip)) {
+    if (IsTrustedIp(*ip)) {
       if (ParseForwarded(HeaderData(kHttpXForwardedFor),
                          HeaderLength(kHttpXForwardedFor), ip, port) == -1) {
         VERBOSEF("could not parse x-forwarded-for %`'.*s len=%ld",
@@ -934,7 +968,7 @@ static char *DescribeClient(void) {
   uint32_t client;
   static char description[128];
   GetClientAddr(&client, &port);
-  if (HasHeader(kHttpXForwardedFor) && IsTrustedProxy(client)) {
+  if (HasHeader(kHttpXForwardedFor) && IsTrustedIp(client)) {
     DescribeAddress(str, client, port);
     snprintf(description, sizeof(description), "%'.*s via %s",
              HeaderLength(kHttpXForwardedFor), HeaderData(kHttpXForwardedFor),
@@ -1065,9 +1099,17 @@ static void ProgramHeader(const char *s) {
 }
 
 static void ProgramLogPath(const char *s) {
+  int fd;
   logpath = strdup(s);
-  close(2);
-  open(logpath, O_APPEND | O_WRONLY | O_CREAT, 0640);
+  fd = open(logpath, O_APPEND | O_WRONLY | O_CREAT, 0640);
+  if (fd == -1) {
+    WARNF("(srvr) open(%`'s) failed: %m", logpath);
+    return;
+  }
+  if (fd != 2) {
+    dup2(fd, 2);
+    close(fd);
+  }
 }
 
 static void ProgramPidPath(const char *s) {
@@ -3394,7 +3436,7 @@ static int LuaRoute(lua_State *L) {
   return 1;
 }
 
-static int LuaTrustProxy(lua_State *L) {
+static int LuaProgramTrustedIp(lua_State *L) {
   lua_Integer ip, cidr;
   uint32_t ip32, imask;
   ip = luaL_checkinteger(L, 1);
@@ -3415,18 +3457,18 @@ static int LuaTrustProxy(lua_State *L) {
                   "it has bits masked by the cidr");
     unreachable;
   }
-  TrustProxy(ip, cidr);
+  ProgramTrustedIp(ip, cidr);
   return 0;
 }
 
-static int LuaIsTrustedProxy(lua_State *L) {
+static int LuaIsTrusted(lua_State *L) {
   lua_Integer ip;
   ip = luaL_checkinteger(L, 1);
   if (!(0 <= ip && ip <= 0xffffffff)) {
     luaL_argerror(L, 1, "ip out of range");
     unreachable;
   }
-  lua_pushboolean(L, IsTrustedProxy(ip));
+  lua_pushboolean(L, IsTrustedIp(ip));
   return 1;
 }
 
@@ -4141,7 +4183,8 @@ static int LuaSetHeader(lua_State *L) {
   size_t i, keylen, vallen, evallen;
   OnlyCallDuringRequest(L, "SetHeader");
   key = luaL_checklstring(L, 1, &keylen);
-  val = luaL_checklstring(L, 2, &vallen);
+  val = luaL_optlstring(L, 2, 0, &vallen);
+  if (!val) return 0;
   if ((h = GetHttpHeader(key, keylen)) == -1) {
     if (!IsValidHttpToken(key, keylen)) {
       luaL_argerror(L, 1, "invalid");
@@ -4161,11 +4204,7 @@ static int LuaSetHeader(lua_State *L) {
   }
   switch (h) {
     case kHttpConnection:
-      if (!SlicesEqualCase(eval, evallen, "close", 5)) {
-        luaL_argerror(L, 2, "unsupported");
-        unreachable;
-      }
-      connectionclose = true;
+      connectionclose = SlicesEqualCase(eval, evallen, "close", 5);
       break;
     case kHttpContentType:
       p = AppendContentType(p, eval);
@@ -4708,6 +4747,145 @@ static int LuaIsAssetCompressed(lua_State *L) {
   return 1;
 }
 
+static void Blackhole(uint32_t ip) {
+  char buf[4];
+  if (blackhole.fd <= 0) return;
+  WRITE32BE(buf, ip);
+  if (write(blackhole.fd, buf, 4) == -1) {
+    WARNF("error: write(%s) failed: %m\n", blackhole.addr.sun_path);
+  }
+}
+
+wontreturn static void Replenisher(void) {
+  struct timespec ts;
+  VERBOSEF("token replenish worker started");
+  signal(SIGINT, OnTerm);
+  signal(SIGHUP, OnTerm);
+  signal(SIGTERM, OnTerm);
+  signal(SIGUSR1, SIG_IGN);  // make sure reload won't kill this
+  signal(SIGUSR2, SIG_IGN);  // make sure meltdown won't kill this
+  ts = _timespec_real();
+  while (!terminated) {
+    if (clock_nanosleep(CLOCK_REALTIME, TIMER_ABSTIME, &ts, 0)) {
+      errno = 0;
+      continue;
+    }
+    ReplenishTokens(tokenbucket.w, (1ul << tokenbucket.cidr) / 8);
+    ts = _timespec_add(ts, tokenbucket.replenish);
+  }
+  VERBOSEF("token replenish worker exiting");
+  _Exit(0);
+}
+
+static int LuaAcquireToken(lua_State *L) {
+  uint32_t ip;
+  if (!tokenbucket.cidr) {
+    luaL_error(L, "ProgramTokenBucket() needs to be called first");
+    unreachable;
+  }
+  GetClientAddr(&ip, 0);
+  lua_pushinteger(L, AcquireToken(tokenbucket.b, luaL_optinteger(L, 1, ip),
+                                  tokenbucket.cidr));
+  return 1;
+}
+
+static int LuaCountTokens(lua_State *L) {
+  uint32_t ip;
+  if (!tokenbucket.cidr) {
+    luaL_error(L, "ProgramTokenBucket() needs to be called first");
+    unreachable;
+  }
+  GetClientAddr(&ip, 0);
+  lua_pushinteger(L, CountTokens(tokenbucket.b, luaL_optinteger(L, 1, ip),
+                                 tokenbucket.cidr));
+  return 1;
+}
+
+static int LuaProgramTokenBucket(lua_State *L) {
+  if (tokenbucket.cidr) {
+    luaL_error(L, "ProgramTokenBucket() can only be called once");
+    unreachable;
+  }
+  lua_Number replenish = luaL_optnumber(L, 1, 1);  // per second
+  lua_Integer cidr = luaL_optinteger(L, 2, 24);
+  lua_Integer reject = luaL_optinteger(L, 3, 30);
+  lua_Integer ignore = luaL_optinteger(L, 4, MIN(reject / 2, 15));
+  lua_Integer ban = luaL_optinteger(L, 5, MIN(ignore / 10, 1));
+  if (!(1 / 3600. <= replenish && replenish <= 1e6)) {
+    luaL_argerror(L, 1, "require 1/3600 <= replenish <= 1e6");
+    unreachable;
+  }
+  if (!(8 <= cidr && cidr <= 32)) {
+    luaL_argerror(L, 2, "require 8 <= cidr <= 32");
+    unreachable;
+  }
+  if (!(-1 <= reject && reject <= 126)) {
+    luaL_argerror(L, 3, "require -1 <= reject <= 126");
+    unreachable;
+  }
+  if (!(-1 <= ignore && ignore <= 126)) {
+    luaL_argerror(L, 4, "require -1 <= ignore <= 126");
+    unreachable;
+  }
+  if (!(-1 <= ban && ban <= 126)) {
+    luaL_argerror(L, 5, "require -1 <= ban <= 126");
+    unreachable;
+  }
+  if (!(ignore <= reject)) {
+    luaL_argerror(L, 4, "require ignore <= reject");
+    unreachable;
+  }
+  if (!(ban <= ignore)) {
+    luaL_argerror(L, 5, "require ban <= ignore");
+    unreachable;
+  }
+  INFOF("deploying %,ld buckets "
+        "(one for every %ld ips) "
+        "each holding 127 tokens which "
+        "replenish %g times per second, "
+        "reject at %d tokens, "
+        "ignore at %d tokens, and "
+        "ban at %d tokens",
+        1L << cidr,                 //
+        4294967296 / (1L << cidr),  //
+        replenish,                  //
+        reject,                     //
+        ignore,                     //
+        ban);
+  if (ignore == -1) ignore = -128;
+  if (ban == -1) ban = -128;
+  if (ban >= 0 && (IsLinux() || IsBsd())) {
+    struct Blackhole bh;
+    bh.addr.sun_family = AF_UNIX;
+    strlcpy(bh.addr.sun_path, "/var/run/blackhole.sock",
+            sizeof(bh.addr.sun_path));
+    if ((bh.fd = socket(AF_UNIX, SOCK_DGRAM | SOCK_NONBLOCK, 0)) == -1) {
+      WARNF("error: socket(AF_UNIX) failed: %m");
+      ban = -1;
+    } else if (connect(bh.fd, (struct sockaddr *)&bh.addr, sizeof(bh.addr)) ==
+               -1) {
+      WARNF("error: connect(%`'s) failed: %m", bh.addr.sun_path);
+      WARNF("redbean isn't able to protect your kernel from level 4 ddos");
+      WARNF("please run the blackholed program, see https://justine.lol/");
+      close(bh.fd);
+      ban = -1;
+    } else {
+      blackhole = bh;
+    }
+  }
+  tokenbucket.b = _mapshared(ROUNDUP(1ul << cidr, FRAMESIZE));
+  memset(tokenbucket.b, 127, 1ul << cidr);
+  tokenbucket.cidr = cidr;
+  tokenbucket.reject = reject;
+  tokenbucket.ignore = ignore;
+  tokenbucket.ban = ban;
+  tokenbucket.replenish = _timespec_fromnanos(1 / replenish * 1e9);
+  int pid = fork();
+  _npassert(pid != -1);
+  if (!pid) Replenisher();
+  return 0;
+}
+
 static const char *GetContentTypeExt(const char *path, size_t n) {
   char *r, *e;
   int top;
@@ -4961,7 +5139,7 @@ static const luaL_Reg kLuaFuncs[] = {
     {"IsPrivateIp", LuaIsPrivateIp},                            //
     {"IsPublicIp", LuaIsPublicIp},                              //
     {"IsReasonablePath", LuaIsReasonablePath},                  //
-    {"IsTrustedProxy", LuaIsTrustedProxy},                      // undocumented
+    {"IsTrustedIp", LuaIsTrusted},                              // undocumented
     {"IsValidHttpToken", LuaIsValidHttpToken},                  //
     {"LaunchBrowser", LuaLaunchBrowser},                        //
     {"Lemur64", LuaLemur64},                                    //
@@ -4992,6 +5170,7 @@ static const luaL_Reg kLuaFuncs[] = {
     {"ProgramPort", LuaProgramPort},                            //
     {"ProgramRedirect", LuaProgramRedirect},                    //
     {"ProgramTimeout", LuaProgramTimeout},                      //
+    {"ProgramTrustedIp", LuaProgramTrustedIp},                  // undocumented
     {"ProgramUid", LuaProgramUid},                              //
     {"ProgramUniprocess", LuaProgramUniprocess},                //
     {"Rand64", LuaRand64},                                      //
@@ -5020,7 +5199,6 @@ static const luaL_Reg kLuaFuncs[] = {
     {"Sleep", LuaSleep},                                        //
     {"Slurp", LuaSlurp},                                        //
     {"StoreAsset", LuaStoreAsset},                              //
-    {"TrustProxy", LuaTrustProxy},                              // undocumented
     {"Uncompress", LuaUncompress},                              //
     {"Underlong", LuaUnderlong},                                //
     {"VisualizeControlCodes", LuaVisualizeControlCodes},        //
@@ -5029,6 +5207,8 @@ static const luaL_Reg kLuaFuncs[] = {
     {"hex", LuaHex},                                            //
     {"oct", LuaOct},                                            //
 #ifndef UNSECURE
+    {"AcquireToken", LuaAcquireToken},                          //
+    {"CountTokens", LuaCountTokens},                            //
     {"EvadeDragnetSurveillance", LuaEvadeDragnetSurveillance},  //
     {"GetSslIdentity", LuaGetSslIdentity},                      //
     {"ProgramCertificate", LuaProgramCertificate},              //
@@ -5040,6 +5220,7 @@ static const luaL_Reg kLuaFuncs[] = {
     {"ProgramSslPresharedKey", LuaProgramSslPresharedKey},      //
     {"ProgramSslRequired", LuaProgramSslRequired},              //
     {"ProgramSslTicketLifetime", LuaProgramSslTicketLifetime},  //
+    {"ProgramTokenBucket", LuaProgramTokenBucket},              //
 #endif
     // deprecated
     {"GetPayload", LuaGetBody},                            //
@@ -5267,6 +5448,8 @@ static void MemDestroy(void) {
   FreeStrings(&hidepaths);
   Free(&launchbrowser);
   Free(&serverheader);
+  Free(&trustedips.p);
+  Free(&interfaces);
   Free(&extrahdrs);
   Free(&pidpath);
   Free(&logpath);
@@ -5368,6 +5551,16 @@ Content-Length: 0\r\n\
 \r\n");
 }
 
+static ssize_t SendTooManyRequests(void) {
+  return SendString("\
+HTTP/1.1 429 Too Many Requests\r\n\
+Connection: close\r\n\
+Content-Type: text/plain\r\n\
+Content-Length: 22\r\n\
+\r\n\
+429 Too Many Requests\n");
+}
+
 static void EnterMeltdownMode(void) {
   if (shared->lastmeltdown.tv_sec &&
       !_timespec_gte(_timespec_sub(_timespec_real(), shared->lastmeltdown),
@@ -5669,7 +5862,7 @@ static void ParseRequestParameters(void) {
                      &url, kUrlPlus | kUrlLatin1));
   if (!url.host.p) {
     if (HasHeader(kHttpXForwardedHost) &&  //
-        !GetRemoteAddr(&ip, 0) && IsTrustedProxy(ip)) {
+        !GetRemoteAddr(&ip, 0) && IsTrustedIp(ip)) {
       FreeLater(ParseHost(HeaderData(kHttpXForwardedHost),
                           HeaderLength(kHttpXForwardedHost), &url));
     } else if (HasHeader(kHttpHost)) {
@@ -5925,12 +6118,17 @@ static char *ServeAsset(struct Asset *a, const char *path, size_t pathlen) {
       } else {
         return ServeError(500, "Internal Server Error");
       }
+#if 0  // TODO(jart): re-enable me
     } else if (!IsTiny() && cpm.msg.method != kHttpHead && !IsSslCompressed() &&
                ClientAcceptsGzip() &&
+               !(a->file &&
+                 IsNoCompressExt(a->file->path.s, a->file->path.n)) &&
                ((cpm.contentlength >= 100 && _startswithi(ct, "text/")) ||
                 (cpm.contentlength >= 1000 &&
                  MeasureEntropy(cpm.content, 1000) < 7))) {
+      WARNF("serving compressed asset");
       p = ServeAssetCompressed(a);
+#endif
     } else {
       p = ServeAssetIdentity(a, ct);
     }
@@ -6490,10 +6688,41 @@ static void MonitorMemory(void) {
 }
 
 static int HandleConnection(size_t i) {
-  int pid, rc = 0;
+  uint32_t ip;
+  int pid, tok, rc = 0;
   clientaddrsize = sizeof(clientaddr);
   if ((client = accept4(servers.p[i].fd, (struct sockaddr *)&clientaddr,
                         &clientaddrsize, SOCK_CLOEXEC)) != -1) {
+    LockInc(&shared->c.accepts);
+    GetClientAddr(&ip, 0);
+    if (tokenbucket.cidr && tokenbucket.reject >= 0) {
+      if (!IsLoopbackIp(ip) && !IsTrustedIp(ip)) {
+        tok = AcquireToken(tokenbucket.b, ip, tokenbucket.cidr);
+        if (tok <= tokenbucket.ban && tokenbucket.ban >= 0) {
+          WARNF("(srvr) banning %hhu.%hhu.%hhu.%hhu who only has %d tokens",
+                ip >> 24, ip >> 16, ip >> 8, ip, tok);
+          LockInc(&shared->c.bans);
+          Blackhole(ip);
+          close(client);
+          return 0;
+        } else if (tok <= tokenbucket.ignore && tokenbucket.ignore >= 0) {
+          LockInc(&shared->c.ignores);
+          close(client);
+          return 0;
+        } else if (tok < tokenbucket.reject) {
+          WARNF("(srvr) rejecting %hhu.%hhu.%hhu.%hhu who only has %d tokens",
+                ip >> 24, ip >> 16, ip >> 8, ip, tok);
+          LockInc(&shared->c.rejects);
+          SendTooManyRequests();
+          close(client);
+          return 0;
+        }
+      } else {
+        DEBUGF(
+            "(srvr) won't acquire token for whitelisted ip %hhu.%hhu.%hhu.%hhu",
+            ip >> 24, ip >> 16, ip >> 8, ip);
+      }
+    }
     startconnection = _timespec_real();
     if (UNLIKELY(maxworkers) && shared->workers >= maxworkers) {
       EnterMeltdownMode();
@@ -6741,14 +6970,14 @@ static int HandlePoll(int ms) {
 static void Listen(void) {
   char ipbuf[16];
   size_t i, j, n;
-  uint32_t ip, port, addrsize, *ifs, *ifp;
+  uint32_t ip, port, addrsize, *ifp;
   bool hasonserverlisten = IsHookDefined("OnServerListen");
   if (!ports.n) {
     ProgramPort(8080);
   }
   if (!ips.n) {
-    if ((ifs = GetHostIps()) && *ifs) {
-      for (ifp = ifs; *ifp; ++ifp) {
+    if (interfaces && *interfaces) {
+      for (ifp = interfaces; *ifp; ++ifp) {
         sprintf(ipbuf, "%hhu.%hhu.%hhu.%hhu", *ifp >> 24, *ifp >> 16, *ifp >> 8,
                 *ifp);
         ProgramAddr(ipbuf);
@@ -6756,7 +6985,6 @@ static void Listen(void) {
     } else {
       ProgramAddr("0.0.0.0");
     }
-    free(ifs);
   }
   servers.p = malloc(ips.n * ports.n * sizeof(*servers.p));
   for (n = i = 0; i < ips.n; ++i) {
@@ -7108,6 +7336,10 @@ void RedBean(int argc, char *argv[]) {
   SetDefaults();
   LuaStart();
   GetOpts(argc, argv);
+  // this can fail with EPERM if we're running under pledge()
+  if (!interpretermode && !(interfaces = GetHostIps())) {
+    WARNF("(srvr) failed to query system network interface addresses: %m");
+  }
 #ifndef STATIC
   if (selfmodifiable) {
     MakeExecutableModifiable();