diff --git a/mercurial/chgserver.py b/mercurial/chgserver.py
index c1bb02738f96e3860968e7ccf6cd2b179ef39ebf_bWVyY3VyaWFsL2NoZ3NlcnZlci5weQ==..aab70f05d6ec18f755eba2d814e13b61784bf35b_bWVyY3VyaWFsL2NoZ3NlcnZlci5weQ== 100644
--- a/mercurial/chgserver.py
+++ b/mercurial/chgserver.py
@@ -504,5 +504,6 @@
         the instructions.
         """
         args = self._readlist()
+        errorraised = False
         try:
             self.ui, lui = _loadnewui(self.ui, args, self.cdebug)
@@ -507,4 +508,11 @@
         try:
             self.ui, lui = _loadnewui(self.ui, args, self.cdebug)
+        except error.RepoError as inst:
+            # RepoError can be raised while trying to read shared source
+            # configuration
+            self.ui.error(_(b"abort: %s\n") % stringutil.forcebytestr(inst))
+            if inst.hint:
+                self.ui.error(_(b"(%s)\n") % inst.hint)
+            errorraised = True
         except error.Abort as inst:
             self.ui.error(inst.format())
@@ -509,5 +517,8 @@
         except error.Abort as inst:
             self.ui.error(inst.format())
+            errorraised = True
+
+        if errorraised:
             self.ui.flush()
             self.cresult.write(b'exit 255')
             return