I recently built gccemacs 28 and found that when I tried to connect to
the server with emacsclient I would encounter the following error:

/home/demo/.local/bin/emacsclient: Invalid socket owner
/home/demo/.local/bin/emacsclient: No socket or alternate editor.
Please use:

        --socket-name server-file (or environment variable
        --EMACS_SERVER_FILE) alternate-editor (or environment variable
        --ALTERNATE_EDITOR)

After building the vanilla emacs 28 and finding the same issue, I
looked at the source code of emacsclient.c and found that the uid
validation in the function set_local_socket since 26.3 (the latest
version available for hurd on debian). If the uid returned by
geteuid() doesn't match what fstat puts in the connect_stat.st_uid
when given the file descriptor for the server, the "Invalid socket
owner error is triggered." Using gdb I found uid to be 1000 and
connect_stat.st_uid to be 0.

I filed an emacs bug and it appears to only affect the hurd. Are
geteuid() and fstat() returning the values we expect?

Andrew

Reply via email to