Subject: Re: bug#61667: 29.0.60; Failure to redisplay

From: Dmitry Gutov <[email-masked]>
Date: Wed, 1 Mar 2023 13:15:30 +0200

On 01/03/2023 06:50, Po Lu wrote:
> OK, I have to be 100% sure we're not missing something here.  With
> stderr redirected to a file, and the following instrumentation applied::
> 
> diff --git a/src/xfns.c b/src/xfns.c
> index 9e004f6a678..b4bef7f38fd 100644
> --- a/src/xfns.c
> +++ b/src/xfns.c
> @@ -2232,6 +2232,18 @@ x_set_name_internal (struct frame *f, Lisp_Object name)
>   			 SDATA (encoded_icon_name),
>   			 SBYTES (encoded_icon_name));
>   
> +	long long
> +        current_ust (void)
> +	{
> +	  struct timespec ts;
> +
> +	  clock_gettime (CLOCK_MONOTONIC, &ts);
> +	  return ts.tv_sec * 1000000 + ts.tv_nsec / 1000;
> +	}
> +
> +	fprintf (stderr, "x_set_title: %s, %lld\n",
> +		 SSDATA (name), current_ust ());
> +
>   	if (do_free_icon_value)
>   	  xfree (icon.value);
>   	if (do_free_text_value)
> diff --git a/src/xterm.c b/src/xterm.c
> index 70bcb67d80d..c7ad1bbb722 100644
> --- a/src/xterm.c
> +++ b/src/xterm.c
> @@ -7439,6 +7439,18 @@ show_back_buffer (struct frame *f)
>         swap_info.swap_action = XdbeCopied;
>         XdbeSwapBuffers (FRAME_X_DISPLAY (f), &swap_info, 1);
>   
> +	long long
> +        current_ust (void)
> +	{
> +	  struct timespec ts;
> +
> +	  clock_gettime (CLOCK_MONOTONIC, &ts);
> +	  return ts.tv_sec * 1000000 + ts.tv_nsec / 1000;
> +	}
> +
> +	fprintf (stderr, "show_back_buffer: %lld\n",
> +		 current_ust ());
> +
>   #if defined HAVE_XSYNC && !defined USE_GTK && defined HAVE_CLOCK_GETTIME
>         /* Finish the frame here.  */
>         x_sync_update_finish (f);
> 
> do you see a significant amount of time taken between setting the title
> and swapping buffers?

It seemed more difficult to reproduce with this patch, but still I 
managed to hit that twice over a couple of dozen tries.

Attached are three logs: two when the problem was hit, and one "normal" 
for comparison.