Subject: bug#13864: 24.3.50; emacsclient -t loops when connected to emacs server running in X11

From: [email-masked] (Ashish SHUKLA)
Date: Thu, 07 Mar 2013 00:22:43 +0530

On Wed, 06 Mar 2013 19:07:36 +0200, Eli Zaretskii <[email-masked]> said:
>> From: [email-masked] (Ashish SHUKLA)
>> Cc: [email-masked]
>> Date: Tue, 05 Mar 2013 05:56:40 +0530
>> 
>> I tried r1110803, r110921, r111026, r111253, r111312, and r111607, they were
>> good.  Then, I tried r111818, and it has this.
>> 
>> No problem with Emacs 23.4.

> So this is a recent regression.  Thanks, this narrows down the set of
> culprits quite a bit, but still not enough to see the root cause.

> Could you please attach a debugger to Emacs, after starting the
> server, but before opening the TTY frame with emacsclient, and set a
> breakpoint like this:

>  (gdb) break update_frame_1
>  (gdb) commands
>> p force_p
>> p inhibit_id_p
>> continue
>> end
>  (gdb)

> Then re-create the problem and see whether update_frame_1 is called
> very frequently, and if so, what are the values of the 2 arguments
> printed by the breakpoint commands above.  (I don't know what is your
> level of proficiency with GDB, so let me know if you need more
> detailed instructions.)

> Don't forget to invoke GDB from the src directory, and make sure that
> it reads the .gdbinit file there, and does not reject it due to
> security considerations.

> If update_frame_1 indeed gets called at high frequency when the xterm
> frame flickers, then please do the same when Emacs is started with -nw
> (in which case I understand that there's no flickering), and see if
> there's any difference in the frequency of calls to update_frame_1 and
> in the values of the above 2 arguments.

Output with 'emacs -Q':

#v+
Breakpoint 3, update_frame_1 (f=0x1895d98, force_p=true, inhibit_id_p=false)
    at dispnew.c:4474
4474      struct glyph_matrix *current_matrix = f->current_matrix;
$85 = true
$86 = false

Breakpoint 3, update_frame_1 (f=0x1895d98, force_p=true, inhibit_id_p=false)
    at dispnew.c:4474
4474      struct glyph_matrix *current_matrix = f->current_matrix;
$87 = true
$88 = false

Breakpoint 3, update_frame_1 (f=0x1895d98, force_p=true, inhibit_id_p=false)
    at dispnew.c:4474
4474      struct glyph_matrix *current_matrix = f->current_matrix;
$89 = true
$90 = false
#v-

Output with 'emacs -Q -nw':

#v+
Breakpoint 3, update_frame_1 (f=0x1255c48, force_p=true, inhibit_id_p=false)
    at dispnew.c:4474
4474      struct glyph_matrix *current_matrix = f->current_matrix;
$39 = true
$40 = false

Breakpoint 3, update_frame_1 (f=0x1255c48, force_p=true, inhibit_id_p=false)
    at dispnew.c:4474
4474      struct glyph_matrix *current_matrix = f->current_matrix;
$41 = true
$42 = false

Breakpoint 3, update_frame_1 (f=0x1255c48, force_p=true, inhibit_id_p=false)
    at dispnew.c:4474
4474      struct glyph_matrix *current_matrix = f->current_matrix;
$43 = true
$44 = false
#v-

Output with 'emacs -Q' was more frequent, whereas output with 'emacs -Q -nw'
only printed when I pressed some key into the 'emacsclient' xterm window.

HTH
-- 
Ashish SHUKLA

“I am free, no matter what rules surround me. If I find them tolerable, I
tolerate them; if I find them too obnoxious, I break them. I am free because I
know that I alone am morally responsible for everything I do.” (Robert
A. Heinlein, "The Moon Is a Harsh Mistress", 1966)

Sent from my Emacs