>> From a fresh Emacs 28 emacs -Q: >> >> (progn >> (display-buffer-in-side-window (get-buffer-create "AA") '((side . right) (slot . -1))) >> (display-buffer-in-side-window (get-buffer-create "BB") '((side . right) (slot . 0))) >> (display-buffer-in-side-window (get-buffer-create "CC") '((side . right) (slot . 1))) >> (window-toggle-side-windows) >> (window-toggle-side-windows)) >> >> Leads to the error `Specified root is not an ancestor of specified window’. This arises as: >> >> Debugger entered--Lisp error: (error "Specified root is not an ancestor of specified win...") >> delete-other-windows-internal(nil #) >> window-state-put((((min-height . 4) (min-width . 10) (min-height-ignore . 2) (min-width-ignore . 7) (min-height-safe . 1) (min-width-safe . 2) (min-pixel-height . 64) (min-pixel-width . 70) (min-pixel-height-ignore . 32) (min-pixel-width-ignore . 49) (min-pixel-height-safe . 16) (min-pixel-width-safe . 14)) leaf (pixel-width . 591) (pixel-height . 560) (total-width . 84) (total-height . 35) (normal-height . 1.0) (normal-width . 1.0) (parameters (clone-of . #)) (buffer # (selected . t) (hscroll . 0) (fringes 8 8 nil nil) (margins nil) (scroll-bars nil 3 t nil 0 t nil) (vscroll . 0) (dedicated) (point . #) (start . #))) #) >> window-toggle-side-windows() >> (progn (display-buffer-in-side-window (get-buffer-create "AA") '((side . right) (slot . -1))) (display-buffer-in-side-window (get-buffer-create "BB") '((side . right) (slot . 0))) (display-buffer-in-side-window (get-buffer-create "CC") '((side . right) (slot . 1))) (window-toggle-side-windows) (window-toggle-side-windows)) >> (progn (progn (display-buffer-in-side-window (get-buffer-create "AA") '((side . right) (slot . -1))) (display-buffer-in-side-window (get-buffer-create "BB") '((side . right) (slot . 0))) (display-buffer-in-side-window (get-buffer-create "CC") '((side . right) (slot . 1))) (window-toggle-side-windows) (window-toggle-side-windows))) >> elisp--eval-last-sexp(nil) >> eval-last-sexp(nil) >> funcall-interactively(eval-last-sexp nil) >> command-execute(eval-last-sexp) >> >> Strangely no error is seen with 1 or 2 side windows. > > Martin, any ideas or comments? This still happens in Emacs 29 and > Emacs 30. The bug is an immediate consequence of my ill-advised "fix" for Bug#50867. A better fix for both bugs should be the attached one. Please test it for the scenarios of Bug#50867 and the present one. martin