in reply to Why might a close operation die?

You might try checking the value of $?. From the docs on open:

Closing any piped filehandle causes the parent process to wait for the child to finish, and returns the status value in $?.