Subject: bug#30019: 26.0.90; Invalid specification of parent-frame with desktop-read

From: martin rudalics <[email-masked]>
Date: Mon, 08 Jan 2018 10:53:17 +0100

>   I'm not sure of the exact repro, but hopefully the below stack trace
 > will help. After playing around with child frames on macOS while running
 > desktop-mode, if I restart emacs, I end up with this error during
 > "desktop-read"
 >
 > Debugger entered--Lisp error: (error "Invalid specification of ‘parent-frame’")
 >    modify-frame-parameters(#<frame Emacs 0x11571e7d0> ((parent-frame .
 > #<frame *Warnings* 0x10982e5b0>)))
 >    set-frame-parameter(#<frame Emacs 0x11571e7d0> parent-frame #<frame
 > *Warnings* 0x10982e5b0>)
 >    frameset--restore-frame(((minibuffer . #<window 4 on  *Minibuf-0*>)
[...]
 > (frameset--parent-frame .
 > "8810-6104-369C-7DEE") (frameset--mini nil . "8810-6104-369C-7DEE")

`frameset--restore-frame' has this

     (let* ((frame-id (frame-parameter frame 'frameset--parent-frame))
            (parent-frame
             (and frame-id (frameset-frame-with-id frame-id))))
       (when (frame-live-p parent-frame)
         (set-frame-parameter frame 'parent-frame parent-frame)))

and x_set_parent_frame has

   if (!NILP (new_value)
       && (!FRAMEP (new_value)
	  || !FRAME_LIVE_P (p = XFRAME (new_value))
	  || !FRAME_X_P (p)))
     {
       store_frame_param (f, Qparent_frame, old_value);
       error ("Invalid specification of `parent-frame'");

When you put a breakpoint at the last line I suppose it's the
FRAME_X_P (p) call that failed.  Can you confirm that?

If so, we would not have a window system window for the parent frame
yet and we might have to wait "somehow" until it has been created.
Too bad.

It might be interesting to find out whether `frameset--mini' has the
same problem and, if not, why.  After all the minibuffer frame is the
same as the parent frame.

martin