Gerd Möllmann writes: >>> (make-frame '((window-system . x))) >>> >>> move to the graphical and back to the tty frame I get a crash like >>> >>> #0 terminate_due_to_signal (sig=6, backtrace_limit=2147483647) at ../../src/emacs.c:432 > > FWIW, I tried the equivalent with (window-system . ns) here, and > couldn't provoke the assertion. Using the right worktree helped. Taking a closer look at tty_set_cursor, using the selected frame here doesn't make sense to me. I don't see a good reason why the selected frame has to have anything to do with where to place the cursor in an updated frame. That looks more like a left-over from times before multi-tty. Could you please try the attached, Martin? The first one is what I think it the fix. The second one is a cleanup that leads to more checks without having GLYPH_DEBUG. If this also work for you, I'll put that in master. (I see a "flicker" of the tty frame after the make-frame. That is also the case in Emacs 30.)