Some more information .. Earlier "emacsclient -c&" used to work. Now doing that auto-suspends that process and on doing fg, I get "broken pipe". But "emacsclient -c" seems to be working (without that &). But then I need to block a new terminal for each new emacsclient invocation (with or without -c) .. Also, I fixed a regression in one of the 3rd party Elisp packages that got updated in last month. After that, instead of "broken pipe" error, I now see "*ERROR*: Assertion failed: (eq (match-end 0) (length string))" That error is originating from servel.el: ===== (condition-case err (progn (server-add-client proc) ;; Send our pid (server-send-string proc (concat "-emacs-pid " (number-to-string (emacs-pid)) "\n")) (if (not (string-match "\n" string)) ;; Save for later any partial line that remains. (when (> (length string) 0) (process-put proc 'previous-string string)) ;; In earlier versions of server.el (where we used an `emacsserver' ;; process), there could be multiple lines. Nowadays this is not ;; supported any more. (cl-assert (eq (match-end 0) (length string))) ===== I get that assertion error if I do "emacsclient -c&". But if I do just "emacsclient -c", a new Emacsclient frame launches fine.