Stray os.pipe() leads to fd leakage