|
From: | Hendrik Krauß |
Subject: | Information on bug described in CVS manual (section F1) |
Date: | Fri, 03 Sep 2004 21:37:14 +0200 |
User-agent: | Mozilla Thunderbird 0.6 (Windows/20040502) |
Hello,possibly we have some relevant information for the problem mentioned in the CVS manual, section F1 "Partial list of error messages" (https://www.cvshome.org/docs/manual/cvs-1.11.14/cvs_21.html#SEC184). From that section:
cvs [server aborted]: received broken pipe signalThis message seems to be caused by a hard-to-track-down bug in CVS or the systems it runs on (we don't know--we haven't tracked it down yet!). [...]
Our setup involves a statically linked CVS 1.11.1p1 running in a chroot jail. Today, I added entries to the CVSROOT/loginfo file for automatic post-commit processing, and persistently got the error message above. Even a very simple command in loginfo, like "echo hello > /tmp/somefile", wouldn't work and only produce that error.
The problem went away after copying a (statically linked) sh into the chroot jail, so that the CVS executable running in the jail would see it as "/bin/sh". My guess is of course that after finding a matching line in loginfo, CVS forks and does something like exec("/bin/sh", "-c", <line-from-loginfo>), which won't work due to a non-existant /bin/sh. Then the parent, unaware that the child died directly, starts writing into the child's stdin, which is a widowed pipe, which causes a SIGPIPE to the parent, which confuses it and makes it die with the above error. It was particularly annoying because once I had committed the problematic loginfo file, commits would consistently fail with the "broken pipe" error message--which also prevented committing a good version of loginfo. I had to edit loginfo directly via SSH. By checking in a malicious loginfo file, you can effectively make your repository read-only (bug? feature?) :-)
Let me know if this helps tracking down the bug, or part of it. I tried to describe everything relevant to the situation, but do contact me if you need more details about our setup.
Best regards, Hendrik Krauss -- "1 + 1 = 3, for large values of 1."
[Prev in Thread] | Current Thread | [Next in Thread] |