Posts Tagged ‘broken’

cvs [xxxxx]: received broken pipe signal

Thursday, March 29th, 2007

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 /CVSROOT/loginfo file with

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.