opened by open-input-string could be closed by the GC before the exec().
Now << stores the port in a global variable.
The test to reveal the bug was:
(let lp ()
(run (head) (<< "a"))
(lp))
printing a "closed channel" message after some a few hundred interations.