Today I received this error message when issuing a cvs import to the cvs repository
cvs [import failed]: received broken pipe signal
after googling a little bit I found this mail thread that led me to the following entry in the cvs manual about loginfo
Note that the filter program must read all of the log information or CVS may fail with a broken pipe signal.
so I took a look to the CVSROOT/loginfo and the line there was
ALL /usr/local/viewvc-1.0.0/bin/loginfo-handler %{sVv}
so I figured out that loginfo-handler from viewvc should be causing the problem. I went to the viewvc repository and find out the following comment on Revision 1518 of loginfo-handler
* bin/loginfo-handler Add some more debugging, and consume stdin so CVS’s pipe doesn’t back up (which causes an abort()).
I downloaded the latest version of loginfo-handler and tried to use it instead of the old one but I doesn’t work. You must upgrade to latest version of viewvc. So I tried another solution I modified a little bit the 1.0.0 loginfo-handler
*** loginfo-handler 2007-03-29 18:26:18.000000000 +0200
--- loginfo-handler-patched 2007-03-29 18:25:49.000000000 +0200
***************
*** 266,271 ****
--- 266,274 ----
if len(sys.argv) > 3:
error('Bad arguments')
+ debug('Discarded from stdin:')
+ debug(map(lambda x: ' ' + x, sys.stdin.readlines())) # consume stdin
+
repository = cvsdb.CleanRepository(repository)
directory, files = fun(arg, repository)
and now it seems to work.
UPDATE:: There is another way (easier) to solve this problem without editing loginfo-handler just change the line
ALL /usr/local/viewvc-1.0.0/bin/loginfo-handler %{sVv}
in your
ALL (/usr/local/viewvc-1.0.0/bin/loginfo-handler %{sVv};cat) >/dev/null
this also consumes all stdin data upon completion avoiding the received broken pipe signal.