It looks like `curY (tty) >= FrameRows (tty) - 1`:


(lldb)
frame #9: 0x0000000100173380 Emacs`cmcheckmagic(tty=0x000000010180d000) at cm.c:118
   115   if (curX (tty) == FrameCols (tty))
   116     {
   117       if (!MagicWrap (tty) || curY (tty) >= FrameRows (tty) - 1)
-> 118 emacs_abort ();
   119       if (tty->termscript)
   120 putc_unlocked ('\r', tty->termscript);
   121       putc_unlocked ('\r', tty->output);
(lldb) p (tty)->Wcm->cm_magicwrap
(bool_bf) $0 = true
(lldb) p (tty)->Wcm->cm_curY
(int) $1 = 2
(lldb) p (tty)->Wcm->cm_rows
(int) $2 = 3


was the original cause also in "emacs -nw", or was it in a GUI
frame? 

It was not in a GUI, but it was an `emacsclient -t` invocation.