From: Ergus <spacibba@aol.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: rudalics@gmx.at, emacs-devel@gnu.org
Subject: Re: Question about display engine
Date: Sun, 13 Oct 2019 17:40:52 +0200 [thread overview]
Message-ID: <20191013154052.yzluijtwvf2ppvks@Ergus> (raw)
In-Reply-To: <83mue5kmfx.fsf@gnu.org>
Hi Eli:
On Sun, Oct 13, 2019 at 12:46:10PM +0300, Eli Zaretskii wrote:
>> Date: Sun, 13 Oct 2019 00:23:05 +0200
>> From: Ergus <spacibba@aol.com>
>>
>> >I don't understand why would we want to add a call to handle_face_prop
>> >there.
>> >
>>
>> The call there is to emulate the part in our branch that produced the
>> issue. And isolate the source of the problem, independently of all the
>> other changes.
>>
>> Remember we modified handle_face_prop to be called here with the extra
>> parameter to filter.
>
>But handle_face_prop modifies some members of its IT argument, whereas
>the function called from extend_face_to_end_of_line (face_at_pos)
>should not do that, it should just return the face ID to use.
>
>I now see that face_at_pos modifies it->start_of_box_run_p and
>it->face_box_p. This is wrong, you should do that outside of
>face_at_pos, in handle_face_prop itself. Maybe this is the reason for
>the infloop? If extend_face_to_end_of_line needs to manipulate these
>members (does it?), it needs to save and restore the old values.
>
Fixed now, but that's not the solution for the issue.
>> >Can you tell where it loops? That is, describe the sequence of calls
>> >and the return values for a single iteration through the loop?
>>
>> It is a very long loop it jumps here and there in the code it is very
>> difficult to explain. But basically it stays going and coming in
>> display_line for ever.
>
>You don't have to explain it, just show me one iteration through the
>loop as you step through the code in GDB.
>
In GDB I have this bt:
#0 0x000055cb1453ac98 in redisplay_windows (window=0x55cb15e3bfb5) at ../../src/xdisp.c:16126
#1 0x000055cb1453ac6d in redisplay_windows (window=0x55cb163ffc55) at ../../src/xdisp.c:16120
#2 0x000055cb1455b35d in redisplay_internal () at ../../src/xdisp.c:15596
#3 0x000055cb145fff3f in read_char (commandflag=1, map=0x55cb16838f93, prev_event=0x0, used_mouse_menu=0x7ffc1a89f4eb, end_time=0x0) at ../../src/keyboard.c:2473
#4 0x000055cb1460278a in read_key_sequence
(keybuf=<optimized out>, prompt=0x0, dont_downcase_last=<optimized out>, can_return_switch_frame=true, fix_current_buffer=true, prevent_redisplay=<optimized out>)
at ../../src/keyboard.c:9527
#5 0x000055cb14603e2c in command_loop_1 () at ../../src/lisp.h:1032
#6 0x000055cb1466af87 in internal_condition_case
(bfun=bfun@entry=0x55cb14603c30 <command_loop_1>, handlers=handlers@entry=0x90, hfun=hfun@entry=0x55cb145fadc0 <cmd_error>) at ../../src/eval.c:1355
#7 0x000055cb145f5b94 in command_loop_2 (ignore=ignore@entry=0x0) at ../../src/lisp.h:1032
#8 0x000055cb1466aee1 in internal_catch (tag=tag@entry=0xd4a0, func=func@entry=0x55cb145f5b70 <command_loop_2>, arg=arg@entry=0x0) at ../../src/eval.c:1116
#9 0x000055cb145f5b3b in command_loop () at ../../src/lisp.h:1032
#10 0x000055cb145fa9d6 in recursive_edit_1 () at ../../src/keyboard.c:714
#11 0x000055cb145fad02 in Frecursive_edit () at ../../src/keyboard.c:786
#12 0x000055cb1451c957 in main (argc=18, argv=<optimized out>) at ../../src/emacs.c:2055
After some other tests I just did; I found that:
#0 seems to be the root of the loop. redisplay_windows never ends (inf
loop) and I can't understand why. But at least this explains why in gui
it works but not in tui, because there is the WINDOWP test.
What I can't understand is how the code can be in #1 that should always
filtered by the WINDOWP condition in tui right?
In any case the inf loop is there, but the recursions levels does not
grow... so after the first time it enters in #1, it goes in the other
branch if the if.
On the other hand I don't understand how is this related with the call
of face_at_pos in the extend_face_to_end_of_line. Any idea?
>> Maybe you look at it and you find the issue in 5 seconds, but there
>> is still too much I ignore to get it.
>
>Unlikely. And it is not wise to lose all the information you have
>already collected about this problem, it could help me quite a lot.
>At the very least please show a backtrace from inside the infloop, and
>tell whether we are iterating over a buffer or a string, and if the
>latter, what kind of string is that (overlay string, display string?).
>
>> Magit is available in melpa. Installing and using it is trivial.
>
>I don't need to install it, I just need to load it.
>
Then the command I send before should be enough.
>> Maybe Martin have something to say about this?
>
>You didn't CC Martin on this message.
My bad
next parent reply other threads:[~2019-10-13 15:40 UTC|newest]
Thread overview: 183+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20191012222305.jpjinkd5y2lz6xiv@Ergus>
[not found] ` <83mue5kmfx.fsf@gnu.org>
2019-10-13 15:40 ` Ergus [this message]
2019-10-13 16:06 ` Question about display engine Eli Zaretskii
2019-10-13 16:44 ` Ergus
2019-10-13 17:04 ` Eli Zaretskii
2019-10-13 18:11 ` Ergus
2019-10-13 18:25 ` Ergus
2019-10-13 18:53 ` Eli Zaretskii
2019-10-13 19:38 ` Ergus
2019-10-13 21:01 ` Eli Zaretskii
2019-10-13 22:27 ` Ergus
2019-10-14 8:26 ` Eli Zaretskii
2019-10-20 22:20 ` Ergus
2019-10-21 6:38 ` Eli Zaretskii
2019-10-13 19:41 ` Ergus
2019-10-13 16:11 ` Eli Zaretskii
[not found] <318675867.1913640.1567711569517.ref@mail.yahoo.com>
2019-09-05 19:26 ` Ergus
2019-09-06 8:22 ` martin rudalics
2019-09-06 9:31 ` Ergus
2019-09-07 6:52 ` martin rudalics
2019-09-07 7:37 ` Eli Zaretskii
2019-09-07 7:55 ` Eli Zaretskii
2019-09-08 0:51 ` Ergus via Emacs development discussions.
2019-09-08 8:40 ` martin rudalics
2019-09-08 12:53 ` Ergus
2019-09-09 7:39 ` martin rudalics
2019-09-09 13:56 ` Ergus
2019-09-09 16:00 ` Eli Zaretskii
2019-09-09 17:08 ` Ergus
2019-09-09 18:08 ` Eli Zaretskii
2019-09-09 19:29 ` Ergus
2019-09-10 2:27 ` Eli Zaretskii
2019-09-12 3:37 ` Ergus
2019-09-13 8:50 ` Eli Zaretskii
2019-09-08 17:51 ` Eli Zaretskii
2019-09-08 18:23 ` Ergus
2019-09-14 20:42 ` Ergus
2019-09-15 8:25 ` martin rudalics
2019-09-15 11:26 ` Ergus
2019-09-15 12:22 ` martin rudalics
2019-09-15 14:28 ` Stefan Monnier
2019-09-16 9:05 ` martin rudalics
2019-09-15 15:32 ` Eli Zaretskii
2019-09-15 21:42 ` Ergus
2019-09-17 2:17 ` Ergus
2019-09-17 9:48 ` Eli Zaretskii
2019-09-21 8:20 ` Eli Zaretskii
2019-09-21 13:57 ` Ergus
2019-09-21 21:55 ` Ergus
2019-09-26 16:32 ` Ergus
2019-09-28 10:35 ` Eli Zaretskii
2019-09-29 10:30 ` Ergus
2019-09-29 10:57 ` Eli Zaretskii
2019-10-07 15:40 ` Ergus
2019-10-09 9:02 ` Eli Zaretskii
2019-10-12 18:16 ` Ergus
2019-10-12 18:29 ` Eli Zaretskii
2019-09-06 8:55 ` Eli Zaretskii
2019-09-06 10:30 ` Ergus
2019-09-06 13:28 ` Eli Zaretskii
2019-09-06 16:34 ` Ergus
2019-09-06 18:12 ` Eli Zaretskii
2019-09-07 2:35 ` Ergus
2019-09-07 6:41 ` Eli Zaretskii
2019-08-27 16:01 Keith David Bershatsky
-- strict thread matches above, loose matches on Subject: below --
2019-08-07 0:54 Ergus
2019-08-07 15:01 ` Eli Zaretskii
2019-08-07 15:32 ` Ergus
2019-08-07 15:45 ` Eli Zaretskii
2019-08-07 15:57 ` Ergus
2019-08-07 16:12 ` Eli Zaretskii
2019-08-07 16:25 ` martin rudalics
2019-08-07 16:41 ` Eli Zaretskii
2019-08-08 7:25 ` martin rudalics
2019-08-08 8:38 ` Ergus
2019-08-08 8:45 ` martin rudalics
2019-08-08 9:29 ` Ergus
2019-08-08 13:05 ` martin rudalics
2019-08-08 13:59 ` Eli Zaretskii
2019-08-08 16:43 ` Ergus
2019-08-08 17:50 ` Eli Zaretskii
2019-08-08 22:37 ` Ergus
2019-08-09 6:28 ` Eli Zaretskii
2019-08-09 9:08 ` Ergus
2019-08-09 9:40 ` Eli Zaretskii
2019-08-09 11:31 ` Ergus
2019-08-09 14:04 ` Eli Zaretskii
2019-08-09 15:09 ` Ergus
2019-08-09 8:59 ` martin rudalics
2019-08-09 9:31 ` Ergus
2019-08-09 9:38 ` Ergus
2019-08-10 11:42 ` Eli Zaretskii
2019-08-11 8:14 ` martin rudalics
2019-08-09 8:59 ` martin rudalics
2019-08-08 14:50 ` Ergus
2019-08-09 8:59 ` martin rudalics
2019-08-10 11:30 ` Eli Zaretskii
2019-08-11 8:14 ` martin rudalics
2019-08-11 14:13 ` Eli Zaretskii
2019-08-12 8:59 ` martin rudalics
2019-08-12 15:29 ` Eli Zaretskii
2019-08-12 22:18 ` Stefan Monnier
2019-08-13 8:17 ` martin rudalics
2019-08-13 15:32 ` Eli Zaretskii
2019-08-13 22:33 ` Stefan Monnier
2019-08-14 8:58 ` martin rudalics
2019-08-13 8:17 ` martin rudalics
2019-08-13 15:31 ` Eli Zaretskii
2019-08-14 8:58 ` martin rudalics
2019-08-14 15:14 ` Eli Zaretskii
2019-08-15 8:13 ` martin rudalics
2019-08-15 15:18 ` Eli Zaretskii
2019-08-16 7:29 ` martin rudalics
2019-08-16 8:34 ` Eli Zaretskii
2019-08-17 8:25 ` martin rudalics
2019-08-19 16:13 ` Ergus
2019-08-19 16:50 ` Eli Zaretskii
2019-08-19 21:30 ` Ergus
2019-08-20 14:09 ` Eli Zaretskii
2019-08-25 10:22 ` Ergus
2019-08-25 10:44 ` Eli Zaretskii
2019-08-26 4:31 ` Ergus
2019-08-26 7:45 ` Eli Zaretskii
2019-08-26 8:18 ` Ergus
2019-08-26 9:49 ` Eli Zaretskii
2019-08-27 22:20 ` Ergus
2019-08-28 8:35 ` martin rudalics
2019-08-28 9:07 ` Eli Zaretskii
2019-08-28 12:19 ` martin rudalics
2019-08-28 16:31 ` Ergus
2019-08-28 17:24 ` Eli Zaretskii
2019-08-28 18:19 ` Ergus
2019-08-29 18:28 ` Eli Zaretskii
2019-08-30 7:02 ` martin rudalics
2019-08-30 7:26 ` Eli Zaretskii
2019-08-30 9:34 ` Ergus
2019-08-29 7:45 ` martin rudalics
2019-08-28 17:21 ` Eli Zaretskii
2019-08-29 7:45 ` martin rudalics
2019-08-29 18:36 ` Eli Zaretskii
2019-08-30 7:03 ` martin rudalics
2019-08-30 8:48 ` Eli Zaretskii
2019-08-31 7:29 ` martin rudalics
2019-08-31 7:57 ` Eli Zaretskii
2019-09-01 8:14 ` martin rudalics
2019-09-01 12:26 ` Ergus
2019-09-02 8:36 ` martin rudalics
2019-09-02 11:05 ` Ergus
2019-09-02 16:18 ` Eli Zaretskii
2019-09-03 5:33 ` Ergus
2019-09-03 8:45 ` martin rudalics
2019-09-03 11:23 ` Ergus
2019-09-03 12:17 ` martin rudalics
2019-09-03 14:56 ` Eli Zaretskii
2019-09-03 5:35 ` Ergus via Emacs development discussions.
2019-09-03 8:45 ` martin rudalics
2019-09-03 14:53 ` Eli Zaretskii
2019-09-03 16:41 ` martin rudalics
2019-09-03 17:31 ` Eli Zaretskii
2019-09-03 18:59 ` martin rudalics
2019-09-04 18:33 ` Ergus
2019-09-04 20:04 ` martin rudalics
2019-09-04 20:19 ` Ergus via Emacs development discussions.
2019-09-05 7:32 ` martin rudalics
2019-09-05 13:54 ` Ergus
2019-09-05 19:31 ` Ergus
[not found] ` <1826922767.1725310.1567682307734@mail.yahoo.com>
2019-09-05 11:18 ` Ergus
2019-08-21 7:37 ` martin rudalics
2019-08-08 17:37 ` Eli Zaretskii
2019-08-09 12:46 ` martin rudalics
2019-08-10 11:25 ` Eli Zaretskii
2019-08-10 23:04 ` Stefan Monnier
2019-08-11 2:43 ` Eli Zaretskii
2019-08-11 8:17 ` martin rudalics
2019-08-11 8:11 ` martin rudalics
2019-08-08 17:38 ` Eli Zaretskii
2019-08-08 8:15 ` Ergus
2019-08-08 8:45 ` martin rudalics
2019-08-08 9:17 ` Ergus
2019-08-08 17:35 ` Eli Zaretskii
2019-08-08 20:37 ` Juri Linkov
2019-08-08 22:24 ` Ergus
2019-08-09 6:42 ` Eli Zaretskii
2019-08-09 17:54 ` Juri Linkov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191013154052.yzluijtwvf2ppvks@Ergus \
--to=spacibba@aol.com \
--cc=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
--cc=rudalics@gmx.at \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.