Subject: bug#33294: xwidget-insert crashes Emacs

From: Robert Pluim <[email-masked]>
Date: Thu, 08 Nov 2018 17:21:45 +0100

Eli Zaretskii <[email-masked]> writes:

> Or maybe it's a problem with type-of?  What does the following
> produce?
>
>   (type-of (make-xwidget 'webkit "*foo*" 320 240))

I think itʼs a problem with type-of

(type-of (make-xwidget 'webkit "*foo*" 320 240 "args"))

=>

Thread 1 "emacs" hit Breakpoint 1, terminate_due_to_signal (sig=6, backtrace_limit=40) at emacs.c:369
369	{
(gdb) bt
#0  0x000000000056e2a6 in terminate_due_to_signal (sig=6, backtrace_limit=40) at emacs.c:369
#1  0x0000000000595f20 in emacs_abort () at sysdep.c:2429
#2  0x00000000005fcd21 in Ftype_of (object=XIL(0x1580e45)) at data.c:278
#3  0x000000000061e04f in eval_sub (form=XIL(0x16a9173)) at eval.c:2324

(gdb) 
#3  0x000000000061e04f in eval_sub (form=XIL(0x16a9173)) at eval.c:2324
2324		      val = (XSUBR (fun)->function.a1 (argvals[0]));
(gdb) pp argvals[0]
[Thread 0x7fff8a990700 (LWP 7812) exited]
[New Thread 0x7fff8a990700 (LWP 7850)]
[New Thread 0x7fff8a18f700 (LWP 7851)]
#<xwidget >
(gdb) p XTYPE(argvals[0])
$1 = Lisp_Vectorlike
(gdb) p PSEUDOVECTOR_TYPE (XVECTOR (argvals[0]))
$2 = PVEC_XWIDGET

And type-of explicitly calls abort for that tag:

        /* "Impossible" cases.  */
	case PVEC_MISC_PTR:
        case PVEC_XWIDGET:
        case PVEC_OTHER:
        case PVEC_XWIDGET_VIEW:
        case PVEC_SUB_CHAR_TABLE:
        case PVEC_FREE: ;
        }
      emacs_abort ();

which Stefan added in 1b424533675341a2090b79a6ffc420ac6b179ce7

Robert