emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: master 5ee43ba0df causing display hangs?


From: Eli Zaretskii
Subject: Re: master 5ee43ba0df causing display hangs?
Date: Sun, 08 Dec 2019 17:55:22 +0200

> From: Yuri D'Elia <address@hidden>
> Cc: address@hidden
> Date: Sun, 08 Dec 2019 00:03:35 +0100
> 
> > memcpy (inherited_attrs, attrs, LFACE_VECTOR_SIZE * sizeof (attrs[0]));
> > while (UNSPECIFIEDP (attr_val)
> >        && !NILP (inherited_attrs[LFACE_INHERIT_INDEX])
> >        && !UNSPECIFIEDP (inherited_attrs[LFACE_INHERIT_INDEX]))
> >   {
> >     Lisp_Object parent_face = inherited_attrs[LFACE_INHERIT_INDEX];
> >     bool ok;
> >     if (CONSP (parent_face))
> >       {
> >         Lisp_Object tail;
> >         for (tail = parent_face; !NILP (tail); tail = XCDR (tail))
> >           {
> >             ok = get_lface_attributes (w, f, XCAR (tail), inherited_attrs,
> >                                        false, named_merge_points);
> >             if (!ok)
> >               break;
> 
> While attaching with gdb I noticed this is where it gets stuck in a loop.
> get_lface_attributes returns !ok, break stops only the for loop, but
> since nothing else changed for the upper "while" it goes on forever.
> 
> Looking at few lines below, it looks like this needs to break out of the
> while() as well?

Probably.  But I'd like to understand how come we get that 'false'
return value, to make sure there isn't a larger problem here.  Could
you please look around in the debugger and tell me what face is being
processed in that case and what is its Lisp definition?  Also, I'd
like to see a C and Lisp backtraces from the infloop.  Let me know if
you need help with GDB commands to do that.

Thanks!



reply via email to

[Prev in Thread] Current Thread [Next in Thread]