The exact message is:
darcs: <stdin>: hIsTerminalDevice: illegal operation (handle is closed)
Apply failed!
This happens when trying to push to an NFS mounted repo. The remote
repo has a long history and contains some large binaries, so the apply
takes a few seconds.
This happens with all 2.5 pre-releases, but not with 2.4.4.
My initial investigations suggest that the error actually happens in
some external library used by darcs because it still happens after I
removed all references to hIsTerminalDevice from the code.
Apparently there's no way to get a backtrace in Haskell, so it's going
to be hard to see what darcs is doing at the time of the crash. Could
you perhaps use strace ( man 1 strace, http://linux.die.net/man/1/strace
) to get a log of all of darcs's system calls and attach it to this
ticket? I hope that will at least show us which closed handle it's
calling hIsTerminalDevice on.
By the way, if your repo is highly private you probably don't want to
upload an strace here as it will show the names of files that are opened
and things like that.
And it would also be useful to know the output of 'darcs
--exact-version' for both the failing and the working darcs. That also
shows the versions of the libraries that were used.
This one looks like it should be fixed in 2.5.1, yes.
I recall seeing an strace and seeing the failing ioctl system call. It
didn't point to a solution however.
I sent various straces and complete version info to the mailing list.
Since then, I got this error again a few times. I can try to dig up
the mails from the archive if that would help.
Happens for me too. One thing to watch out for is whether this is about
the darcs that's running on the remote end, or the one on our end :-/
Informally, I think I can sort of work around this by darcs pushing only a
few patches at a time, but that doesn't always work.
I am marking this as resolved. It never appeared (to me) again after
upgrading to 2.8.x and definitely not in the current HEAD, which I am
using now for at least a year (and also over NFS).