Subject: bug#57207: 29.0.50; Fontification is slow after e7b5912b23 (Improvements to long lines handling)

From: Lars Ingebrigtsen <[email-masked]>
Date: Thu, 18 Aug 2022 15:50:45 +0200

Eli Zaretskii <[email-masked]> writes:

> Can you attach a debugger to this session, and produce a C and Lisp
> backtrace from Fnarrow_to_region and Fwiden when you do the above?

Setting a breakpoint on Fnarrow_to_region doesn't trigger -- the buffer
flips back and forth to [Narrow] anyway.

Fwiden is triggered all the time, but as far as I can see, never in a
relevant code path -- but I've made some progress in determining just
what triggers this behaviour: I need to have a process connection going.
Without processes being forked, the flipping back and forth doesn't
happen.

A couple examples of the calls to Fwiden:

0x0000555555759f8c in Fwiden () at editfns.c:2672
#1  Fwiden () at editfns.c:2659
#2  0x00005555556ff1ed in Ferase_buffer () at buffer.c:2318
#3  0x0000555555655f3d in code_conversion_save
    (with_work_buf=with_work_buf@entry=true, multibyte=<optimized out>)
    at coding.c:7875
#4  0x0000555555656b23 in decode_coding_object
    (coding=coding@entry=0x5555573bedf0, src_object=src_object@entry=XIL(0), from=from@entry=0, from_byte=from_byte@entry=0, to=to@entry=57, to_byte=to_byte@entry=57, dst_object=<optimized out>) at coding.c:8129
#5  0x00005555557b6752 in read_and_dispose_of_process_output
    (coding=0x5555573bedf0, nbytes=57, chars=0x7fffffffbe90 "PING 192.168.12.94 (192.168.12.94) 56(84) bytes of data.\n", p=<optimized out>) at process.c:6253
#6  read_process_output
    (proc=proc@entry=XIL(0x5555579e538d), channel=channel@entry=17)
    at process.c:6205
#7  0x00005555557bde76 in wait_reading_process_output
    (time_limit=time_limit@entry=30, nsecs=nsecs@entry=0, read_kbd=read_kbd@entry=-1, do_display=do_display@entry=true, wait_for_cell=wait_for_cell@entry=XIL(0), wait_proc=wait_proc@entry=0x0, just_wait_proc=<optimized out>)
    at process.c:5889
#8  0x00005555555b8694 in sit_for

Thread 1 "emacs" hit Breakpoint 4, Fwiden () at editfns.c:2669
2669	{
(gdb) bt
#0  Fwiden () at editfns.c:2669
#1  0x00005555557b160e in exec_byte_code
    (fun=<optimized out>, args_template=<optimized out>, nargs=<optimized out>, args=<optimized out>) at bytecode.c:1489
#2  0x0000555555768ee3 in Ffuncall (nargs=1, args=0x7ffff092e050)
    at eval.c:3014
#3  0x000055555576abb8 in Fapply (nargs=2, args=0x7ffff092e050) at eval.c:2638
#4  0x00005555557b0c03 in exec_byte_code
    (fun=<optimized out>, args_template=<optimized out>, nargs=<optimized out>, args=<optimized out>) at bytecode.c:809
#5  0x0000555555768ee3 in Ffuncall
    (nargs=nargs@entry=2, args=args@entry=0x7fffffffcd10) at eval.c:3014
#6  0x00005555556e2dfe in call1 (arg1=XIL(0x5555572b14f5), fn=XIL(0xf4e0))
    at /home/larsi/src/emacs/trunk/src/lisp.h:3239
#7  timer_check_2 (idle_timers=<optimized out>, timers=<optimized out>)
    at keyboard.c:4697
#8  timer_check () at keyboard.c:4763
#9  0x00005555556e315d in readable_events (flags=flags@entry=1)
    at keyboard.c:3540
#10 0x00005555556e3328 in get_input_pending (flags=flags@entry=1)
    at keyboard.c:7338
#11 0x00005555556e33b1 in swallow_events (do_display=do_display@entry=true)
    at keyboard.c:4499

(gdb) xbacktrace 
"jit-lock-context-fontify" (0xf092e0a8)
0xf1ff0028 PVEC_COMPILED
"apply" (0xf092e050)
"timer-event-handler" (0xffffcd18)