Subject: bug#75056: 31.0.50; tty-child-frames with server / multiple clients possible hangs

From: martin rudalics <[email-masked]>
Date: Mon, 10 Feb 2025 11:15:49 +0100

> This works better with the menu-bar, although the menu bar itself does
 > strange stuff while the menu is open. Don't know what that is.

Still can't test it with emacs -Q -nw

Debugger entered--Lisp error: (void-function cond*)
   (cond* ((match* 'nil pos) nil) ((match* 't pos) (let* ((y (mouse-position)) (frame (if (cdr y) (car-safe (prog1 y ...)) (signal 'wrong-number-of-arguments (list ... ...)))) (x (car-safe (prog1 y (setq y ...))))) (list frame (or x 10) (or y 10)))) ((match* (eventp e) pos) (let* ((end (event-end e)) (win (posn-window end)) (x (car (posn-x-y end))) (y (cdr (posn-x-y end)))) (if (windowp win) (let* ((--cl-rest-- (window-edges win nil t)) (wx (if ... ... ...)) (wy (car-safe ...)) (_ (car-safe ...)) (_ (car-safe --cl-rest--))) (list (window-frame win) (+ wx x) (+ wy y))) (let ((menu-bar-lines (frame-parameter win ...))) (list win x (+ y menu-bar-lines)))))) ((match* (cons (cons (numberp x) (numberp y)) (cons (windowp win) _)) pos) (let* ((--cl-rest-- (window-edges win nil t)) (wx (if (= (length --cl-rest--) 4) (car-safe (prog1 --cl-rest-- ...)) (signal 'wrong-number-of-arguments (list ... ...)))) (wy (car-safe (prog1 --cl-rest-- (setq --cl-rest-- ...)))) (_ (car-safe (prog1 --cl-rest-- (setq --cl-rest-- ...)))) (_ (car-safe --cl-rest--))) (list (window-frame win) (+ wx x) (+ wy y)))) ((match* (cons (list (numberp x) (numberp y)) (cons (framep frame) _)) pos) (list frame x y)) ((match* (cons (cons (numberp x) (numberp y)) (cons (framep frame) _)) pos) (list frame x y)) ((match* (cons (numberp x) (numberp y)) pos) (list (selected-frame) x y)) (t (error "%S does not match in tty-menu-position" pos)))
   tty-menu-position((tools (#<frame F1 0x21b5cad0> (menu-bar) (26 . 0) 0)))
   (and t (tty-menu-position position))
   (let* ((where (and t (tty-menu-position position)))) (if where (cond ((keymapp menu) (tty-menu-loop menu where)) ((consp menu) (let* ((outer (make-sparse-keymap "outer")) (--cl-var-- menu) (keymap nil) (name nil) (--cl-var-- t)) (while (consp --cl-var--) (setq keymap (car --cl-var--)) (setq name (tty-menu-keymap-name keymap "?")) (define-key outer (vector ...) keymap) (setq --cl-var-- (cdr --cl-var--)) (setq --cl-var-- nil)) (tty-menu-loop outer where) nil)) (t (error "Not a menu: %S" menu)))))
   tty-menu-popup-menu((tools (#<frame F1 0x21b5cad0> (menu-bar) (26 . 0) 0)) (keymap (grep menu-item "Search Files (Grep)..." grep :help "Search files for strings or regexps (with Grep)") (rgrep menu-item "Recursive Grep..." rgrep :help "Interactively ask for parameters and search recursively") (shell-commands menu-item "Shell Commands" (keymap ... ... ... ... ... "Shell Commands")) (compile menu-item "Compile..." compile :help "Invoke compiler or Make in current buffer's directory, view errors") (project-compile menu-item "Compile Project..." project-compile :help "Invoke compiler or Make for current project, view errors") (gdb menu-item "Debugger (GDB)..." gdb :help "Debug a program from within Emacs with GDB") (ede menu-item "Project Support (EDE)" global-ede-mode :help "Toggle the Emacs Development Environment (Global EDE mode)" :button (:toggle bound-and-true-p global-ede-mode)) (project menu-item "Project" (keymap ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... "Project")) (eglot menu-item "Language Server Support (Eglot)" eglot :help "Start language server suitable for this buffer's major-mode") (semantic menu-item "Source Code Parsers (Semantic)" semantic-mode :help "Toggle automatic parsing in source code buffers (Semantic mode)" :button (:toggle bound-and-true-p semantic-mode)) (separator-prog "--") (spell menu-item "Spell Checking" ispell-menu-map) (separator-spell "--") (compare menu-item "Compare (Ediff)" menu-bar-ediff-menu) (ediff-merge menu-item "Merge" menu-bar-ediff-merge-menu) (epatch menu-item "Apply Patch" 
menu-bar-epatch-menu) (separator-compare "--") (vc menu-item "Version Control" vc-menu-map :filter vc-menu-map-filter) (separator-vc "--") (gnus menu-item "Read Net News" gnus :help "Read network news groups") (rmail menu-item "Read Mail" menu-bar-read-mail :visible (and read-mail-command ...) :help "Read your mail") (compose-mail menu-item "Compose New Mail" compose-mail :visible (and mail-user-agent ...) :help "Start writing a new mail message") (directory-search menu-item "Directory Servers" eudc-tools-menu) (browse-web menu-item "Browse the Web..." browse-web) (separator-net "--") ...))
   apply(tty-menu-popup-menu ((tools (#<frame F1 0x21b5cad0> (menu-bar) (26 . 0) 0)) (keymap (grep menu-item "Search Files (Grep)..." grep :help "Search files for strings or regexps (with Grep)") (rgrep menu-item "Recursive Grep..." rgrep :help "Interactively ask for parameters and search recursively") (shell-commands menu-item "Shell Commands" (keymap ... ... ... ... ... "Shell Commands")) (compile menu-item "Compile..." compile :help "Invoke compiler or Make in current buffer's directory, view errors") (project-compile menu-item "Compile Project..." project-compile :help "Invoke compiler or Make for current project, view errors") (gdb menu-item "Debugger (GDB)..." gdb :help "Debug a program from within Emacs with GDB") (ede menu-item "Project Support (EDE)" global-ede-mode :help "Toggle the Emacs Development Environment (Global EDE mode)" :button (:toggle bound-and-true-p global-ede-mode)) (project menu-item "Project" (keymap ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... "Project")) (eglot menu-item "Language Server Support (Eglot)" eglot :help "Start language server suitable for this buffer's major-mode") (semantic menu-item "Source Code Parsers (Semantic)" semantic-mode :help "Toggle automatic parsing in source code buffers (Semantic mode)" :button (:toggle bound-and-true-p semantic-mode)) (separator-prog "--") (spell menu-item "Spell Checking" ispell-menu-map) (separator-spell "--") (compare menu-item "Compare (Ediff)" menu-bar-ediff-menu) (ediff-merge menu-item "Merge" menu-bar-ediff-merge-menu) (epatch menu-item "Apply Patch" 
menu-bar-epatch-menu) (separator-compare "--") (vc menu-item "Version Control" vc-menu-map :filter vc-menu-map-filter) (separator-vc "--") (gnus menu-item "Read Net News" gnus :help "Read network news groups") (rmail menu-item "Read Mail" menu-bar-read-mail :visible (and read-mail-command ...) :help "Read your mail") (compose-mail menu-item "Compose New Mail" compose-mail :visible (and mail-user-agent ...) :help "Start writing a new mail message") (directory-search menu-item "Directory Servers" eudc-tools-menu) (browse-web menu-item "Browse the Web..." browse-web) (separator-net "--") (calendar menu-item "Calendar" calendar :help "Invoke the Emacs built-in calendar") (calc menu-item "Programmable Calculator" calc :help "Invoke the Emacs built-in full scientific calculator") (simple-calculator menu-item "Simple Calculator" calculator :help "Invoke the Emacs built-in quick calculator") (separator-encryption-decryption "--") (encryption-decryption menu-item "Encryption/Decryption" (keymap ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... "Encryption/Decryption")) (separator-games "--") ...)))
   x-popup-menu((tools (#<frame F1 0x21b5cad0> (menu-bar) (26 . 0) 0)) (keymap (grep menu-item "Search Files (Grep)..." grep :help "Search files for strings or regexps (with Grep)") (rgrep menu-item "Recursive Grep..." rgrep :help "Interactively ask for parameters and search recursively") (shell-commands menu-item "Shell Commands" (keymap ... ... ... ... ... "Shell Commands")) (compile menu-item "Compile..." compile :help "Invoke compiler or Make in current buffer's directory, view errors") (project-compile menu-item "Compile Project..." project-compile :help "Invoke compiler or Make for current project, view errors") (gdb menu-item "Debugger (GDB)..." gdb :help "Debug a program from within Emacs with GDB") (ede menu-item "Project Support (EDE)" global-ede-mode :help "Toggle the Emacs Development Environment (Global EDE mode)" :button (:toggle bound-and-true-p global-ede-mode)) (project menu-item "Project" (keymap ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... "Project")) (eglot menu-item "Language Server Support (Eglot)" eglot :help "Start language server suitable for this buffer's major-mode") (semantic menu-item "Source Code Parsers (Semantic)" semantic-mode :help "Toggle automatic parsing in source code buffers (Semantic mode)" :button (:toggle bound-and-true-p semantic-mode)) (separator-prog "--") (spell menu-item "Spell Checking" ispell-menu-map) (separator-spell "--") (compare menu-item "Compare (Ediff)" menu-bar-ediff-menu) (ediff-merge menu-item "Merge" menu-bar-ediff-merge-menu) (epatch menu-item "Apply Patch" 
menu-bar-epatch-menu) (separator-compare "--") (vc menu-item "Version Control" vc-menu-map :filter vc-menu-map-filter) (separator-vc "--") (gnus menu-item "Read Net News" gnus :help "Read network news groups") (rmail menu-item "Read Mail" menu-bar-read-mail :visible (and read-mail-command ...) :help "Read your mail") (compose-mail menu-item "Compose New Mail" compose-mail :visible (and mail-user-agent ...) :help "Start writing a new mail message") (directory-search menu-item "Directory Servers" eudc-tools-menu) (browse-web menu-item "Browse the Web..." browse-web) (separator-net "--") ...))
   popup-menu((keymap (grep menu-item "Search Files (Grep)..." grep :help "Search files for strings or regexps (with Grep)") (rgrep menu-item "Recursive Grep..." rgrep :help "Interactively ask for parameters and search recursively") (shell-commands menu-item "Shell Commands" (keymap ... ... ... ... ... "Shell Commands")) (compile menu-item "Compile..." compile :help "Invoke compiler or Make in current buffer's directory, view errors") (project-compile menu-item "Compile Project..." project-compile :help "Invoke compiler or Make for current project, view errors") (gdb menu-item "Debugger (GDB)..." gdb :help "Debug a program from within Emacs with GDB") (ede menu-item "Project Support (EDE)" global-ede-mode :help "Toggle the Emacs Development Environment (Global EDE mode)" :button (:toggle bound-and-true-p global-ede-mode)) (project menu-item "Project" (keymap ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... "Project")) (eglot menu-item "Language Server Support (Eglot)" eglot :help "Start language server suitable for this buffer's major-mode") (semantic menu-item "Source Code Parsers (Semantic)" semantic-mode :help "Toggle automatic parsing in source code buffers (Semantic mode)" :button (:toggle bound-and-true-p semantic-mode)) (separator-prog "--") (spell menu-item "Spell Checking" ispell-menu-map) (separator-spell "--") (compare menu-item "Compare (Ediff)" menu-bar-ediff-menu) (ediff-merge menu-item "Merge" menu-bar-ediff-merge-menu) (epatch menu-item "Apply Patch" menu-bar-epatch-menu) (separator-compare "--") (vc menu-item "Version 
Control" vc-menu-map :filter vc-menu-map-filter) (separator-vc "--") (gnus menu-item "Read Net News" gnus :help "Read network news groups") (rmail menu-item "Read Mail" menu-bar-read-mail :visible (and read-mail-command ...) :help "Read your mail") (compose-mail menu-item "Compose New Mail" compose-mail :visible (and mail-user-agent ...) :help "Start writing a new mail message") (directory-search menu-item "Directory Servers" eudc-tools-menu) (browse-web menu-item "Browse the Web..." browse-web) (separator-net "--") ...) (#<window 1 on *scratch*> 27 (26 . 0) 0 nil 27 (26 . 0) nil (0 . 0) (1 . 0)) nil t)
   menu-bar-open(nil 26)
   menu-bar-open-mouse((mouse-1 (nil menu-bar (28 . 0) 968)))
   funcall-interactively(menu-bar-open-mouse (mouse-1 (nil menu-bar (28 . 0) 968)))
   call-interactively(menu-bar-open-mouse nil nil)
   command-execute(menu-bar-open-mouse)

martin