Subject: bug#36163: 27.0.50; `list-processes' assumes `thread-name' cannot return nil

From: Pip Cet <[email-masked]>
Date: Tue, 11 Jun 2019 07:03:41 +0000

In emacs -Q, run:

(make-thread (lambda ()
           (make-process :name "name" :command (list "/bin/sh" "-c"
"while true; do sleep 1; done"))
           (while t
         (thread-yield))))

Then use M-x list-processes. This results in an error as (thread-name
thread) returns nil for the thread, since the optional name argument to
make-thread hasn't been specified.

The attached patch fixes things.

diff --git a/lisp/simple.el b/lisp/simple.el
index 6bc3bc5304..cf537265bd 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -4102,7 +4102,8 @@ list-processes--refresh
                       (null (process-thread p))
                       (not (fboundp 'thread-name))) "--")
                     ((eq (process-thread p) main-thread) "Main")
-                    ((thread-name (process-thread p)))))
+                    ((thread-name (process-thread p)))
+                    (t "--")))
                  (cmd
                   (if (memq type '(network serial))
                       (let ((contact (process-contact p t)))
diff --git a/lisp/simple.el b/lisp/simple.el
index 6bc3bc5304..cf537265bd 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -4102,7 +4102,8 @@ list-processes--refresh
                       (null (process-thread p))
                       (not (fboundp 'thread-name))) "--")
                     ((eq (process-thread p) main-thread) "Main")
-                    ((thread-name (process-thread p)))))
+                    ((thread-name (process-thread p)))
+                    (t "--")))
 		  (cmd
 		   (if (memq type '(network serial))
 		       (let ((contact (process-contact p t)))