Subject: bug#29070: 26.0.90; emacs-26.0.90 pretest

From: andrés ramírez <[email-masked]>
Date: Mon, 30 Oct 2017 17:36:13 -0600

On Mon, 30 Oct 2017 17:07:27 -0600,
Noam Postavsky wrote:
> 
> "[email-masked]" <[email-masked]> writes:
> 
> > (t 2 1000 1000
> >    (23031 33692 430033 322000)
> >    (23031 41122 259655 752000)
> >    (23031 41122 259655 752000)
> >    60 "drwx------" t 545119 28)
Noam above was wrong: what I got was nil (tried it on another emacs,
sorry)

> Could you do M-x load-library RET server.el RET to load the source and
> get a more detailed backtrace please.  It should like something like
> this:

btw: I have done also (setq server-name "pe")

--8<---------------cut here---------------start------------->8---
Debugger entered--Lisp error: (error "‘/tmp/emacs1000’ is not a safe directory because it is a file")
  signal(error ("‘/tmp/emacs1000’ is not a safe directory because it is a file"))
  error("`%s' is not a safe directory because %s" "/tmp/emacs1000" "it is a file")
  (progn (error "`%s' is not a safe directory because %s" dir unsafe))
  (if unsafe (progn (error "`%s' is not a safe directory because %s" dir unsafe)))
  (let* ((uid (nth 2 attrs)) (w32 (eq system-type 'windows-nt)) (unsafe (cond ((not (eq t (car attrs))) (format "it is a %s" (if (stringp (car attrs)) "symlink" "file"))) ((and w32 (= 0 uid)) (display-warning 'server (format-message "Using `%s' to store Emacs-server authentication files.\nDirectories on FAT32 filesystems are NOT secure against tampering.\nSee variable `server-auth-dir' for details." (file-name-as-directory dir)) :warning) nil) ((and (/= uid (user-uid)) (or (not w32) (/= uid 544) (/= (user-uid) 500))) (format "it is not owned by you (owner = %s (%d))" (user-full-name (user-uid)) (user-uid))) (w32 nil) ((/= 0 (logand 63 (file-modes dir))) (format "it is accessible by others (%03o)" (file-modes dir))) (t nil)))) (if unsafe (progn (error "`%s' is not a safe directory because %s" dir unsafe))))
    dir = "/tmp/emacs1000"
    attrs = nil
    uid = nil
    w32 = nil
    unsafe = "it is a file"
  (let ((attrs (file-attributes dir 'integer))) (if attrs nil (let* ((old (default-file-modes))) (unwind-protect (progn (progn (set-default-file-modes 448) 448) (make-directory dir t)) (let* ((v old)) (progn (set-default-file-modes v) v)))) (setq attrs (file-attributes dir 'integer))) (let* ((uid (nth 2 attrs)) (w32 (eq system-type 'windows-nt)) (unsafe (cond ((not (eq t (car attrs))) (format "it is a %s" (if (stringp (car attrs)) "symlink" "file"))) ((and w32 (= 0 uid)) (display-warning 'server (format-message "Using `%s' to store Emacs-server authentication files.\nDirectories on FAT32 filesystems are NOT secure against tampering.\nSee variable `server-auth-dir' for details." (file-name-as-directory dir)) :warning) nil) ((and (/= uid (user-uid)) (or (not w32) (/= uid 544) (/= (user-uid) 500))) (format "it is not owned by you (owner = %s (%d))" (user-full-name (user-uid)) (user-uid))) (w32 nil) ((/= 0 (logand 63 (file-modes dir))) (format "it is accessible by others (%03o)" (file-modes dir))) (t nil)))) (if unsafe (progn (error "`%s' is not a safe directory because %s" dir unsafe)))))
    dir = "/tmp/emacs1000"
    attrs = nil
  server-ensure-safe-dir("/tmp/emacs1000")
    leave-dead = nil
    inhibit-prompt = nil
    server-dir = "/tmp/emacs1000"
    server-file = "/tmp/emacs1000/pe"
    [no locals]
  server-start(nil)
  funcall-interactively(server-start nil)
  call-interactively(server-start record nil)
  command-execute(server-start record)
  execute-extended-command(nil "server-start" "server-start")
  funcall-interactively(execute-extended-command nil "server-start" "server-start")
  call-interactively(execute-extended-command nil nil)
  command-execute(execute-extended-command)
--8<---------------cut here---------------end--------------->8---