Bert mentioned to me that svnserve sometimes exits successfully after a genuine fatal error.
In r1544253 I added error checking to some socket initiliazation cases. I haven't reproduced such errors, I just followed the obvious coding pattern to add the missing checks. I would appreciate a review of that to ensure it wasn't ignoring errors on purpose in either of those places. In r1544256 I added error checking to the main exit code path of both inetd and tunnel modes. This one is easily demonstrated and pretty obvious I think: [[[ # previously: $ echo foo | svnserve -t ( success ( 2 2 ( ) ( edit-pipeline svndiff1 absent-entries commit-revprops depth log-revprops atomic-revprops partial-replay inherited-props ephemeral-txnprops file-revs-reverse ) ) ) julianfoad@julian-think ~/src/subversion-c $ echo $? 0 $ echo foo | svnserve -t # now: ( success ( 2 2 ( ) ( edit-pipeline svndiff1 absent-entries commit-revprops depth log-revprops atomic-revprops partial-replay inherited-props ephemeral-txnprops file-revs-reverse ) ) ) /.../subversion/svnserve/serve.c:3622, /.../subversion/libsvn_ra_svn/marshal.c:1372: (apr_err=SVN_ERR_RA_SVN_MALFORMED_DATA) svnserve: E210004: Malformed network data $ echo $? 1 ]]] Review appreciated, again, though, as I don't know what strange configurations people might possibly have where they're perhaps relying on getting no error report. Hopefully not, but sometimes people do strange things. - Julian