emacs-devel
[Top][All Lists]
Advanced

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

Re: Question about display engine


From: Ergus
Subject: Re: Question about display engine
Date: Sat, 12 Oct 2019 20:16:18 +0200
User-agent: NeoMutt/20180716

Hi Eli:

I haven't merged this yet because 2 days ago I found that there is a bug
in the code very difficult to locate for me and I have not understand
what's going on.

The problem is that emacs just freezes in the magit-log buffer in
tui. (M-x magit-log-all for example.)
This seems to be a weird issue because in gui it doesn't happen only in
the terminal interface (which should be agnostic to magit). And I have
only observed it in magit-log. And if this happens for magit-log I am
wondering that there should be other possible situations that produce
the same problem.

After some tests and moving in the history of my changes I got that the
issue is the call to handle_face_prop in extend_face_to_end_of_line.

Trying the next in current master I got the same issue:
// ===============================

diff --git a/src/xdisp.c b/src/xdisp.c
index 893ce9269c..af50dd0bcd 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -21587,6 +21587,7 @@ extend_face_to_end_of_line (struct it *it)
          || WINDOW_RIGHT_MARGIN_WIDTH (it->w) > 0))
    return;

+  handle_face_prop (it);
  /* Face extension extends the background and box of IT->face_id
     to the end of the line.  If the background equals the background
     of the frame, we don't have to do anything.  */

// ===============================

In gdb I saee that it goes in a very complex inf loop within the display
engine functions and emacs becomes completely unresponsive (No C-g or
ESC ESC ESC) the only solution is to kill it from outside.

Magit provides a way to execute emacs loading only magit
(magit-emacs-Q-command), so it is nothing in my config... but something
probably tricky used in magit-log that exposes the issue.

Could you give a look please?




reply via email to

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