Consider the following example: (use-modules (ice-9 popen))
(parameterize ((current-error-port (%make-void-port OPEN_BOTH))) (while #t (close-pipe (open-pipe* OPEN_READ "free")) (sleep 1))) This opens a new "/dev/null" file descriptor every second and doesn't close it when close-pipe is called. If current ports are all fd ports, this doesn't happen. AFAICT the problem was introduced by the commit 36fd2b4920ae926c79b936c29e739e71a6dff2bc in Guile 3.0.10.